- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设 Java Card 小程序中存在错误:临时字节数组存储在 EEPROM 而不是 RAM 中。此外,假设这个字节数组被每个 APDU 覆盖。
这个错误迟早会损坏卡。
我们可能会出现什么症状?数组中的值不正确而没有任何明确的警告或错误?访问这个数组时抛出一些异常?小程序无法选择?整卡完全没 react ?
卡应该“一劳永逸”地损坏,还是这些故障会越来越频繁地发生?
在我的实验 (J2E145) 中,在 5 000 000 个 APDU 之后出现了第一次故障,其症状是卡根本没有发送 R-APDU 而只是挂掉了。然而,下一个 APDU 再次正常,然后大约 10000 个 APDU 中有 1 个失败(频率增加),最后在 5 100 000 个 APDU 之后,卡永远停止通信。
是否有任何标准规定在 EEPROM 损坏的情况下应该发生什么? (我一直在寻找它,但我没有找到。)
我知道这个问题很广泛,可能取决于特定的芯片(我对 NXP 芯片特别感兴趣),但我认为您的意见、答案和经验可以帮助许多 Java Card 开发人员,他们在他们的代码中发现了一个错误部署后。
最佳答案
我想找到一些非 NDA 信息的最佳方法是针对特定平台的通用标准安全目标。
NXP 硬件平台示例:NXP Secure Smart Card Controllers P5Cx128V0A/P5Cx145V0A, MSO (BSI-DSZ-CC-0645)
来自 TOE 概述:
The non-volatile EEPROM [...] contains high reliability cells, which guarantee data integrity. [...] Security functionality protects the contents of all memories.
来自安全功能 SF.OPC:
An exception is forced by the [...] single fault injection detection circuitry. In case minor configuration option "Inverse EEPROM Error Correction" is enabled [...] the probability to detect fault injection errors increases and the error correction logic raises an exception when detecting an error.
来自安全功能 SF.PHY:
The EEPROM is able to correct a 1-bit error within each byte. [...] The EEPROM corrects errors automatically without user interaction [...]
因此,这个硬件平台能够检测 EEPROM 单元故障,甚至可以自动纠正每个字节中的 1 位错误。对于所有其他检测到的错误,它将引发可由软件处理的异常。
那是针对硬件平台的(没有操作系统/JCRE)。那么让我们看看 JCOP 的安全目标告诉我们什么。我选择了NXP J3A128 and J3A095 Secure Smart Card Controller Rev. 3 (BSI-DSZ-CC-0731) .
来自安全功能 SF.Audit:
The following reactions by the TOE based on indication of a potential violation of the TSP are possible:
- Throw an exception
- Terminate the card (Life cycle state: TERMINATED)
- Reinitialize the Java Card System (warm reset)
- [...] The EEPROM is able to correct a 1-bit error within each byte. [...] The EEPROM corrects errors automatically without user interaction [...]
- Lock the card session (simply stops processing; escape with reset the session/Card tearing)
Based on these types of response/reaction the events listed above will have the following mapping:
- EEPROM failure audited through exceptions in the read/write operations and consistency/integrity check: Lock card session
- self test mechanism on start-up: Lock card session
- Corruption of check-summed objects: Lock card session
来自安全功能 SF.SecureManagement:
The TSF run a suite of self-tests during initial start-up (at each power on) to demonstrate the correct operation of the TSF, to verify the integrity of TSF data, and to verify the integrity of stored TSF executable code. This includes checking the EEPROM integrity. If an error is detected, the TOE enters into a secure state (lock card session)
The TSF monitors user data D.APP_CODE, D.APP_I_DATA, D.PIN, D.APP_KEYs for integrity errors. If an error occurs, the TSF maintain a secure state (lock card session)
所以这个软件平台(再次)能够检测 EEPROM 单元故障,甚至可以自动纠正每个字节中的 1 位错误。对于所有其他检测到 EEPROM 错误,它将“锁定卡 session ”,这意味着它只是停止处理并执行重置。这似乎符合您的观察“症状是卡根本没有发送 R-APDU 就死了”。
关于smartcard - EEPROM损坏的症状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636485/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我目前正在尝试制作一个非常简单的应用程序,它会根据一天中的时间问候。我的代码是: open System let read() = Console.Read() let readLine() = Co
我已经运行Elasticsearch服务很长时间了,但是突然遇到了以下情况 由以下原因导致:org.elasticsearch.index.translog.TranslogCorruptedExce
我对执行以下操作的 php 重定向脚本有一个奇怪的问题: 在用户的浏览器中植入 Cookie,或者读取现有 Cookie(如果有)。 将用户重定向到另一个网址(重定向的网址是原始网址中的参数,例如 h
我正在使用 iText 7.0.0(Java 风格),似乎表格单元格 HorizontalAlignment 被忽略,因为 CENTER 和 RIGHT 都不起作用。你能重现这个吗? see th
简而言之: 我有一个可以从多个线程访问的计数器变量。尽管我已经实现了多线程读/写保护,但该变量似乎仍然以不一致的方式同时写入,导致计数器结果不正确。 深入杂草: 我使用的“for 循环”会在后台触发大
我有一个 REST 项目,在访问控制服务类中保存用户的ArrayList。一切都工作正常,直到 REST Web 服务突然抛出 java.util.NoSuchElementException。单步查
已关闭。此问题不符合Stack Overflow guidelines 。它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
当我刷新页面时,我无法显示 voteUp/Down,因为如果我执行 voteUp/Down(+1 或 -1) 并刷新页面,这会再次返回 voteUp/Down (0)。过去我使用 JSON,但社区推荐
我正在为离散时间 CPU 调度模拟器编写代码。它只是生成流程并相应地安排它们。我目前正在实现 FCFS 计划。我理解离散时间模拟器的本质,但我在用 C++ 实现时遇到了麻烦。 问题出现在handleN
尝试使用 yum 部署包时出现错误: 2016-07-07 14:14:31,296 - ERROR - error: rpmdb: BDB0113 Thread/process 6723/1
我有一个简单的同步队列 template class SynchronisedQueue { public: void Enqueue(const T& d
我正在使用 hadoop 0.20.append 和 hbase 0.90.0。我将少量数据上传到 Hbase,然后出于评估目的杀死了 HMaster 和 Namenode。在此之后,我向 Hbase
我使用 symfony 框架 1.4 创建了一个网站。我正在使用 sfguard 进行身份验证。 现在,这在 WAMP (windows) 上运行良好。我可以在不同的浏览器上登录多个帐户并使用该网站。
目前我已经实现了 HashMap private static Map cached = new HashMap(); 和 Item 是一个具有属性的对象 Date expireTime 和 byte
我试图将 2 个不同的 WPF 控件绑定(bind)到 ViewModel 中的同一属性,即 CheckBox.IsChecked 和 Expander.IsExpanded。我想要实现的行为是让 C
我希望这是一个简单的问题,但我没有找到答案。 我想让 build.gradle 文件通过替换某些变量来设置我的 Spring Boot 应用程序中的版本。这与广告一样有效: def tokens =
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个问题在这里已经有了答案: In a fragment shader, why can't I use a flat input integer to index a uniform array o
我已经下载了 OSM 世界地图。解析时出现异常: osm bound changeset (...) changeset Exception in thread "main" org.xml.sax.
我是一名优秀的程序员,十分优秀!