【问题标题】:SmartCard MUTUAL AUTHENTICATION智能卡相互认证
【发布时间】:2015-04-13 20:25:47
【问题描述】:

您好,我正在寻找有关使用智能卡进行相互验证的信息,不知道您是否可以帮助我。 我正在研究逆向工程 apdu 命令,想知道如何计算 MAC。 例如我有以下内容:

APPLET: A4 00 04 0C XX XX XX
APDU: 00 84 00 00 08 C9
TRX: 00 82 00 00 28 [seed bytes Transformed enc mac ...] 00
TRX: B0 0C 0D 81 00 97 01 5D 8E 08 [MAC] 00

前两个命令我完全理解,但从第三个 00 82 开始,我想知道如何计算 MAC 以及接下来的内容,以进行读数 我想了解信息和文件以阅读和了解有关相互验证的更多信息

【问题讨论】:

  • 您使用哪种智能卡?它与哪个版本的全球平台兼容?
  • 不知道,是研究的,不过网卡有PKCS15小程序。可以确定吗?
  • 如果它有助于使用 MUTUAL AUTHENTICATION 的小程序是这样的:A4 00 04 0C 07 A0 00 00 02 47 10 01 53
  • 你卡的ATR是多少?
  • 我试了几个,都如下: 3B FD 96 FE 00 00 81 31 45 00 00 01 XX XX XX XX 00 00 00 00 00 00 XX 我注意到那4个字节改变。为了进一步扩大您的范围,这些卡​​是由数千人发行的。

标签: applet smartcard mutual-authentication


【解决方案1】:

对 Mutual Authenticate 的概括总结(我同意,ISO 7816-4 对集中于接口的含义有点简洁):

  • 相互验证是内部验证和外部验证命令的组合。

  • 首先,主机应用程序从卡中请求一个随机数。

  • 然后这个随机数使用密钥以某种方式加密,通常是通过应用 MAC 算法

  • 计算结果在 Mutual Authenticate 的命令数据字段中被发送回卡,并在外部生成另一个随机数。

  • 卡验证 MAC 结果,如果成功则授予访问权限。它还使用不同的密钥从外部提供的随机数计算 MAC,并将其作为命令响应发送。如果不成功,则通过错误计数器阻止密钥或通过大量延迟来防止暴力破解。

  • 主机应用程序验证卡的 MAC。如果结果正确,则宿主应用程序可以确定它是一张“合法”卡。

有两点很关键:

  • 如何分离和编码 MAC 和外部提供的随机数 - 例如作为使用两个数据对象的 TLV 结构
  • 如何识别两个键,因为在 P2 中只能指定一个。

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2012-11-19
    • 2012-09-12
    相关资源
    最近更新 更多