DESFire 的认证过程如下:
1. CM:0A00
读卡器向卡片发送0A00(0A—AUTH,00-key no.)
2. RE:AF ek(RndB)
卡片返回AF+DA22830A94D260EC,计算过程:卡片取随机数RndB=34B57355568DC23A,用主密钥key=00000000000000000000000000000000对RndB进行3DES加密得ek(RndB)=DA22830A94D260EC.
3. CM:AF dk(RndA+RndB’)
发送指令AF+74F4AE777AA431E8B76A9BA260335F17,AF-认证指令。计算过程:用主密钥对ek(RndB)进行解密得到RndB=34B57355568DC23A,对RndB进行闭合字节左循环得到RndB’=B57355568DC23A34,取随机数RndA=0011223344556677,得到RndA+RndB’=0011223344556677B57355568DC23A34,用主密钥对RndA+RndB’进行3DES+CBC解密得到dk(RndA+RndB’)= 74F4AE777AA431E8B76A9BA260335F17.
4. RE: 00 ek(RndA’)
卡片返回:00 F181F7326DCD86A6,00-状态字,表示操作成功。计算过程:卡片对dk(RndA+RndB’)进行加密得到RndA+RndB’,对RndB’进行闭合字节右循环验证是否等于RndB,若等于则卡片认证成功,并对RndA进行封闭字节左循环得到RndA’,用主密钥对其进行3DES加密得到ek(RndA’).
5. 验证RndA’闭合右循环后是否等于RndA。
notes:本文参考“http://blog.sina.com.cn/s/blog_9ed067ad01012db9.html”处学习得知。