我已经开始使用javacard为智能卡开发applet。在编译applet时,必须通过全局平台规范(https://globalplatform.org/wp-content/uploads/2018/05/GPC_CardSpecification_v2.3.1_PublicRelease_CC.pdf)中定义的安全协议将其加载到javacard。
特别是,在卡上加载applet需要知道用于在主机和智能卡之间建立安全通道的密码密钥。空白卡通常提供默认密钥,如“40414243444445464748494A4B4C4D4E4F”。若要“锁定”卡并确保其不能被篡改,必须将这些密钥更改为只有发行者才知道的内容。
我的问题是:使用默认测试密钥发行卡的风险是什么?
以下是我能想到的威胁清单:
还有其他威胁吗?特别是,是否有可能恢复存储在已安装在卡上的applet中的敏感数据(例如加密密钥)?
我想了解使用带有安全通道默认密钥的智能卡的确切安全含义。
发布于 2020-11-25 10:28:52
applet的数据应该由根据Java Card运行时规范(JCRE)实现的“防火墙”保护,第6章:"Applet隔离和对象共享“:
--基于Java技术的防火墙(Java防火墙)--为防范最常见的安全问题提供了保护:开发人员的错误和可能导致敏感数据被“泄漏”到另一个applet的设计疏忽。applet可以从可公开访问的位置获取对象引用。但是,如果对象由受自己防火墙保护的applet拥有,则请求applet必须满足特定的访问规则,才能使用引用访问对象。
防火墙还提供不正确代码的保护。如果将不正确的代码加载到卡上,防火墙仍将保护对象不被此代码访问。
要允许共享,共享类必须实现javacard.framework.Shareable接口(6.2.6共享接口详细信息)。
不过,请注意,如果允许运行不受信任的小程序,则攻击面将大大增强。不能满足安全限制的可能性肯定会增加。这些密钥被认为对Java Card安全至关重要,应该始终替换默认密钥。如果您订购了大量的卡,通常可以用特定于客户的卡替换默认的密钥。
请注意,在编写本报告时,Oracle的站点部分关闭,我无法访问文档。本文摘自我在个人电脑上存储的3.0.1规范。
https://stackoverflow.com/questions/64969364
复制相似问题