AUTH过程

时间:2023-03-09 17:09:35
AUTH过程

INITIALIZE UPDATE: 在安全通道的显式发起期间,INITIALIZEUPDATE命令用于在卡和主机之间传送卡和会话数据。这个命令开始一个安全通道会话的发起。

CPURESET()
//选择应用区
00A40400++A000000333010101 (RAM+)
//初始化通道
++RAM+1C
00C000001C(DATA+)
/*************
Key diversification data 10bytes //由卡外实体来获取卡内的静态密钥
Key information 2bytes //包含了密钥的版本号和安全通道的协议号
Card challenge 8bytes //卡内部生成的随机数
Card cryptogram 8bytes //鉴别密码
************/
KEYVERSION=COPY(DATA,,)
QCOUNTER=COPY(DATA,,)
CCHALLENGE=COPY(DATA,,)
CARDCHALLENGE=COPY(DATA,,)
MAC_RII=LAST(DATA,) //验证MAC //计算个人化过程密钥SPenc SPmac SPdek
CBC_3DES_EN(+QCOUNTER+,Penc,SPenc)
CBC_3DES_EN(+QCOUNTER+,Pmac,SPmac)
CBC_3DES_EN(+QCOUNTER+,Pdek,SPdek) //华大
{
SPenc=COPY(SPenc,,)
//3DES计算MAC MAC_RII==MAC_RI
SDES_MAC_1(+RAM+CARDCHALLENGE+,SPenc,MAC_RI)
SDES_MAC_1(+CARDCHALLENGE+RAM+,SPenc,MAC1)
3DES_MAC_1(++MAC1+,SPmac,MAC2) //通道安全认证
++MAC1+MAC2
} //JAVA CARD
{
//3DES计算MAC
GP_MAC(RAM+CARDCHALLENGE+,SPenc,MAC_RI)
GP_MAC(CARDCHALLENGE+RAM+,SPenc,MAC1)
3DES_MAC_1(++MAC1+,SPmac,MAC2) //通道安全认证
++MAC1+MAC2
}