数据字段中包含 SSD AID 的删除 APDU 命令,返回 6985

2024-02-25

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

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

上面的命令对于普通小程序来说效果很好。但是当我将 SSD 的 AID 放入其中时,该卡会响应69 85状态词,这意味着“不满足使用条件。”.

Since 委托管理我的卡已启用该功能并且公共代币钥匙和一个Receipt密钥已加载到 ISD 中,我想上述错误可能是由于未使用删除令牌 in the 删除 APDU命令。所以我计算了删除令牌如下:

Global Platform Card Specification 2.2.0.7 : Figure C-8: Delete Token Calculation enter image description here

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状态字。有谁知道问题出在哪里以及我该如何解决它?

Update:

我什至尝试过删除 APDU命令与P2 = 0x80删除 SSD 及其所有相关对象。但它也失败了:

-->  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:

上述 SSD 是从卡的 ISD 包中实例化的0E特权,这意味着:

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

Update4:

我想我发现了问题!

引述自2.1.1_Mapping_guidelines_v1.0.1-Final.pdf https://globalplatform.org/wp-content/uploads/2018/06/2.1.1_Mapping_guidelines_v1.0.1-Final.pdf:

6.1.删除

6.1.2.推荐

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

(巴拉巴拉)

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

问题1:知道为什么这样实施/推荐吗?将此类 SSD(具有 DAP 验证权限的 SSD)设为不可拆卸的目的是什么?

Update5:

我尝试更改 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:有什么问题安装注册表更新命令?


使用 RSA 时的委托管理令牌应使用 SHA-1 作为具有 PKCS#1 方案的哈希机制。我有一些未经测试的签名代码 https://github.com/kaoh/globalplatform/blob/master/globalplatform/src/crypto.c#L1096并用于组装代币数据 https://github.com/kaoh/globalplatform/blob/master/globalplatform/src/globalplatform.c#L3338。也许这作为一个开始是有帮助的。

关于问题2:

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

