涉及到的GP指令
INITIALIZE UPDATE
EXTERNAL AUTHENTICATE
GET STATUS
KEY Reference
实例讲解
1.选择安全域
00 A4 04 00 08 A0 00 00 00 03 00 00 00
或00 A4 04 00 00
2.测试卡密钥
如果是固定测试密钥:
ENC=MAC=DEK=404142434445464748494A4B4C4D4E4F
如果是KMC,需要分散得到对应卡片密钥:
%sn= FFFF + 卡片UID
data_ENC=%sn+F0+01+%sn+0f+01
data_MAC=%sn+F0+02+%sn+0f+02
data_DEK=%sn+F0+03+%sn+0f+03
ENC =3DES(KMC,data_ENC)
MAC =3DES(KMC,data_MAC)
DEK =3DES(KMC,data_DEK)
3.初始化更新
发送至卡片值:
80 50 00 00 08 6e5d1ad463cb6bfc(8字节随机数)
卡片返回值:
00 00 00 01 02 03 04 05 06 07 FF 02 00 19 DF AB EE D1 57 EA 6F 29 A1 EC FF 58 53 84 9000
Key diversification data 10 bytes — 00 00 00 01 02 03 04 05 06 07
Key information 2 bytes — FF 02
Sequence Counter 2 bytes — 00 19
Card challenge 6 bytes — DF AB EE D1 57 EA
Card cryptogram 8 bytes — 6F 29 A1 EC FF 58 53 84
ENC 过程密钥:
ENC计算数据:01010019000000000000000000000000
3DES - CBC(ENC,ENC计算数据,8字节00 icv)
ENC 过程密钥:0FD3D5705D5B2AAFA29042A3527A3822
MAC 过程密钥:
MAC计算数据:01820019000000000000000000000000
3DES - CBC(MAC,MAC计算数据,8字节00 icv)
MAC过程密钥:34211B65F5A563C077EC5384876DC809
DEK过程密钥:
DEK计算数据:01810019000000000000000000000000
3DES - CBC(DEK,DEK计算数据,8字节00 icv)
DEK过程密钥:785981D847CBF3C07C6D41D00E99B45B
主机密文:
主机密文计算数据:2字节Sequence Counter + 6字节Card Challenge + 8字节host challenge
(0001 71CFA1BC96CF 0102030405060708 8000000000000000)
3DES - CBC(ENC,主机密文计算数据,8字节00 icv)
主机密文(全)
:20D03C13CD5544D4E492FDFD5D626F226F29A1ECFF585384
取后八字节(2F4C375E632A8EB4)
外部认证 C-MAC 计算
MAC过程密钥:34211B65F5A563C077EC5384876DC809
输入数据: 84820000102F4C375E632A8EB4
MAC算法得出C-MAC:13245E5608A019B8
4.外部认证
发送指令:84820000102F4C375E632A8EB4 13245E5608A019B8
5.检测卡片安装包
发送指令:80 F2 20 00 02 4F 00
返回指令:len + AID+len +life cycle pri