EEPROM损坏的症状

时间:2015-06-04 06:28:05

标签: smartcard corruption javacard eeprom

假设Java Card小程序中存在错误:临时字节数组存储在EEPROM而不是RAM中。此外,假设这个字节数组被每个APDU覆盖。

此错误迟早会损坏卡片。

我们可以期待什么症状?数组中的值不正确,没有任何明确的警告或错误?访问此数组时抛出一些异常?小程序无法选择?整张卡完全没有反应?

卡是否会被损坏"一次又一次永远",或者这些故障是否会越来越频繁发生?

在我的实验(J2E145)中,在5 000 000个APDU之后出现了第一次失败,并且症状是该卡根本没有发送R-APDU并且刚刚死亡。然而,下一个APDU再次正常,然后10000个中的大约1个APDU失败(频率增加),最后在5 100 000个APDU之后卡终止通信。

是否有任何标准说明EEPROM损坏会发生什么? (我一直在找,但我找不到。)

我知道这个问题很广泛,可能取决于特定的芯片(我特别感兴趣的是NXP芯片),但我认为你的评论,答案和经验可以帮助许多Java Card开发人员,他们在代码中发现了一个错误部署后。

2 个答案:

答案 0 :(得分:3)

这是来自原生操作系统的图片:当向非易失性存储器写入新值时,硬件例程会自行检查,是否可以正确写入值并返回错误否则。这被转换为SW1 / SW2 65 81.受影响的文件或对象被标记为已损坏,并且将来尝试访问它将被彻底拒绝。如果它对应用程序至关重要,则将无法继续工作。

如果我没记错的话,我们的硬件(非NXP)甚至会发出预警,表示虽然这次可以正确写入值,但存储单元即将达到极限。

答案 1 :(得分:3)

我认为找到一些非NDA信息的最佳方法是针对特定平台的Common Criteria安全目标。

恩智浦硬件平台示例:NXP Secure Smart Card Controllers P5Cx128V0A/P5Cx145V0A, MSO (BSI-DSZ-CC-0645)

  • 从TOE概述:

      

    非易失性EEPROM [...]包含高可靠性单元,可确保数据完整性。 [...]安全功能可保护所有存储器的内容。

  • 来自安全功能SF.OPC:

      

    单故障注入检测电路强制例外。如果是次要配置选项" Inverse EEPROM Error Correction"启用[...]检测故障注入错误的概率增加,并且错误纠正逻辑在检测到错误时引发异常。

  • 来自安全功能SF.PHY:

      

    EEPROM能够纠正每个字节内的1位错误。 [...] EEPROM在没有用户交互的情况下自动纠正错误[...]

因此硬件平台能够检测EEPROM单元故障,甚至可以自动纠正每个字节内的1位错误。对于所有其他检测到的错误,它将引发可由软件处理的异常。

硬件平台(没有OS / JCRE)。因此,让我们看看JCOP的安全目标告诉我们什么。我选择了NXP J3A128 and J3A095 Secure Smart Card Controller Rev. 3 (BSI-DSZ-CC-0731)

  • 来自安全功能SF.Audit:

      

    TOE的以下反应可能基于可能违反TSP的指示:

         
        
    • 抛出异常
    •   
    • 终止卡(生命周期状态:已终止)
    •   
    • 重新初始化Java卡系统(热重置)
    •   
    • [...] EEPROM能够纠正每个字节内的1位错误。 [...] EEPROM无需用户交互[...]
    • 即可自动纠正错误   
    • 锁定卡片会话(只需停止处理;通过重置会话/卡撕裂逃生)
    •   
         

    基于这些类型的响应/反应,上面列出的事件将具有以下映射:

         
        
    • 通过读/写操作和一致性/完整性检查中的异常审核EEPROM故障:锁定卡会话
    •   
    • 启动时的自我测试机制:锁定卡会话
    •   
    • 校验对象的损坏:锁卡会话
    •   
  • 来自安全功能SF.SecureManagement:

      

    TSF在初始启动期间(每次上电时)运行一系列自检,以演示TSF的正确操作,验证TSF数据的完整性,并验证存储的TSF可执行代码的完整性。 包括检查EEPROM完整性。如果检测到错误,TOE将进入安全状态(锁定卡会话

         

    TSF监控用户数据D.APP_CODE, D.APP_I_DATA ,D.PIN,D.APP_KEYs 表示完整性错误。如果发生错误,TSF 将保持安全状态(锁定卡会话)

所以这个软件平台(再次)能够检测EEPROM单元故障,甚至可以自动纠正每个字节内的1位错误。对于所有其他检测到的 EEPROM错误,它将"锁定卡会话",这意味着它只是停止处理并执行重置。这似乎与你的观察结果一致" 症状是该卡根本没有发送R-APDU并且刚刚死亡"。