Instead:

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据字段中包含 SSD AID 的删除 APDU 命令,返回 6985 的相关文章

  • Safe Max Java 卡 APDU 数据命令和响应大小

    Java Card APDU 中建议的数据字段大小是多少 来自陈志群的Java Card Technology for Smart Cards Architecture and Programmer s Guide书中提到 Le 字段最多允
  • 如何获得唯一的智能卡ID?

    我正在寻找一种方法来为我使用的每张智能卡找到唯一的号码 我听说每张卡都有唯一的 IC 制造日期 IC 序列号和 IC 批次标识符 我如何从我的卡中获取这些信息 当然 每个硬件供应商都会将上述信息集成到芯片中 不幸的是 这留下了以下问题 操作
  • 如何从智能卡获取 CPLC 数据?

    我在用着GPShell在带有智能卡读卡器 型号为 ACR122 的 Ubuntu VM 上 我使用几种不同的 NXP SmartMX 芯片 使用他们的Android 标签信息应用程序 当我扫描一个特定的 SmartMX 芯片时 我能够看到
  • 在智能卡上上传 .cap 文件?

    我有一张新卡 其 ATR 代码如下 3B 68 00 00 00 73 C8 40 12 00 90 00 我在谷歌上搜索了这张ATR 最后我知道这是一张 巴西电子公积金卡 问题是我该如何使用这张卡 我的意思是它支持哪些 APDU 有它的数
  • 从 javacard 小程序读取大文件

    我正在编写一个小程序 它存储 3 个不同大小的文件 5 Kb 7 Kb 和 11 Kb 我在小程序中存储文件没有任何问题 但是当我尝试读回它们时 我只能读取前两个 较小的文件 第三个文件抛出异常 javax smartcardio Card
  • jcop 小程序上传错误

    我是 Java 卡开发的新手 我用jcop工具作为开发套件 当我在 Eclipse 中运行简单的小程序时 出现此错误 在运行配置中我选择Java卡模拟模式 在模拟模式下成功安装后 我想在java卡中安装应用程序 cm gt upload b
  • 如何更改小程序的权限和卡历史字节?

    我已经认为更改历史字节仅限于预个性化步 但是 我发现了一个名为设置ATRHistBytes今天在 GlobalPlatform API 中 这是它的描述 GlobalPlatform 2 2 第 172 页 设置ATRHistBytes p
  • 验证和认证的区别?

    如您所知 我们通过以下方式向卡证明我们是真实用户INITIAL UPDATE and EXTERNAL AUTHENTICATION命令 如下 lt 80 50 00 00 08 Host Challenge gt lt 84 82 03
  • JAVACARD2.2中selectApplet()方法的功能是什么

    正如 JavaCard 2 2 API 文档中提到的here http www win tue nl pinpasjc docs apis jc222 javacard framework Applet html selectingAppl
  • 向 Javacard 发送扩展 APDU

    我有一个 ACR38 智能卡读卡器和一些符合 GP 规范 02 的 Javacard 2 1 1 据我所知 有两种APDU 短APDU APDU 与LC or and LE比 短255 and 扩展APDU APDU 与LC or and
  • 如何创建和使用Java Card库包?

    正如您可能知道的 正如中提到的Java 卡开发套件用户指南为Java Card平台编写大型应用程序的关键是将代码划分为单独的包单元 软件包最重要的限制是最大组件大小为 64KB 对于 方法组件 如果应用程序的方法组件的大小超过 64KB 那
  • Javacard 共享接口:lookupAID 返回 AID,但 getAppletShareableInterface 返回 null

    编辑2 发现错误 我尝试在构造函数中初始化 Shareable 对象 此时客户端的register方法还没有被调用 所以JCRE没有它的AID 虽然我的服务器的 getShareableInterfaceObject AID clienta
  • Java 卡连接到模拟器失败

    我正在尝试测试 Java Card 小程序以建立与 cref 等模拟器的连接 try sckClient new Socket localhost 9025 InputStream is sckClient getInputStream O
  • 数据字段中包含 SSD AID 的删除 APDU 命令,返回 6985

    我有一个包含 SSD 补充安全域 的 Javacard 我想删除它 通常 当我想从卡中删除小程序或包时 我会发送以下内容删除 APDU成功后命令相互认证过程 不需要 MAC 或数据字段加密 并且Security Level 0就足够了删除
  • 安装后将 Javacard 小程序标记为隐式可选(默认小程序)

    我正在寻找一种方法 将小程序标记为隐式可选 默认选择 小程序 然后将其上传并安装在全球平台 http www globalplatform org JCOP 2 4 2 R1 http www nxp com products identi
  • 如何将CAP文件加载到java卡

    我是java卡的新手 你能帮我看看如何将Applet CAP文件解析为APDU吗 用于将此 CAP 文件安装到支持 GP2 2 的卡上 你应该尝试使用GPShell http sourceforge net projects globalp
  • 扩展 APDU 和 T=0/1 通信协议

    我有一个 JCOP V2 4 2 R3 java 卡 它的数据表中提到 该卡支持T 1 and T 0通信协议 我还有一个 ACR38 智能卡读卡器 它支持 T 0 和 T 1 协议 我与一张卡成功进行了 T 0 通信 并且与该卡成功进行了
  • Java Card 中的加密/解密输出 + 相应的 APDU

    我对 Java Card 的整个主题很陌生 并尝试查看一些代码示例以更好地理解 我在以下位置找到了 AES 使用示例甲骨文论坛 https community oracle com thread 1751988但以下部分有一些问题 priv
  • 在 Java Card 上将 byte[] 转换为 Short[] 的快速方法

    我想在 Java 卡上优化 SHA 3 算法 我需要一种消耗更少内存的快速算法 可以轻松转换byte to short 或短 to byte 我当前的实现如下所示 private short byteToShort byte b int l
  • jcop是在java卡中安装小程序的唯一方法吗?

    我正在尝试理解java卡的概念 我有一些疑问 我想与大家分享 也许你会对我有任何最好的建议 Jcop 我在某处读到 Java Card OpenPlatform JCOP 是由 IBM Z rich Research Laboratory

