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

时间:2015-01-26 09:35:39

标签: transactions garbage-collection smartcard javacard

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

JCSystem.requestObjectDeletion()

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

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

在一次交易中“通常”处理垃圾收集吗?

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

你对恩智浦的卡片有过类似的经历吗?

修改

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

    ATR:3BFB9600008131FE454F4450204D41502053414D3E

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

1 个答案:

答案 0 :(得分:5)

我认为这可能是一个实施错误。通常,永远不需要在智能卡上使用垃圾收集。

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

垃圾收集通常需要很长时间才能正常使用。也许这就是为什么Java Card或底层系统库的程序员不希望它发生在安全环境之外的原因。