电子钱包CPU卡和PSAM卡消费密钥装载分析

来源:互联网 发布:unity3d动画制作教程 编辑:程序博客网 时间:2024/04/30 15:59

1.PSAM卡中一个ADF下消费密钥区分

装载不同的消费密钥根据密钥版本号来区分,CPU卡中消费密钥密钥版本要和PSAM卡中密钥版本相同

还有算法标识

00-3DES

01-DES

02-255保留

注意:消费密钥的密钥版本是在消费过程中标识密钥版本,其他的密钥的密钥版本作为密钥标识使用。

 

2.PSAM卡中密钥用途设置

高3位是分散密级,低5位是密钥类型

一级分散是0x01<<5 =0x20   消费密钥是0x02 ,所以密钥用途应该是

0x20|0x02 =  0x22

二级分散消费密钥的密钥用途应该是 0x40|0x02 = 0x42

三级分散消费密钥的密钥用途应该是0x60|0x20 = 0x62

 

注意:1.消费时PSAM卡中至少要进行一次密钥分散,我一直想一次不分散没成功…..

2.消费密钥的密级应该和获取MAC1命令中的LC相对应:

密级=1 Lc=0x14 + 1*8

密级=2 Lc=0x14 + 2*8

密级=3 Lc=0x14 + 3*8

当然获取MAC1命令中数据域也要按顺序加入相应的分散因子

 

3.PSAM卡中的消费密钥装载

PSAM卡中的消费密钥装载时应该用当前应用下的主控密钥对消费密钥进行加密和计算MAC

 

Eg:

84   D4  0000 1C

CLA INS P1 P2 Lc

 

Lc后面的数据全部进行DES加密,然后把加密数据和命令拼接

把拼接好的命令进行MAC计算,其中Lc长度为加密之后的数据长度+4

 

DATA域数据:22 00 0000112233445566778899aabbccddeeff

用3DES对DATA加密,在加密之前先稍微对其进行处理,添加明文长度,分块不足8字节补80 00 …

命令线路加密保护计算:

 

3DES-ECB模式

处理数据:

13 22 0000 00112233445566778899aabbccddeeff 80 00 00 00

0x13          62-FF的明文要加密的数据长度 19

80 00 00 00 是对要加密数据的补充,因为分块之后不足8字节

22              是密钥用途,6是分散级数,2是密钥类型-消费

00 00          是密钥版本和算法标识

00112233445566778899aabbccddeeff 要添加的密钥明文

 密钥:00112233445566778899aabbccddeeff (当前应用下的主控密钥)

 结果:DCC0BB5793ABFCA2CA8C1624822F6E01A86A0B5CBED191DD(数据域加密之后的数据)

 

MAC-CBC模式-DES

 

初始向量5d 72 b3 fd 000000000 (5d 72 b3 fd从卡片获取的4字节随机数)

处理数据:84D400001CDCC0BB5793ABFCA2CA8C1624822F6E01A86A0B5CBED191DD

密钥:00112233445566778899aabbccddeeff (当前应用下的主控密钥)

 

结果:8A9D4ADB

 

完整命令

84D400001CDCC0BB5793ABFCA2CA8C1624822F6E01A86A0B5CBED191DD8A9D4ADB

 

 

4.CPU卡中的密钥

此时CPU卡中的密钥应该是分散之后的密钥

密钥分散算法:

注意:PSAM卡中装载的密钥对分散因子进行一级一级分散,具体分散几次根据PSAM卡中密钥装载时的分散级数确定

1.密钥(PSAM卡中装载的密钥或者是上次分散之后的密钥)对8字节分散因子做3DES加密得到的8字节作为新分散密钥的左8字节

2. 密钥(PSAM卡中装载的密钥或者是上次分散之后的密钥)对8字节分散因子取反之后的数据 做3DES加密得到的8字节作为新分散密钥的右8字节

3.把上面两步骤获取的左右各8字节拼接起来就是新的16字节分散密钥

4.如果还有下一级分散,把新获取的分散密钥作为对分散因子加密的密钥

重复上述三个步骤。

 

Eg:

目的:将PSAM卡中装载消费密钥,消费时对用户卡序列号进行一级分散

         能够与装载相应密钥的CPU卡进行消费

 PSAM卡中消费密钥是:00112233445566778899aabbccddeeff

 分散因子:8字节卡应用序列号  122334455667788


DPK左半部分

卡应用序列号:1122334455667788

密钥:00112233445566778899aabbccddeeff

结果:496BD7A351364453

 

DPK右半部分

卡应用序列号求反:eeddccbbaa998877

密钥:00112233445566778899aabbccddeeff

结果:3100B54E71196528

 

最终结果:496BD7A3513644533100B54E71196528

装载命令:80D40000153EF0F20000496BD7A3513644533100B54E71196528

注意:密钥装载之前是否做其他验证看密钥文件建立时的增加权限

 

此时

PSAM卡中消费密钥是:00112233445566778899aabbccddeeff

CPU卡中消费密钥是:496BD7A3513644533100B54E71196528

0 0
原创粉丝点击