1)定义和范围
命令可向卡中装载密钥或更新卡中已存在的密钥。本命令可支持8字节或16字节的密钥,密钥写入必须采用加密的方式,在主控密钥的控制下进行。
在密钥装载前必须用GET CHANLLEGE命令从PSAM卡取一个4字节的随机数。
2)命令报文
命令报文见表3-1。
代码 | 值 |
CLA | 84h |
INS | D4h |
P1 | 00h |
P2 | 00h |
Lc | 14h或1Ch |
Data | 加密后的密钥信息、MAC |
Le | 不存在 |
3)命令报文数据域
命令报文数据域包括要装载的密钥密文信息和MAC。
密钥密文信息是用主控密钥对以下数据加密(按所列顺序)产生的:
——密钥用途
——密钥版本
——密钥算法标识
——密钥值
MAC是用主控密钥对下数据进行MAC计算(按所列顺序)产生的:
——CLA
——INS
——P1
——P2
——Lc
——密钥密文信息
加密和MAC计算的方法遵循《中国金融集成电路(IC)卡规范》。
装载8字节的单长度密钥时,数据长度为14h;装载16字节的双长度密钥时,数据长度为1Ch。
4)响应报文数据域
响应报文数据域不存在。
2.批量更新密钥初始化(Init Batch Update)
1)定义和范围
Init Batch Update命令用于从IC卡中获得一个4个字节的随机因子。该随机因子服务于批量更新消费主密钥指令的安全过程(如安全报文),在使用批量更新消费主密钥指令的命令执行后失效。
2)命令报文
GET CHALLENGE命令报文见表2-16。
代码 | 值 |
CLA | 00h |
INS | 85h |
P1 | 00h |
P2 | 00h |
Lc | 不存在 |
Data | 不存在 |
Le | 13h |
3)命令报文数据域
命令报文数据域不存在。
4)响应报文数据域
此命令执行成功的响应报文数据域见表。
如果命令执行不成功,则只在响应报文中回送SW1和SW2。
说明 | 长度(字节) |
PSAM序列号 | 10 |
密钥索引号(GMPK) | 1 |
有效期 | 4 |
随机因子 | 4 |
1)定义和范围
命令可向卡中更新卡中已存在的消费密钥。本命令只支持16字节的密钥,密钥写入必须采用加密的方式,在主控密钥的控制下进行。
在密钥更新前必须用Init Batch Update命令从PSAM卡取一个4字节的随机数。
2)命令报文
命令报文见表3-1。
代码 | 值 |
CLA | 84h |
INS | D5h |
P1 | 00h |
P2 | 00h |
Lc | 10 +(N*18h) |
Data | 见说明 |
Le | 不存在 |
3)命令报文数据域
加密和MAC计算的方法遵循《中国金融集成电路(IC)卡规范》。装载16字节的双长度密钥时,数据长度为18h。
说明 | 长度(字节) |
已发送更新密钥指令数量(N) | 1 |
新的密钥索引号(GMPK) | 1 |
有效期 | 4 |
GMPK CRYPTOGRAPH | N*18h |
MAC | 4 |
响应报文数据域不存在。
4.通用DES计算初始化(INIT_FOR_ DESCRYPT)
1)定义和范围
INIT_FOR_ DESCRYPT命令用来初始化通用密钥计算过程。PSAM卡将利用卡中指定的密钥进行运算,产生一个临时密钥。运算方式由指定的密钥类型、密钥分散级数和密钥算法标识确定。
不支持计算临时密钥计算的密钥类型有:
——主控密钥
——维护密钥
——消费密钥
双长度密钥产生双长度临时密钥的密钥类型有:
——PIN解锁密钥
——用户卡应用维护密钥
双长度密钥左右异或产生单长度临时密钥的密钥类型有:
——重装PIN密钥
双长度密钥产生双长度临时密钥,单长度密钥产生单长度临时密钥的密钥类型有:
——MAC密钥
——加密密钥
——MAC、加密密钥
指定密钥经过几级处理由密钥分散级数和Lc确定,若二者不一致,则返回错误信息。
临时密钥在PSAM卡下电后自动消失,不允许读。
临时密钥产生后,与原密钥的属性一致。
2)命令报文
INIT_FOR_ DESCRYPT命令报文见表3-2。
代码 | 值 |
CLA | 80h |
INS | 1Ah |
P1 | 密钥用途 |
P2 | 密钥版本 |
Lc | 待处理数据的长度 |
Data | 待处理的数据 |
Le | 无 |
3)命令报文数据域
命令报文数据域包括待处理的输入数据。数据长度为8的整数倍,长度也可以为0。密钥类型取密钥用途的低5位,密钥分散级数取密钥用途的高3位。
如待处理的输入数据包括多级的分散因子,按最后一次分散因子在前、最先一次分散因子在后的顺序输入。
4)响应报文数据域
响应报文数据域不存在。
5.通用DES计算(DES Crypt)
1)定义和范围
命令利用指定的密钥来进行运算。若一条命令无法传输所有的待处理数据,可分几条命令输入。
加密计算采用ECB模式,数据的填充在卡片外面进行,卡片只支持长度为8的整数倍数据的加密。
MAC计算遵循《中国金融集成电路(IC)卡规范》,数据的填充在卡片外面进行,卡片只支持长度为8的整数倍数据的MAC计算。
DES CRYPT命令必须在INIT_FOR_ DESCRYPT命令成功执行后才能进行。卡片状态在执行无后续块计算后,复原为通用DES计算初始化执行前的状态。
2)命令报文
命令报文见表3-3。
代码 | 值 |
CLA | 80h |
INS | Fah |
P1 | 见表3-4 |
P2 | 00h |
Lc | 要加密的数据长度 |
Data | 要加密的数据 |
Le | 不存在 |
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含义 |
X | 计算模式 ——0,加密 ——1,MAC计算 | |||||||
X | 后续块 ——0,无后续块 ——1,有后续块 | |||||||
X | 初始值(仅对MAC计算有效) ——0,无初始值 ——1,有初始值 |
P1值计算模式如下:
——0,无后续块加密
——1,最后一块MAC计算
——2,有后续块加密
——3,下一块MAC计算
——5,唯一一块MAC计算
——7,第一块MAC计算
——其他,保留
3)命令报文数据域
命令报文数据域包括要加密的数据。加密数据的长度为8的整数倍。在P1的b3位为1时,待处理数据的前8个字节为MAC计算的初始值。
4)响应报文数据域
在P1的b1位为0时,响应报文数据域包括加密结果,数据长度是8的整数倍。
在P1的b1位为1,且P1的b2位为0时,响应报文数据域包括4字节的MAC。
6.应用解锁(Application Unblock)
1)定义和范围
APPLICATION UNBLOCK命令用于恢复当前应用。当命令成功完成后,对应用访问的将被取消,利用消费密钥校验MAC2的错误计数器将被重置。
如果应用解锁连续失败三次,卡将永久锁定此应用。
在APPLICATION UNBLOCK命令执行前必须执行GET CHANLLENGE命令取得4字节的随机数。
2)命令报文
命令报文见表3-5。
代码 | 值 |
CLA | 84h |
INS | 18h |
P1 | 00 |
P2 | 00 |
Lc | 数据字节数 |
Data | 报文鉴别代码数据元 |
Le | 不存在 |
3)命令报文数据域
命令报文数据域包括报文鉴别代码,由应用维护密钥对以下数据(按所列顺序)进行MAC计算而得到的:
——CLA
——INS
——P1
——P2
——Lc
MAC计算的方式参见《中国金融集成电路(IC)卡规范。》
4)响应报文数据域
响应报文数据域不存在。
7.MAC1计算(INIT_SAM_FOR_PURCHASE)
1)定义和范围
INIT_SAM_FOR_PURCHASE命令可支持多级消费密钥分散机制,产生《中国金融集成电路(IC)卡规范》中定义的MAC1。根据银行IC卡试点技术方案,可以利用试点城市标识、成员行标识、卡片应用序列号、随机数和交易信息得到过程密钥,进而加密得到MAC。PSAM卡产生脱机交易流程中MAC1的过程如下所示:
●PSAM在其内部用GMPK(全国消费主密钥)对试点城市标识分散,得到二级消费主密钥BMPK;
●PSAM在其内部用BMPK对成员行标识分散,得到成员行消费主密钥MPK;
●PSAM在其内部用MPK对卡片应用序列号分散,得到卡片消费子密钥DPK;
●PSAM在其内部用DPK对卡片传来的伪随机数、脱机交易序号、终端交易序号加密,得到过程密钥SESPK,作为临时密钥存放在卡中;
●PSAM在其内部用SESPK 对交易金额、交易类型标识、终端机编号、交易日期(终端)和交易时间(终端)加密得到MAC1,将MAC1传送出去。
在此过程中,所有的中间结果只保留在卡片内部,外界无法得到。只有进行本命令后,才允许进行MAC2校验的命令。
参与处理的终端机编号和终端交易序号由卡片操作系统从卡片中取得。
INIT_SAM_FOR_PURCHASE命令可支持多级消费密钥分散机制,消费密钥的分散过程由Lc和消费密钥共同确定,如果二者不一致,则返回错误信息。
2)命令报文
命令报文见表3-6。
代码 | 值 |
CLA | 80h |
INS | 70h |
P1 | 00h |
P2 | 00h |
Lc | 14h+8×N(N=1,2,3) |
Data | 要处理的数据 |
Le | 08 |
3)命令报文数据域
命令报文数据域包括的数据以下列顺序排列:
●用户卡随机数,4字节
●用户卡交易序号,2字节
●交易金额,4字节
●交易类型标识,1字节
●交易日期(终端),4字节
●交易时间(终端),3字节
●消费密钥版本号,1字节
●消费密钥算法标识,1字节
●用户卡应用序列号,8字节
●成员银行标识,8字节
●试点城市标识,8字节
4)响应报文数据域
响应报文数据域包括以下数据(按顺序返回):
——4字节的终端脱机交易序号
——4字节的MAC1
8.
校验MAC2(CREDIT_SAM_FOR_PURCHASE)
1)定义和范围
CREDIT_SAM_FOR_PURCHASE命令利用INIT_SAM_FOR_PURCHASE命令产生的过程密钥SESPKP校验MAC2,过程如下所示:
●检查MAC2尝试计数器,如MAC2未被锁定,PSAM在其内部用SESPK对交易金额加密得到MAC2,与命令报文中的数据进行比较;
●若命令执行成功,PSAM卡将应用中的终端脱机消费交易序号加1;
●如命令执行不成功,PSAM卡将MAC2尝试计数器减1,并回送状态码’63Cx’,这里’x’是MAC2尝试计数器的新值;
●如果’x’为零,PSAM卡将锁定消费密钥所在的ADF。
在此过程中,所有的中间结果只保留在卡片内部,外界无法得到。
CREDIT _ SAM _ FOR_ PURCHASE命令必须在INIT _ SAM _ FOR _ PURCHASE命令成功执行后才能进行。
若MAC2尝试计数器为0的话,消费密钥所在的应用将被锁定,只能在应用维护密钥的控制下应用解锁后使用。
应用下的MAC2错误计数器在应用下所有消费密钥MAC2校验错误的情况下都要被减1。
卡片的状态在命令执行后将复原为MAC1校验前的状态。
2)命令报文
命令报文见表3-7。
代码 | 值 |
CLA | 80h |
INS | 72h |
P1 | 00h |
P2 | 00h |
Lc | 04h |
Data | MAC2 |
Le | 不存在 |
3)命令报文数据域
命令报文数据域包括4字节的MAC2。
4)响应报文数据域
响应报文数据域不存在。