首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在其数据字段中使用SSD AID删除APDU命令,返回6985

在其数据字段中使用SSD AID删除APDU命令,返回6985
EN

Stack Overflow用户
提问于 2020-11-15 18:13:16
回答 1查看 323关注 0票数 5

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

代码语言:javascript
运行
复制
--> 80 E4 00 00 LC 4F <AID Len> <AID>
<-- 90 00

上面的命令对于普通的applet很好。但是,当我把我的SSD的AID放进去时,卡片上写着6985个状语,意思是“使用条件不满足”。

由于在我的卡中启用了委托管理功能,并且ISD中加载了一个公共令牌密钥和一个收据密钥,我想可能是由于在Delete APDU命令中没有使用DELETE令牌造成了上述错误。因此,我计算了删除标记如下:

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

代码语言:javascript
运行
复制
DeleteToken = RSA_Sign("00 00 LC 4F <SSD AID Len> <SSD AID>", TokenPrivateKey)

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

代码语言:javascript
运行
复制
--> 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。但它也失败了:

代码语言:javascript
运行
复制
-->  80 E4 00 80 09 4F <SSD AID Len> <SSD AID>
<--  6A 86 (= Incorrect P1 or P2 parameter)

Update2:

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

Update3:

使用0E权限从卡的ISD包实例化上述SSD,这意味着:

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

Update4:

我想我找到问题了!

引用自2.1.1

6.1.删除 6.1.2.建议 在命令消息中发送的数据字段 (诸如此类) 支持辅助安全域的实现上的,如果试图删除补充安全域的实例,而补充安全域具有DAP验证特权(特权字节集的第7位),则安全域不会被删除,并返回'6985‘响应。

Question1:知道为什么会这样实现/推荐它吗?使这类SSD (带DAP验证特权的SSD)不可移除的目的是什么?

Update5:

我试图更改我的SSD的priveleges,以从其中删除DAP验证优先级,使用,然后删除SSD。但是6A 80状态词失败了(这意味着“数据字段中的参数不正确”)。

代码语言:javascript
运行
复制
-->  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

Question2:用于注册表更新命令的安装有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2020-11-15 20:49:46

在使用RSA时,委托管理令牌应该使用SHA-1作为哈希机制和PKCS#1方案。我有一些未经测试的签名码和组装令牌数据。也许这是个有帮助的开始。

关于Question2:

我以前没有这样做过,但是您正在传递SSD AID,并作为应用程序AID再次传递。只有当您想要修改应用程序的特权(例如默认选定的特权)时,才需要应用程序AID。

相反:

代码语言:javascript
运行
复制
80 E6 40 00 16 08 A0 00 00 00 03 00 00 00 00 07 <SSD AID> 01 80 00 00

我试一试:

代码语言:javascript
运行
复制
80 E6 40 00 16 <Length SSD AID> <SSD AID> 00 01 80 00 00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64848060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档