Transactions Javacard-垃圾收集过程中的电源损耗

Transactions Javacard-垃圾收集过程中的电源损耗,transactions,garbage-collection,smartcard,javacard,Transactions,Garbage Collection,Smartcard,Javacard,我注意到我的智能卡上有一些非常奇怪的行为(NXP J2E145、J3A081、带有万能5121读卡器的J3C145):调用JavaCard方法后立即断电 JCSystem.requestObjectDeletion() 可能损坏卡:在大约10%的断电后,ATR命令非常慢(1000毫秒),我对任何其他APDU(小程序选择、卡管理器身份验证等)都没有响应 我知道RequestObjectDelete()的行为取决于特定于供应商的实现,所以我的问题非常广泛和开放 垃圾收集是否“通常”在单个事务中处理

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

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

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

垃圾收集是否“通常”在单个事务中处理

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

您是否有过类似的经验

编辑:

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

    ATR:3BFB9600008131FE454F4450204D41502053414D3E

    自动标签阅读器: T=1
    jcshell:终端出现未知问题。 最后一个终端错误:由于I/O设备错误,无法执行请求


    • 我认为这可能是一个实现错误。一般来说,智能卡上不需要也不使用垃圾收集

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


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

      您是否检查了boolean JCSystem.isObjectDeletionSupported()?实际上我没有检查,但垃圾收集器正常工作,并且不会引发任何异常。在调用RequestObjectDelete(读卡器上的指示灯闪烁)约5秒钟后,该卡正在执行某些操作,EEPROM已清理(我已检查)。唯一的问题是当我在这个过程中间从读卡器拉卡时。有时,这张卡好像坏了。亲爱的沃伊塔,能告诉我你的电子邮件地址吗?我也在研究NXP智能卡。我相信你能帮我很多忙,但我不能回答我的问题,因为有些问题是离题的。我可以请你与我们分享你上传到卡上的程序和你在计算机上运行的程序吗?对不起,我的小程序非常复杂,它是商业安全项目的关键部分,所以我真的不能和你分享任何代码。如果您有任何问题,请使用堆栈溢出。在小程序的整个生命周期中,我只调用垃圾收集器一次。这对我来说不是关键问题,我可以很容易地避免它。另一方面,我认为所有提供的功能都应该是安全和有效的。智能卡首先被用作安全代币。如果NXP卡中存在这样一个bug,那么必须在其所有文档的首页用巨大的红色字母进行描述。没人知道,在如此不成功的垃圾收集之后,EEPROM发生了什么事!我问过NXP,我会在得到答案的那一刻发布他们的答案。谢谢你的回答,保罗@他们真的证实了吗?因此,如果可能断电,我们不能调用
      requestObjectDelete()
      。@Abraham由于保密协议的原因,我不能告诉你任何细节,对不起。然而,我接受了Paul的回答,因此他们很可能证实了这一点:-)对于某些生产环境,甚至需要很长时间:-也就是说,如果有适合它的地方,那么它应该在个性化之后。即使如此,你最好在将卡发送到现场之前重置并引导它…@paul bastian你对书籍或网站有什么建议,可以参考小程序设计,这使得垃圾收集变得不必要?我在哪里可以知道该做什么和不该做什么?