【问题标题】:Delete APDU command with SSD AID in its data field, returns 6985删除数据字段中带有 SSD AID 的 APDU 命令,返回 6985
【发布时间】:2020-11-15 18:13:16
【问题描述】:

我有一个包含 SSD(补充安全域)的 Javacard,我想删除它。通常,当我想从我的卡中删除一个小程序或一个包时,我会在成功 相互验证 过程后发送以下 DELETE APDU 命令(没有 MAC 或数据字段加密DELETE APDU 命令需要,Security Level == 0 就足够了):

--> 80 E4 00 00 LC 4F <AID Len> <AID>
<-- 90 00

上面的命令适用于普通的小程序。但是当我将SSD的AID放入其中时,卡会以69 85个状态字响应,这意味着“不满足使用条件。”

由于我的卡中启用了委托管理功能,并且在 ISD 中加载了 Public Token 密钥和 Receipt 密钥,我想可能提到的错误是由于在 DELETE APDU 命令中没有使用 Delete Token。所以我计算了 Delete Token 如下:

全球平台卡规范 2.2.0.7:图 C-8:删除令牌计算

DeleteToken = RSA_Sign("00 00 LC 4F <SSD AID Len> <SSD AID>", TokenPrivateKey)

然后我尝试使用以下命令删除 SSD:

--> 80 E4 00 00 <LC+Len(DeleteToken)> 4F <SSD AID Len> <SSD AID> 9E <Len(DeleteToken> <DeleteToken>
<-- 69 85

但我又得到了 6985 状态词。有谁知道问题出在哪里以及如何解决?

更新:

我什至用P2 = 0x80 尝试了 DELETE APDU 命令来删除带有所有相关对象的 SSD。但它也失败了:

-->  80 E4 00 80 09 4F <SSD AID Len> <SSD AID>
<--  6A 86 (= Incorrect P1 or P2 parameter)

更新2:

我什至尝试在安全通道 (SecLevel = 03) 中发送 DELETE APDU 命令。但同样,我收到了 6985 个状态词。我需要使用哪种哈希算法来生成删除令牌?据我所知,GP 规范没有指定哈希算法。

更新3:

上面提到的 SSD 是从卡的 ISD 包中实例化的,具有0E 权限,这意味着:

安全域 + 委托管理 + DAP验证

更新4:

我想我找到了问题!

引自2.1.1_Mapping_guidelines_v1.0.1-Final.pdf

6.1。删除

6.1.2。推荐

命令消息中发送的数据字段

(废话)

在支持补充安全域的实现中,如果尝试删除补充安全域的实例并且补充安全域具有 DAP 验证特权(特权字节集的位 7 ),安全域不会被删除,并返回“6985”响应。

问题1:知道为什么要这样实施/推荐吗?使这种类型的 SSD(具有 DAP 验证权限的 SSD)不可移动的目的是什么?

更新5:

我尝试使用 INSTALL For REGISTRY UPDATE 更改我的 SSD 的权限以从中删除 DAP 验证 权限,然后删除 SSD。但它以6A 80 状态字失败(这意味着“数据字段中的参数不正确”)。

-->  00 A4 04 00 08 A0 00 00 00 03 00 00 00
<--  6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 01 FF 90 00

-->  80 50 00 00 08 DF 4B 4B B7 15 35 5A 93
<--  00 00 41 89 00 24 94 97 41 21 01 02 00 77 5C 2B 50 27 5A F4 8A 18 C0 8B 2D C2 20 50 90 00

-->  84 82 00 00 10 30 AD 04 C4 60 A2 80 8B 5A 61 7E 49 3A 39 B6 C6
<--  90 00

-->  80 E6 40 00 16 08 A0 00 00 00 03 00 00 00 00 07 <SSD AID> 01 80 00 00
<--  6A 80

问题 2:INSTALL For Registry Update 命令有什么问题?

【问题讨论】:

  • > 问题 1:相同的规范说上面的一些行:“在支持补充安全域的实现上,DELETE 命令能够删除具有 DAP 验证权限的补充安全域的实例,但是,无法删除具有强制 DAP 权限的安全域。”这部分有点不一致。对于 Mandated DAP,这是有道理的,否则通过删除 SSD,就有可能绕过 Applet 管理的强制性 DAP 检查。对于只有 DAP 的 SSD,不是。也许开发人员只是遵循这里的规范。

标签: javacard globalplatform


【解决方案1】:

使用 RSA 时的委托管理令牌应使用 SHA-1 作为 PKCS#1 方案的散列机制。我有一些未经测试的signing code 和用于组装token data。作为一个开始,也许这是有帮助的。

关于问题2:

我以前没有这样做过,但是您将 SSD AID 和作为应用程序 AID 再次传递给 .仅当您要修改应用程序的权限时才需要应用程序 AID,例如默认选择的权限。

改为:

80 E6 40 00 16 08 A0 00 00 00 03 00 00 00 00 07 <SSD AID> 01 80 00 00

我会试试这个:

80 E6 40 00 16 <Length SSD AID> <SSD AID> 00 01 80 00 00

【讨论】:

  • 我试过了,但都失败了。 P2=0x80 解决方案日志已添加到问题中。谢谢。
  • SSD 可能无法删除?例如,在 eUICC 中有一个 ECASD,删除它会杀死大部分卡功能。
  • 好吧,我确定它是可删除的,因为我自己实例化并安装了这个 SSD。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 2019-03-18
  • 2011-07-12
  • 2020-09-27
相关资源
最近更新 更多