fgr*_*ieu 5 smartcard javacard
我正在设计一个Java Card(2.2.2因此经典)applet,它将在每次使用时接收RSA公钥(使用与问题无关的方式进行验证),然后使用该RSA公钥来验证RSA签名.
出于性能和设备寿命的原因,如何将RSA公钥保存在RAM中(而不是将其写入EEPROM/Flash)?
我的问题是,在javacard.security.KeyBuilderJC 2.2.2中,buildKey(byte keyType, short keyLength, boolean keyEncryption)API似乎没有指定瞬态内存的选项; 我也看不见
keyType结合TYPE_RSA_PUBLIC和传递TYPE_DES_TRANSIENT_DESELECT;TYPE_RSA_PRIVATE_TRANSIENT_DESELECT哪个可以被滥用到公钥中(在没有测试d大小的平台上).buildKey(byte algorithmicKeyType, byte keyMemoryType, short keyLength, boolean keyEncryption)同一个keyMemoryType参数,这也是Java卡经典3的新颖性.是否会将我的RSA公钥的所有更改和使用包括在内beginTransaction()并abortTransaction()实现我的目标?
我一直在处理完全相同的问题,不得不使用持久性内存和磨损均衡(这是有效的).
甚至与beginTransaction()/ 有相同的想法abortTransaction(),但卡制造商告诉它这不起作用(他们说这会使EEPROM寿命更糟).因人而异.
一些评论:
对于给定的用例(这令我感到惊讶),性能已经足够了.
可以非常好地估计卡的生存期(假设你知道持久内存有多少重写周期,它的块大小,不同公钥使用的频率和耗损均衡开销).
考虑将两者RSAPublicKey和Cipher物体一起调平.
尽可能多地使用对象池内存.
可能有一些供应商特定的API允许RSA计算(在我们的例子中没有这种可能性)
祝好运!