Java Card 2.2.2:临时RSA公钥为瞬态

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似乎没有指定瞬态内存的选项; 我也看不见

是否会将我的RSA公钥的所有更改和使用包括在内beginTransaction()abortTransaction()实现我的目标?

vlp*_*vlp 7

我一直在处理完全相同的问题,不得不使用持久性内存和磨损均衡(这是有效的).

甚至与beginTransaction()/ 有相同的想法abortTransaction(),但卡制造商告诉它这不起作用(他们说这会使EEPROM寿命更糟).因人而异.

一些评论:

  • 对于给定的用例(这令我感到惊讶),性能已经足够了.

  • 可以非常好地估计卡的生存期(假设你知道持久内存有多少重写周期,它的块大小,不同公钥使用的频率和耗损均衡开销).

  • 考虑将两者RSAPublicKeyCipher物体一起调平.

  • 尽可能多地使用对象池内存.

可能有一些供应商特定的API允许RSA计算(在我们的例子中没有这种可能性)

祝好运!