智能卡互相认证

时间:2015-04-13 20:25:47

标签: applet smartcard mutual-authentication

您好我正在寻找有关使用智能卡进行互相认证的信息,我想知道您是否可以帮助我。 我正在研究逆向工程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

前两个命令我完全理解它们,但从第三个开始0082是我想知道如何计算MAC及其后的内容,以便做出读数 我想知道阅读的信息和文件,并了解有关相互认证的更多信息

1 个答案:

答案 0 :(得分:0)

一般情况下相互认证的简短摘要(我同意,ISO 7816-4对于专注于界面的含义有点简洁:

  • Mutual Authenticate是内部身份验证和外部身份验证命令的组合。

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

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

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

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

  • 主机应用程序验证卡上的MAC。如果结果是正确的,主机应用程序可以确定,它是合法的"卡。

两点至关重要:

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