问题描述
我有一个微控制器(msp430)和一个智能卡(se050),并且正在使用Windows计算机上的Code Composer Studio将APDU从微控制器发送到智能卡。
我正在尝试使用AES对称密钥创建安全通道(SCP03)。我已经使用智能卡上的此AES密钥创建了一个会话,现在要执行相互身份验证,我已向智能卡发送了'INITIALIZE UPDATE'命令APDU
初始化更新APDU:
80 50 00 00 08 00 00 00 00 00 00 00 00 00
卡上的响应是:
00 00 00 00 00 00 00 00 00 00 00 03 60 7E 25 31 3D BE 63 59 BE 34 AA 4B C0 F2 B9 27 B4
其中
00 00 00 00 00 00 00 00 00 00
= 关键多元化数据
00 03 60
= 关键信息
7E 25 31 3D BE 63 59 BE
= 纸牌挑战
34 AA 4B C0 F2 B9 27 B4
= 卡密码
现在,我要检查卡密码是否正确?为此,我需要创建秘密会话密钥(S-ENC,S-MAC,S-DEK)和卡密码,以便对卡进行身份验证。
我还需要创建“主机密码” ,并需要使用“ EXTERNAL AUTHENTICATE ”命令重新发送到智能卡。
如何在代码编辑器中生成这些东西?我可以在代码中导入任何C库来生成这些密钥和密码吗?
解决方法
我已经开发了一段时间,最近更新了GlobhalPlatform C Library。这是Overview Page,这是API documentation。对于您的问题,mutual authentication是一个很好的起点。
请记住,您还可以使用cmake -G "..."
为Visual Studio或Eclipse生成更方便的项目文件,以提供一种浏览项目的好方法。