-3

嗨,我正在寻找有关使用 SmartCards 进行相互验证的信息,我想知道您是否可以帮助我。我正在研究逆向工程 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 的地方以及接下来的内容,以进行阅读我想知道要阅读和了解的信息和文档关于相互认证

4

1 回答 1

1

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

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

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

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

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

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

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

有两点很关键:

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