微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何自定义新安装的补充安全域SSD?

如何解决如何自定义新安装的补充安全域SSD?

我有一个支持补充安全域 (SSD) 的示例 javacard,因为它有一个可执行加载文件(即包),其 AID 为 A0 00 00 01 51 53 50,如 Global Platform: Card Secure Element Configuration 中所述。所以我可以通过两个权限(安全域和委托管理)和 AID A0 00 00 01 51 53 50 41 安装这个包的一个实例。

我的问题是在安装 SSD 后出现的。我想首先我必须设置一个密钥集才能使这个SSD独立于ISD。所以我选择SSD,使用全局平台PUT KEY Command设置一个key set,有3个key,key类型为80。旧的和新的 KVN 值应该是什么? ISD 密钥集具有 KVN 20、密钥索引 010203、密钥类型 80 和密钥长度 80,如我使用 pyResMan 获取关键信息模板。 现在,SSD 的 PUT Key 的关键信息应该是什么? SSD 如何强制使用这个新的密钥集?还需要哪些其他自定义设置?

解决方法

安装 SSD 后。为了能够设置新的默认密钥集,您应该执行以下步骤:

  1. 选择您的 SSD 以打开安全通道协议(由于不存在密钥,这将使用 ISD 或 SD 祖先的密钥才能打开安全通道)。
  2. 使用 P1=00 执行您的 Put-key 命令(这意味着您要添加新密钥)。然后在命令数据中将 kvn 设为你想要的值。

您的放置键可能如下所示:84D80081 + lc + kvn + 8010des-enckey + 8010des-mackey + 8010des-dekkey

您可以使用 global platform pro 执行相同操作,如下所示

gp --sdaid yourSDAID -lock key (if you use the same key or --lock-mac XXX,lock-dek XXX,lock-enc ...XXXX).

来自 GPC_Card 规范 v2.3.1 的相关参考:11.8、11.8.2.1

,

自定义新创建的 SSD 的另一种方法是使用 GPC-Spec_2.2_Amendment_A_1.0.1 中描述的存储数据命令。您可以参考表 10:安全通道密钥信息中的映射指南 2.1.1_Mapping_guidelines_v1.0.1 来构建您的密钥信息数据。以下是您应遵循的步骤。

  1. 使用您的 ISD 或 SD 祖先选择并打开 SCP
  2. 为新安装的 SD 发送安装 [用于个性化] 命令
  3. 发送存储数据命令(根据上述)

跟踪示例可能如下所示: 选择后

install[for personalization] >>>>>> 84e62000 16 00 00 08 a000000151535043 00 00 00 8ca7d31e9c734007
store data >>>>>> 84e20000 4a 8f01 30 8c5aa9a6d1d8de8e111da245c11f262d 8c5aa9a6d1d8de8e111da245c11f262d 8c5aa9a6d1d8de8e111da245c11f262d 7f01 0c 0021808baf478baf478baf47 2610d7c2ab682d0c

请注意,我使用的是 DGI 格式的存储数据。此处使用 DGI 8F01 和 7F01,如上述指南的表 10 中所述。此外,密钥使用会话 DEK 密钥进行加密,并添加了 CMAC(因为我在 SCP 02 中使用了“i”= 15)。

在这一步之后,您的 SD 将切换到个性化状态。 这可以通过 GetStatus (80F24002 0A 4F08 A000000151535043) 或 gpPro 命令进行检查,并且 TAG 9F70 应为 0F00(个性化)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。