随机推荐

  • 如何在不使用触摸屏的情况下模拟触摸事件

    我目前正在尝试开发一个触摸屏应用程序 Windows 7的 视觉工作室2013 C WPF 我工作的地方将配备触摸屏 实际上是放置在平面屏幕上的一层 我希望能够生成触摸输入 以便在没有屏幕的情况下开发和测试应用程序 我找到的所有资源要么非常
  • 定制 Android 操作系统构建

    我想知道创建自定义 Android 版本并将其部署到市场上当前可用的设备上的可行性如何 是否有描述该过程的文件或指南 先感谢您 萨米 Try dsixda 的 Android 厨房 http forum xda developers com
  • JSON序列化时如何使用JavaScriptSerializer设置格式?

    我正在使用 JavaScriptSerializer 将文件中的对象序列化为 JSON 格式 但结果文件没有可读的格式 如何允许格式化以获得可读文件 你可以使用JSON NET http json codeplex com 序列化器 支持
  • Matplotlib寄生对数轴勾选不需要的镜像

    我正在尝试使用 mpl toolkits axes grid1 中的 host subplot 制作一个具有两个 y 轴的图 其中一个是对数轴 一个是线性轴 该图看起来不错 但辅助 y 轴 右 的小刻度也显示在图内部的主 y 轴 左 上 i
  • android sqlite数据库中rawquery和execSQL的区别

    使用 rawquery 和 execSQL 之间的确切区别是什么 在 android Activity 中编写查询时 何时使用 rawquery 以及何时使用 execSQL 来自 API 文档 void execSQL String sq
  • 片段 - 您是否必须在包含整个活动的片段周围使用活动包装器?

    考虑以下示例应用程序开发者 android com http developer android com images fundamentals fragments png 这描述了如何使用 Fragment 如下所示 在电话上 您可以在活
  • 是否可以将条件属性创建为 DisplayIf?

    我想创建一个与我的视图模型一起使用的属性 我想根据第三个值显示不同的文本字符串 我想做这样的事情 DisplayIf IsPropertyValid true Name value 1 DisplayIf IsPropertyValid f
  • 当第三方 C 函数返回指针时,您应该自行释放它吗?

    有许多函数 特别是在 POSIX 库中 返回指向几乎必然新分配的数据的指针 他们的联机帮助页没有说明您是否应该释放它们 或者是否有一些模糊的机制在起作用 例如返回指向静态缓冲区的指针 或者类似的东西 例如 inet ntoa http ww
  • 使用 Graphics.CopyFromScreen 以 150% 缩放比例截取屏幕截图

    我正在尝试创建屏幕截图 位图 我写了这个函数 public static Bitmap CreateScreenshot Rectangle bounds var bmpScreenshot new Bitmap bounds Width
  • Spark应用程序启动后如何更改名称?

    我在更新 重新配置名为 spark 的预定义 Spark 上下文时遇到问题 spark sparkContext conf get spark app name 返回应用程序名称 Databricks Shell 我想更新它并尝试使用 sp
  • 如何将一周 (200851) 转换为日期 (2008-12-27)?

    如何将年周 例如 0852 或 200852 转换为日期 例如 2008 12 31 或具体的一周结束日 即星期六 2008 12 27 或一周开始日 即 2008 年 12 月 21 日 周末的任何一天都可以 周五 周六 周日或周一 SQ
  • 如何调整/dev/shm的大小?

    On Ubuntu 18 04 当我跑步时 df h 我看到这个结果 Filesystem Size Used Avail Use Mounted on tmpfs 3 9G 73M 3 8G 2 dev shm dev shm大小为3 9
  • 评估一串简单的数学表达式[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 挑战
  • 创建一个随机数并检查它是奇数还是偶数

    我希望创建一个批处理文件 该文件在运行时创建一个从 0 到 100 的随机整数 然后通过 if 语句运行它来检查它是奇数还是偶数 我遇到了一些麻烦 所以这就是我到目前为止遇到的问题 echo off set a num random 100
  • 如何使用 Swift 中的协议公开 Objective-C 对象的私有类方法?

    考虑两个私有方法UIColor 实例方法styleString返回颜色的 RGB 字符串 类方法 systemDestructiveTintColor它返回破坏性按钮使用的红色 UIColor h 私有标头供参考 https github
  • ServiceStack:否/swagger-ui/index.html

    我正在将 ServiceStack 用于我的自定义服务 在没有 IIS 的独立模式下 我想为我的服务添加超出范围的文档 metadata做 我想尝试一下 Swagger 插件 我已将插件命令添加到我的配置中 public override
  • 存在类型表达式的 Skolem 化

    在 Scala 中 以下表达式会引发类型错误 val pair A gt String A forSome type A a Int gt a toString 19 pair 1 pair 2 正如中提到的SI 9899 https is
  • 在 C# < 4 中,如何根据参数的运行时类型分派到方法?

    我有一个对象o在运行时保证是三种类型之一A B or C 所有这些都实现了一个通用接口I 我可以控制I 但不是A B or C 因此 我可以使用空标记接口 或者以某种方式通过使用接口来利用类型中的相似性 但我无法添加新方法或更改类型中的现有
  • ash 文件的结构如何?

    我有一个使用 ash 的小型发行版 不是 busybox 我不确定如何处理点文件结构 ashrc 似乎没有被拾取 我也没有看到 bash profile 类似物 shell启动文件有默认约定吗 手册页的调用部分对此进行了介绍 profile
  • 数据字段中包含 SSD AID 的删除 APDU 命令,返回 6985

    我有一个包含 SSD 补充安全域 的 Javacard 我想删除它 通常 当我想从卡中删除小程序或包时 我会发送以下内容删除 APDU成功后命令相互认证过程 不需要 MAC 或数据字段加密 并且Security Level 0就足够了删除