1

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

我的问题是在安装 SSD 后出现的。我认为首先我必须设置一个密钥集以使这个 SSD 独立于 ISD。所以我选择 SSD 并使用 Global 平台PUT KEY Command来设置一个有 3 个 key 和 key type 的 key set 80。新旧 KVN 值应该是什么?ISD 密钥集包含 KVN 、20密钥索引01、、、密钥类型和密钥长度,因为我使用. 现在, SSD的关键信息应该是什么?SSD如何被迫使用这个新的密钥集?还需要什么其他定制?02038080pyResManPUT Key

4

2 回答 2

0

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

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

您的 put-key 可能如下所示: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

于 2021-02-15T16:25:32.600 回答
0

自定义新创建的 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(因为我使用“i”= 15 和 SCP 02)。

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

于 2021-02-17T15:26:48.067 回答