我有一堆Java卡供应商声称SCP是01,密钥多样化算法是Visa2。在过去两天的大部分时间里,我一直试图使用JCOP工具对他们进行身份验证,但无济于事。
根据我的理解,在选择AID后,init-update
命令的响应是KEYDATA,它应该用于使用KMC生成ENC,DEC和MAC密钥。但有趣的是,虽然我得到了SW12 = 0x9000
和28个字节的数据来回应init-update
,但JCOP工具说:
jcshell:错误代码:-5(身份验证失败)
jcshell:错误的响应APDU
我的问题是,JCOP工具是否支持Visa2密钥多样化算法?如果没有,使用Visa2算法生成ENC,DEC和MAC密钥的正确事件序列是什么?
答案 0 :(得分:1)
JCOP工具返回错误,因为在检查init-update
响应后,卡返回的卡密码未通过检查 - 卡用于生成此密码的密钥不是JCOP预期的密钥工具。
我不知道JCOP Tools是否支持Visa2多样化,但这是一个可以使用的解决方法:
GPShell(http://sourceforge.net/p/globalplatform/wiki/GPShell/)实施Visa2算法。它是开源的,因此您可以在其源代码中查看整个算法序列,并使用它来验证您自己的结果。或者只是用它来处理你的卡片......