Javacard - 垃圾收集过程中的电力损失

voj*_*jta 6 garbage-collection transactions smartcard javacard

我注意到我的智能卡上有一些非常奇怪的行为(NXP J2E145,J3A081,带有Omnikey 5121读卡器的J3C145):在调用JavaCard方法后立即断电

JCSystem.requestObjectDeletion()
Run Code Online (Sandbox Code Playgroud)

可能会损坏卡:在大约10%的这种断电后,ATR命令非常慢(1000毫秒),我对任何其他APDU(小程序选择,卡管理器认证等)都没有响应.

我知道requestObjectDeletion()的行为取决于供应商的具体实现,所以我的问题非常广泛和开放......

垃圾收集是否"通常"在一次交易中处理?

是否有任何"官方"建议不要在可能的断电情况下调用requestObjectDeletion()?

恩智浦有没有类似的卡片经验?

编辑:

  • 我所有智能卡上的JCSystem.isObjectDeletionSupported()== true.
  • 当尝试连接到损坏的卡的卡管理器小程序时,Eclipse IDE中的JCOP shell报告:

    ATR:3BFB9600008131FE454F4450204D41502053414D3E

    ATR:T = 1
    jcshell:终端未知问题.最后一个终端错误:由于I/O设备错误,无法执行请求.

Pau*_*ian 5

我认为这可能是实现错误。通常,从不需要垃圾收集,也不会在智能卡上使用垃圾收集。

通过良好的applet设计,在任何情况下都应避免垃圾回收。这样,您就永远不会遇到内存问题。小程序通常在其生命周期内仅安装一次,并且在卡的整个生命周期内都应该可用。

对于正常使用案例,垃圾回收通常花费太长时间。也许这就是为什么Java Card或底层系统库的程序员不希望它在安全环境之外发生的原因。

  • @Abraham由于NDA,我无法告诉您任何细节,对不起。但是,我接受了保罗的回答,因此他们很有可能证实了这一点:-) (2认同)