Desfire卡修改密钥流程

修改密钥命令说明-0xC4:

此命令允许更改存储在 PICC 上的任何密钥。

如果选择 AID = 0x00,则更改适用于 PICC 主密钥,因此只有 KeyNo = 0x00 有效(PICC 上仅存在一个 PICC 主密钥)。在所有其他情况下(AID≠0x00),更改适用于当前所选应用程序(由其 AID 表示)中指定的 KeyNo。

作为参数,该命令采用一个字节长度的 KeyNo,并且必须在从 0x00 到应用程序密钥数量 - 1 的范围内。

第二个参数保存有关打包在密码中的新密钥的信息。

相应的密钥设置(参见第 4.3.2 章)定义了是否允许更改密钥,此外,它们还显示了在 ChangeKey 命令之前进行身份验证所需的密钥。

• 要更改任何密钥(Master Key 和ChangeKey Key 除外),需要使用ChangeKey 进行身份验证。

• 要更改ChangeKey Key 或Master Key,需要使用Master Key 进行验证。

• 如果用于验证的 KeyNo 与要更改的 KeyNo 不同,并且 ChangeKey Key 设置为值 ≠ 0xE,则 PCD 需要通过以下方式生成数据帧“解密密钥数据”:

新密钥和当前密钥按位异或(16 字节)。 CRC(2 字节)在异或数据上计算并附加在末尾。此外,附加了新密钥的 CRC(2 字节)。在应用此零填充(4 字节)以达到 8 的倍数(总共 24 字节)的足够帧大小之后。

最后对整个密钥数据字段执行 DES/3DES 解密操作(使用当前会话密钥)。这三个密码块使用 CBC 发送模式链接在一起。

• 如果用于认证的 KeyNo 与要更改的 KeyNo 相同,或者 ChangeKey Key 设置为 0xE,PCD 需要通过以下方式生成数据帧“解密密钥数据”:

CRC(2 字节)是在新的密钥数据(16 字节)上计算出来的,并附加在末尾。在应用此零填充(6 个字节)后,达到 8 的倍数(总共 24 个字节)的足够帧大小。最后对整个密钥数据字段执行 DES/3DES 解密操作(使用当前会话密钥)。

这三个密码块使用 CBC 发送模式链接在一起。

• 如果 ChangeKey 密钥设置为 0xF(“从不”),则除主密钥(参见第 4.3.2 章 Bit0)之外的所有密钥都将被冻结。因此,ChangeKey 命令在尝试执行时将返回错误代码

更改与主密钥不同的密钥。

注意:成功更改用于达到当前身份验证状态的密钥后,此身份验证将失效,即后续操作需要使用新密钥进行身份验证。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值