【发布时间】:2020-11-23 13:27:29
【问题描述】:
我已经开始使用 javacard 为智能卡开发小程序。 编译小程序时,必须通过全球平台规范 (https://globalplatform.org/wp-content/uploads/2018/05/GPC_CardSpecification_v2.3.1_PublicRelease_CC.pdf) 中定义的安全协议将其加载到 javacard。
特别是,将小程序加载到卡上需要知道用于在主机计算机和智能卡之间建立安全通道的加密密钥。空白卡通常带有默认键,例如“404142434445464748494A4B4C4D4E4F”。要“锁定”卡并确保其不会被篡改,必须将这些密钥更改为只有发行人知道的内容。
我的问题如下: 使用默认测试密钥发卡有什么风险?
以下是我能想到的威胁列表:
- 用户可以删除小程序并将卡重新用于其他目的
- 恶意软件可以卸载小程序(拒绝服务)
- 恶意软件可能会删除小程序并安装后门小程序,以在未来使用时窃取用户凭据。
还有其他威胁吗?特别是,是否可以恢复存储在已安装在卡上的小程序中的敏感数据(例如加密密钥)?
我想了解将智能卡与安全通道的默认密钥一起使用的确切安全含义。
【问题讨论】:
-
奇怪的问题,考虑到通过更改键来避免这种情况是多么容易;鉴于可能会安装任何小程序,我看到大量威胁,窃取其他小程序数据不在其中,因为这些应该是私有的。
-
@guidot 确实,智能卡应该始终被锁定,但如果小程序代码是打开的并且任何用户都可以加载它(并且省略锁定卡),目标是清楚地了解对用户的安全影响。
标签: security applet smartcard javacard globalplatform