第11部分电子收费PSAM卡测试规范0126Word格式文档下载.docx
《第11部分电子收费PSAM卡测试规范0126Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第11部分电子收费PSAM卡测试规范0126Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
5.6.3INITSAMFORPURCHASE(计算MAC1)12
5.6.4CREDITSAMFORPURCHASE(校验MAC2)12
5.7随机数测试13
5.7.1GETCHALLENGE13
6.防拔功能测试14
6.1概述14
6.2写二进制防拔流程15
6.3应用临时锁定防拔流程16
6.4应用解锁防拔流程17
6.5卡片锁定/应用永久锁定防拔流程18
6.6WRITEKEY防拔流程19
6.7PURCHASE(校验MAC2)防拔流程20
1.概述
本测试规范基于<
<
示范性工程PSAM卡应用命令接口>
>
,对于PSAM卡片支持的应用命令进行测试。
2.依据/参考的规范和文档
1)《收费公路联网收费技术要求》
2)《联网电子收费PSAM卡应用指南》
3)《JR/T0025-2005中国金融集成电路(IC)卡规范》
3.范围
本文档规定了基于电子收费PSAM卡片支持的应用命令和文件结构进行测试,主要包括以下几个方面:
1)卡片的文件结构
2)规范规定的基本指令功能
3)卡片防拔测试
4.PSAM卡片文件结构
4.1文件结构
4.2文件结构测试
对于检测指南中规定的文件进行测试,检查每个文件内容与写入的一致。
4.2.1DIR文件
4.2.1.1测试目的
DIR文件是MF下的目录文件,读写权限为自由,检查返回数据内容的正确性。
4.2.1.2测试方法
测试步骤:
1)选择MF,读DIR文件应该返回
记录一:
701361114F09A00000000386980701500450424F43
记录二:
701361114F09A00000000386980702500450424F43
读第三条记录,应该返回6A83
2)LE=00,应该返回6C15
5.基本指令功能
5.1概述
本文档规定了基于电子收费PSAM卡片规定了一些智能卡必须遵守的基本功能要求,本章主要就是逐个指令描述应该实现的功能和要求。
本章描述的指令包括:
1)文件读写相关的指令:
●READBINARY
●UPDATEBINARY
2)应用安全相关指令:
●APPLICATIONBLOCK
●APPLICATIONUNBLOCK
●CARDLOCK
●RELOADPIN
●GETCHALLENGE
3)文件选择相关指令:
●SELECTFILE
●GETREPONSE
4)密钥管理:
●CHANGEKEY
●WRITEKEY
5)PSAM卡专有命令:
●CIPHERDATA
●DELIVERYKEY
●INITSAMFORPURCHASE
●CREDITSAMFORPURCHASE
5.2文件读写相关命令
5.2.1READBINARY
5.2.1.1测试目的
READBINARY命令用于读出二进制文件的内容(或部分内容)。
5.2.1.2测试方法
测试步骤:
1)正确性测试:
●明文方式读的二进制文件,可以使用明文方式读出,也可以使用明文+MAC方式读出,此方式读出时,通过取响应返回的报文中不包含MAC
●明文+MAC方式读的二进制文件,使用明文+MAC方式读出时,通过取响应返回的报文中最后四个字节为MAC
2)明文方式读的文件,采用明文方式读出,最多将读出偏移量后的所有字节或偏移量后的255个字节:
●如果偏移量后的字节超过255个,最多返回255个字节
●如果偏移量后的字节小于255个,最多返回偏移量后的所有字节
3)明文方式读的文件,采用明文+MAC方式读出,最多将读出偏移量后的所有字节或偏移量后的255个字节:
4)明文+MAC方式读的文件,采用明文+MAC方式读出,最多将读出偏移量后的所有字节或偏移量后的读通信区长度(RLEN)-4个字节
●如果偏移量后的字节超过RLEN-4个,最多返回RLEN-4个字节
●如果偏移量后的字节小于RLEN-4个,最多返回偏移量后的所有字节
●命令返回61XX,如果取响应的长度小于XX,应该返回6CXX
5)读不是二进制文件类型的文件时应该返回6981
6)读ID不存在的文件应该返回6A82
7)没有当前文件时,指定读当前文件应该返回6A82
8)如果P1P2或P2指定的偏移量超出文件范围,应该返回6B00
9)如果P1P2或P2指定的偏移量加上要读的长度超过实际文件地址空间,应该返回6CXX
10)在没有取随机数的情况下,使用带MAC方式执行此命令时(CLA=04)时,应该返回6984
11)使用校验方式读文件时,如果命令报文中的MAC不正确应该返回6988
5.2.2UPDATEBINARY
5.2.2.1测试目的
UPDATEBINARY命令用于更新二进制文件中的数据
5.2.2.2测试方法
分别使用明文方式,密文方式,校验方式,校验加密方式写文件,应该可以成功
2)测试文件更新的影响,执行该命令后,文件内容应该只改变了从偏移量开始的数据明文长度的内容:
●明文方式写的二进制文件
●密文方式写的二进制文件
●校验方式写的二进制文件
●校验加密方式写的二进制文件
3)写不是二进制文件类型的文件时应该返回6981
4)写ID不存在的文件应该返回6A82
5)没有当前文件时,指定写当前文件应该返回6A82
6)如果P1P2或P2指定的偏移量超出文件范围,应该返回6B00
7)如果P1P2或P2指定的偏移量加上要写的长度超过实际文件地址空间,应该返回6700
8)在没有取随机数的情况下,使用带MAC方式执行此命令时(CLA=04),应该返回6984
9)使用加密方式执行修改二进制,MAC不正确应该返回6988
5.3应用安全相关命令
5.3.1APPLICATIONBLOCK
5.3.1.1测试目的
应用锁定命令执行成功后,锁定当前有效的应用。
应用临时锁定后选择应用应该返回6A81,可以通过GETRESPONSE命令获取FCI信息,应用被永久锁定应该返回9303。
5.3.1.2测试方法
1)复位,选择应用,执行应用临时锁定,应该可以执行成功,再次选择该应用应该返回6A81
2)继续执行应用永久锁定,同样应该可以执行成功,再次选择该应用应该返回9303
3)应用已被临时锁定时,再次执行应用临时锁定命令应该返回9000
4)应用临时锁定后,执行选择该应用的指令,虽然返回6A81,但仍可以紧接着通过取响应指令得到正常选择该应用的FCI,取出全部响应的返回码为9000
5)测试命令报文中的MAC不对,导致应用永久锁定的情况:
●第一次执行该命令的MAC不对,应该返回6988
●第二次执行该命令的MAC不对,应该返回6988
●第三次执行该命令的MAC不对,应该返回9303,且该应用被永久锁定
6)执行此命令前应该先从卡取随机数,否则返回6984
7)应用临时锁定后,在该应用下只能执行取随机数、应用解锁、应用临时锁定、应用永久锁定、卡片锁定这四条命令,执行其他命令均返回6985,
8)应用永久锁定后,执行选择该应用的指令,应该返回9303且无法通过取响应指令得到该应用的FCI,执行取响应返回9303
9)应用永久锁定后,在该应用下只能执行取随机数、卡片锁定这两条命令,执行其他命令均返回9303
10)被临时锁定的应用,可以通过应用解锁命令将此应用解锁
11)被永久锁定的应用,无法通过应用解锁命令将此应用解锁
5.3.2APPLICATIONUNBLOCK
5.3.2.1测试目的
APPLICATIONUNBLOCK命令执行成功后,解锁当前锁定的应用。
5.3.2.2测试方法
1)应用临时锁定后执行应用解锁,应该返回9000
2)应用永久锁定后执行应用解锁,应该返回9303
3)应用没有被锁定时,执行此命令,应该返回6985
4)执行此命令前必须产生随机数,否则返回6984
5)执行应用解锁命令正确后,应该清解锁错误计数器:
●应用临时锁定后,第一次执行该命令的MAC不对,应该返回6988
●第三次执行正确执行该命令,该应用被解锁,再次将应用临时锁定后
5.3.3CARDLOCK
5.3.3.1测试目的
CARDBLOCK命令成功后,应用环境被锁定,执行任何命令都应该返回6A81
5.3.3.2测试方法
1)卡片锁定后,应该无法执行所有命令,皆返回6A81
2)执行此命令前必须先取随机数,否则返回6984
3)执行该指令时MAC不对,应该返回6988,错误任意次后仍应该返回6988
5.4文件选择相关指令
5.4.1SELECTFILE
5.4.1.1测试目的
SELECTFILE命令通过文件标识或应用名选择IC卡中的MF、DDF、ADF或EF文件
5.4.1.2测试方法
1)选择MF/DDF/ADF通过取响应返回响应报文采用TLV格式
下表定义了成功选择DDF后回送的FCI:
标签
值
存在性
‘6F’
FCI模板
M
‘84’
DF名
‘A5’
FCI数据专用模板
‘88’
目录基本文件的SFI
‘9F0C’
FCI文件内容
O
下表定义了成功选择ADF后回送的FCI:
2)密钥文件,存折文件应该不能被选择,选择此类文件时应该返回6A86
3)应用被临时锁定时,选择应用应该返回6A81
4)应用被永久锁定时,选择应用应该返回9303
5.4.2GETREPONSE
5.4.2.1测试目的
当APDU不能用现有协议传输时,GETRESPONSE命令提供了一种从卡片向接口设备传送APDU(或APDU的一部分)的传输方法。
5.4.2.2测试方法
应用没有锁定,选择MF和ADF,应该返回61XX,执行GETRESPONSE命令取出FCI应该可以成功。
2)读二进制时指定P3=00,返回6CXX(XX是实际长度)
3)执行部分取响应应该返回数据+61XX(XX是剩余长度)
4)没有响应,执行取响应命令应该返回6F00
5)应用锁定后,选择应用返回6A81,执行GETRESPONSE命令应该取出FCI
5.5密钥管理
5.5.1WRITEKEY
5.5.1.1测试目的
WRITEKEY命令用于向卡片装载或更新密钥。
5.5.1.2测试方法
1)UPTDATEKEY命令的正确性
●执行该命令P2=00更新主控密钥,密钥长度是8字节或者16字节都应该可以成功。
●执行该命令P2=FF更新其他密钥,密钥长度是8字节或者16字节都应该可以成功。
2)执行该命令密钥信息是明文应该返回6A80
3)执行该命令MAC不正确,应该返回6988
4)执行该命令LC长度不正确,应该返回6700
5)执行该命令更新不存在的密钥,应该返回6A88
6)没有执行取随机数应该返回6984
5.6PSAM卡专有命令
5.6.1DELIVERYKEY
5.6.1.1测试目的
DELIVERYKEY命令时用于将指定的KEY分散至临时密钥寄存器,该命令只支持分散KEY,不产生过程KEY。
分散后的子KEY继承原始KEY的属性。
5.6.1.2测试方法
1)该命令在应用没有锁定且已经写入密钥的情况下执行应该返回9000。
2)主控密钥,维护密钥,消费密钥不支持DES初始化,应该返回6989
3)执行DES初始化时,P1的高三位与LC的长度不匹配时,应该返回6A80,有以下几种情况:
●P1的高三位为0,LC长度为8
●P1的高三位为1,LC长度为0或10
4)执行DELIVERYKEY如果LC不是8的倍数,应该返回6700
5)执行DELIVERYKEY密钥标识符不存在应该返回9403
6)应用临时锁定后执行DELIVERYKEY应该返回6985
7)应用永久锁定后执行DELIVERYKEY应该返回9303
8)卡片锁定后执行DELIVERYKEY应该返回6a81.
5.6.2CIPHERDATA
5.6.2.1测试目的
CIPHERDATA命令用于对输入数据进行安全计算
5.6.2.2测试方法
1)执行DELIVERYKEY命令成功后,执行该命令应该返回9000。
●P1=05时计算MAC的正确性
●P1=08时计算MAC的正确性
2)P1=08时执行该命令LC的长度大于等于9字节都应该返回9000。
3)执行CIPHERDATA前必须成功执行DELIVERYKEY,并且两条命令之间不能插入其他命令,否则返回6901。
4)P1=05时执行该命令LC的长度不是8的倍数应该返回6700。
5)P1=05/08时执行该命令LC的长度小于9字节应该返回6700。
5.6.3INITSAMFORPURCHASE(计算MAC1)
5.6.3.1测试目的
INITSAMFORPURCHASE命令支持三级消费密钥分散机制,并产生MAC1。
5.6.3.2测试方法
1)在应用没有锁定的情况下使用密钥版本01和02的消费密钥进行计算,应该返回9000
2)执行MAC1计算命令时,密钥分散级别与数据不符,应该返回6a80.
3)密钥版本不正确应该返回9403
4)消费密钥算法标识不正确,应该返回6a80
5)应用被永久锁定后,执行计算MAC1命令,应该返回9303
6)卡片锁定后,执行计算MAC1命令,应该返回6A81。
5.6.4CREDITSAMFORPURCHASE(校验MAC2)
5.6.4.1测试目的
CREDITSAMFORPURCHASE命令利用INITSAMFORPURCHASE命令产生的过程密钥SESPK校验MAC2。
MAC2校验失败,计算MAC2的KEY限制计数器减一,并回送状态码’63Cx’。
当KEY限制计数器减为0值时,锁定当前应用,可通过应用维护密钥解锁锁定应用。
CREDITSAMFORPURCHASE命令成功后,SAM卡将应用中的消费交易序号加1。
5.6.4.2测试方法
●复位,选择应用
●MAC1计算
●校验MAC2,同时终端交易序号自动加1
2)没有成功执行INITSAMFORPURCHASE,直接执行PURCHASE应该返回6901
3)测试校验MAC2不正确的返回码变化及密钥的锁定
●如果是第一次不正确,应该返回63C2
●如果是第二次不正确,应该返回63C1
●如果是第三次不正确,应该返回63C0
●如果不正确的次数达到三次,不管下一次校验MAC2是否成功以及重复多少次,都应该返回6985。
此时消费密钥所在的应用应该被临时锁定了
●执行应用解锁命令应该返回9000。
执行校验MAC2失败,应该返回63c2。
4)如果校验MAC2正确,应该清计数器的错误次数:
先执行校验MAC2失败,在执行校验MAC2成功,下一次再用不正确的MAC2进行校验,应该返回63CX,其中X为最大错误次数减1
5)应用被永久锁定后,执行计算MAC2命令,应该返回9303
6)卡片锁定后,执行计算MAC2命令,应该返回6A81。
5.7随机数测试
5.7.1GETCHALLENGE
5.7.1.1测试目的
GETCHALLENGE命令请求一个永远全过程的随机数。
除非掉电、选择了其他应用后又发出了一个GETCHALLENGE命令,该随机数将一直有效。
5.7.1.2测试方法
可以取4个字节或8个字节的随机数
2)执行随机数长度不是4或8字节应该返回6700
3)分析随机数的使用特性:
取随机数后,选择其他应用后,执行了其他指令后再去执行欲执行的指令,应该返回6984:
●取随机数,执行选择应用后,使用该随机数执行明文+MAC写二进制文件,应该返回6984
●取随机数,执行选择应用后,使用该随机数执行明文+MAC写记录文件,应该返回6984
●取随机数,执行选择应用后,使用该随机数执行明文+MAC读二进制文件,应该返回6984
●取随机数,执行选择应用后,使用该随机数执行明文+MAC读记录文件,应该返回6984
●选择应用,取随机数,执行选择应用后,使用该随机数执行UPDATEKEY命令,应该返回6984
4)随机数在各项性能符合要求(按照FIPS1402):
●取2500个随机数到文件中,用测试程序中提供的工具进行分析
6.防拔功能测试
6.1概述
卡片必须在命令处理过程中的任何情况下,甚至在更新EEPROM过程中掉电的情况下,保持数据的完整性。
因此需要在每次更新数据前对数据进行备份,并且在重新加电后自动地触发恢复机制。
一旦卡片确认更新数据完成,备份数据被丢弃。
6.2写二进制防拔流程
使用明文+MAC写二进制,每次写入的明文数据长度为19H。
6.3应用临时锁定防拔流程
6.4应用解锁防拔流程
6.5卡片锁定/应用永久锁定防拔流程
6.6WRITEKEY防拔流程
6.7PURCHASE(校验MAC2)防拔流程