第4部分PSAM卡应用指南0126Word文档下载推荐.docx
《第4部分PSAM卡应用指南0126Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第4部分PSAM卡应用指南0126Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
5.1.5READBINARY命令18
5.1.6UPDATEBINARY命令20
5.1.7GETCHALLENGE命令21
5.1.8GETRESPONSE命令22
5.2扩展命令24
5.2.1APPLICATIONUNBLOCK命令24
5.2.2CIPHERDATA命令25
5.2.3CREDITSAMFORPURCHASE命令(校验MAC2)26
5.2.4DELIVERYKEY命令28
5.2.5INITSAMFORPURCHASE命令(计算MAC1)29
5.2.6WRITEKEY命令31
1文件结构
11联网电子收费PSAM卡结构
注:
本文以《收费公路联网收费技术要求》第四章,“编码和数据交换格式”中的PSAM卡的数据格式为依据,考虑到在测试过程中的便利性及各地区未来应用需求的差异性,对原有PSAM卡片结构稍加扩充。
PSAM卡详细文件结构说明:
文件名称
文件类型
文件标识符
读权
写权
备注
MF
主文件
3F00
建立权:
MK_MF
厂商交货时已经建立
密钥文件
--
禁止
增加密钥权:
通过卡片主控密钥MK_MF采用密文+MAC方式写入密钥
DIR目录数据文件
变长记录
0001
自由
AMK_MF
自由读,写时使用卡片维护密钥进行线路保护(明文+MAC)
卡片公共信息文件
二进制文件
0015
终端信息文件
0016
DF01CPU卡应用和OBU认证目录
目录文件
DF01
擦除权:
卡片主控密钥MK_MF认证通过后可以建立和擦除文件
MK_DF01
PSAM卡应用1主控密钥MK_DF01采用密文+MAC方式写入密钥
应用公共信息文件
0017
AMK_DF01
自由读,写时使用PSAM卡应用1维护密钥AMK_DF01进行线路保护(明文+MAC)
终端应用交易号数据元
0018
不可写,COS维护
用于存储终端交易序号,由COS维护
DF02CPU卡应用和OBU认证目录
DF02
DF03CPU卡应用和OBU认证目录
DF03
MF下的卡片公共信息文件结构
文件标识
文件大小
14字节
文件存取控制
读=自由
改写=AMK_MF线路保护写(明文+MAC)
字节
数据元
长度(字节)
1-10
PSAM序列号
10
11
PSAM版本号
1
12
密钥卡类型
13-14
发卡方自定义FCI数据
2
MF下的终端信息文件结构
6字节
1-6
终端机编号
DF01下的应用公共信息文件结构
25字节
改写=AMK_DF01线路保护写(明文+MAC)
密钥索引号
2-9
发行方标识
8
10-17
应用区域标识
18-21
应用启用日期
4
22-25
应用有效日期
2密钥说明
联网电子收费PSAM卡中,除主控密钥MK存储在MF或ADF缺省的位置上外,其余所有密钥都以记录的形式存储在密钥文件中。
每一条密钥包括用途、标识/版本、算法和密钥数据等参数信息。
测试PSAM卡中包括以下几种密钥类型:
●02h:
消费密钥,能进行消费交易;
●06h:
MAC密钥,能进行MAC计算;
●08h:
MAC、加密密钥,能进行MAC和数据加密运算;
●09h:
圈存密钥,能进行圈存交易;
●19h:
MAC、解密密钥,能进行MAC和数据解密运算;
DF01下的密钥文件结构
密钥名称
密钥
用途
标识
大小
算法标识
错误
计数器
PSAM卡应用1主控密钥MK_DF01
00
10H
15
PSAM卡应用1维护密钥AMK_DF01
01
CPU卡外部认证密钥UK_DF01
48
CPU卡消费密钥1PK1
42
CPU卡消费密钥2PK2
02
CPU卡圈存密钥LK
49
OBU认证主密钥RK1
OBU加密主密钥RK2
59
03
OBU应用维护密钥AMK_OBU
46
CPU卡圈存密钥(LK)、OBU应用维护密钥(AMK_OBU)仅为方便测试而设立,只存于测试阶段的PSAM卡中。
3安全管理
3.1安全计算方法
安全计算涉及用户卡中的所有计算类型。
包括数据加密计算、普通MAC计算、消费MAC1计算和MAC2认证等。
MAC总是命令或命令响应数据域中最后一个数据元素。
3.1.1密钥分散计算方法
密钥分散通过分散因子产生子密钥。
分散因子为8字节,将一个双长度的主密钥MK,对分散数据进行处理,推导出一个双长度的子密钥DK,如图3-1和图3-2。
推导DK左半部分的方法是:
第一步:
将分散因子作为输入数据;
第二步:
将MK作为加密密钥;
第三步:
用MK对输入数据进行3DEA运算。
31推导DK左半部分
推导DK右半部分的方法是:
将分散因子求反,作为输入数据;
32推导DK右半部分
3.1.2数据加密的计算方法
按照如下方式对数据进行加密:
LD(1字节)表示明文数据的长度,在明文数据前加上LD产生新的数据块。
将该数据块分成8字节为单位的数据块,表示为BLOCK1、BLOCK2、BLOCK3、BLOCK4等。
最后的数据块有可能是1~8个字节。
如果最后(或唯一)的数据块的长度是8字节的话,转到第四步;
如果不足8字节,则在其后加入16进制数‘80’,如果达到8字节长度,则转到第四步;
否则在其后加入16进制数‘00’直到长度达到8字节。
第四步:
按照图3-2和图3-3所述的算法使用指定密钥对每一个数据块进行加密。
第五步:
计算结束后,所有加密后的数据块依照原顺序连接在一起。
33单倍长密钥DEA数据加密算法
34双倍长密钥DEA数据加密算法
3.1.3安全报文的计算方法
3.1.3.1命令安全报文中的MAC
命令安全报文中的MAC是使用命令的所有元素(包括命令头和命令数据域中的数据)来产生的。
以保证命令连同数据能够正确完整地传送,并对发送方进行认证。
此方法适用于WRITEKEY命令。
按照如下方式使用DEA加密方式产生MAC:
终端通过向IC卡发GETCHALLENGE命令获得一个4字节随机数,后补“00000000”作为初始值。
将5字节命令头(CLA,INS,P1,P2,Lc)和命令数据域中的明文或密文数据连接在一起形成数据块。
注意,这里的Lc应是数据长度加上将计算出的MAC的长度(4字节)后得到的实际长度。
将该数据块分成8字节为单位的数据块,表示为BLOCK1、BLOCK2、BLOCK3、BLOCK4等。
如果最后的数据块的长度是8字节的话,则在该数据块之后再加一个完整的8字节数据块‘8000000000000000’,转到第五步。
如果最后的数据块的长度不足8字节,则在其后加入16进制数‘80’,如果达到8字节长度,则转到第五步;
否则接着在其后加入16进制数‘00’直到长度达到8字节。
按照图3-5和图3-6所述的算法对这些数据块使用指定密钥进行加密来产生MAC。
第六步:
最终取计算结果(高4字节)作为MAC。
35安全报文中单倍长密钥MAC计算
36安全报文中双倍长密钥MAC算法
3.1.3.2交易中的MAC
此方法适用于所有命令,除WRITEKEY命令外。
此方法分二步完成。
先用指定密钥产生过程密钥;
再用过程密钥计算MAC。
将一个8字节长的初始值设定为16进制数‘0000000000000000’
将所有输入数据按指定顺序连接成一个数据块。
如果最后的数据块的长度是8字节的话,则在该数据块之后再加一个完整的8字节数据块‘8000000000000000’,转到第五步。
按照图3-7所述的算法对这些数据块使用过程密钥(单倍长度)进行加密来产生MAC。
37交易中的MAC算法
3.1.3.3双向认证中的鉴别码
此方法为交通部联网电子收费专用,鉴别码的计算方法:
a)将文件数据进行CRC计算(多项式X16+X12+X5+1,起始FFFFh),产生两字节CRC0和CRC1。
b)将送入的随机数(8bytes)最低两字节(即最左边两个字