第9部分电子收费ICC卡测试规范0126Word文档下载推荐.docx
《第9部分电子收费ICC卡测试规范0126Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第9部分电子收费ICC卡测试规范0126Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
4.2.1圈存13
4.2.2圈提14
4.2.3取现15
4.2.4消费16
4.2.5修改透支限额17
4.2.6读余额17
4.2.7取交易认证18
4.3复合消费命令18
4.3.1复合应用消费19
4.3.2更新复合应用数据缓存19
5交易状态机测试20
5.1测试目的:
20
5.2测试步骤:
6随机交易测试21
6.1测试目的:
21
6.2测试步骤:
7参数测试22
7.1基本命令22
7.1.1读二进制22
7.1.2写二进制23
7.1.3校验PIN23
7.1.4修改PIN23
7.1.5重装PIN24
7.1.6PIN解锁24
7.1.7取随机数24
7.1.8应用锁定25
7.1.9应用解锁25
7.1.10卡片锁定25
7.1.11取响应26
7.1.12选择26
8防拔插测试26
8.1概述26
8.2防拔流程27
8.2.1写二进制防拔27
8.2.2校验PIN防拔流程28
8.2.3修改PIN/重装PIN防拔流程29
8.2.4解锁PIN防拔流程30
8.2.5应用临时锁定防拔流程31
8.2.6应用解锁防拔流程32
8.2.7卡片锁定/应用永久锁定防拔流程33
1范围
本文档是根据中国金融集成电路IC卡规范的电子钱包/存折和扩展应用规范,对规定的卡片基本功能严格按照银行检测中心的检测要求进行测试。
2依据/参考的规范和文档
1)JR/T0025.4中国金融集成电路(IC)卡规范第1部分电子钱包/存折卡片规范
2)JR/T0025.4中国金融集成电路(IC)卡规范第2部分电子钱包/存折应用规范
3)JR/T0025.4中国金融集成电路(IC)卡规范第9部分电子钱包扩展应用指南
4)银行检测中心--《金融卡测试报告》
3个人化测试
3.1概述
该部分重点描述银行卡检测中心要求的个人化文件结构测试。
从建立文件的大小、权限,密钥版本、标识及文件的选择响应等方面进行限定。
个人化的建立参考附录文档《PBOC2.0检测指南.doc》。
3.2文件测试
3.2.1测试目的:
测试写入文件内容的正确性
3.2.2测试步骤:
1)选择MF,读DIR文件,应该有两条记录,其值分别为:
记录一:
701361114F09A00000000386980701500450424F43
记录二:
701361114F09A00000000386980702500450424F43
读第三条记录,应该返回6A83
2)读0015文件,比较返回的信息与写入的一致。
3)读0016文件,比较返回的信息与写入的一致。
4)选择MF,ADF1,ADF2后,比较响应FCI数据的正确性。
5)使用文件标识符选择MF、ADF和EF,应该返回6A86
●使用文件标识符选择MF,应该返回6A86
●使用文件标识符方式选择ADF1和ADF2,应该返回6A86
●使用文件标识符方式选择EF文件,应该返回6A86
3.3密钥测试
3.3.1测试目的:
测试写入的密钥:
PIN,PIN解锁密钥,PIN重装密钥,应用维护密钥,圈存,圈提,消费,修改透支限额密钥的版本,标识和值的正确性。
3.3.2测试步骤:
1)校验PIN(PIN值为1234),应该能够成功
2)将PIN锁定,使用PIN解锁密钥解锁,并校验原始PIN,应该能够成功
3)执行PIN重装命令装入新的PIN,PIN值为1233;
应该能够成功,并校验新装入的PIN
4)使用维护密钥修改0015和0016文件,应该能够成功
5)使用密钥索引为01和02的圈存密钥进行圈存初始化,返回数据中密钥版本号应该为02,算法标识应该为00;
进行圈存,应该能够成功
6)使用密钥索引为01和02的圈提密钥进行圈提初始化,返回数据中密钥版本号应该为05,算法标识应该为00;
进行圈提,应该能够成功
7)使用密钥索引为01和02的消费密钥进行消费初始化,返回数据中密钥版本号应该为01,算法标识应该为00;
进行消费,应该能够成功
8)使用密钥索引为01和02的修改透支限额密钥进行修改透支限额初始化,返回数据中密钥版本号应该为04,算法标识应该为00;
进行修改透支限额,应该能够成功
4规范规定的功能测试
该部分根据中国金融集成电路IC卡规范的要求,对规范中出现的基本功能进行详细测试,按照银行检测中心的检测要求严格限定。
4.1基本命令
根据规范要求,必须检测的APDU命令有:
1)READBINARY
2)UPDATEBINARY
3)VERIFY
4)PINCHANGE/UNBLOCK
5)RELOADPIN
6)GETCHALLENGE
7)APPLICATIONBLOCK
8)APPLICATIONUNBLOCK
9)CARDBLOCK
10)GETRESPONSE
11)SELECT
4.1.1读二进制
4.1.1.1测试目的:
READBINARY命令用于读出二进制文件的内容(或部分内容)。
4.1.1.2测试步骤:
1)正确性测试:
明文方式读的文件,采用明文方式读出,最多将读出偏移量后的所有字节或偏移量后的255个字节:
●如果偏移量后的字节超过255个,最多返回255个字节
●如果偏移量后的字节小于255个,最多返回偏移量后的所有字节
2)如果P1P2或P2指定的偏移量超过实际文件地址空间,应该返回6B00
3)执行读二进制命令LE=00,应该返回6CXX(XX是文件实际长度)
4)读不是二进制文件类型的文件时应该返回6981
5)读ID不存在的文件应该返回6A82
6)没有当前文件时,指定读当前文件应该返回6A82
4.1.2写二进制
4.1.2.1测试目的:
UPDATEBINARY命令用于更新二进制文件中的数据.根据检测要求只能使用04方式更新二进制文件。
4.1.2.2测试步骤:
使用明文+MAC方式写二进制文件应该返回9000
2)执行UPDATEBINARY使用偏移量方式写文件,应该返回9000
3)如果P1P2或P2指定的偏移量超过文件空间,应该返回6B00
4)如果P1P2或P2指定的偏移量加上要写的长度超过文件空间,应该返回6700
5)使用写二进制文件方式写记录文件,应该返回6981
6)没有取随机数,使用明文+MAC方式写文件,应该返回6984
7)明文+MAC方式写文件时,如果命令报文中的MAC连续三次不对,应用会被永久锁定
●第一次执行该命令的MAC不对,应该返回6988
●第二次执行该命令的MAC不对,应该返回6988
●第三次执行该命令的MAC不对,应该返回9303,且该应用被永久锁定
8)明文+MAC方式写文件时,命令正确运行后,应该清MAC出错的错误计数器:
●第二次正确执行该命令
●再次执行该命令的MAC不对,应该返回6988
4.1.3校验PIN
4.1.3.1测试目的:
VERIFY命令引发IC卡将命令报文数据域内的交易PIN数据和与该应用相关的参考PIN数据进行比较验证
4.1.3.2测试步骤:
使用写入的PIN值1234进行校验,应该返回9000
2)选择MF,使用1234值进行校验,应该返回9403
3)如果输入的PIN值为0~9之间的值不正确,执行该命令应该返回63CX
4)如果输入的PIN值为A-F间的值时,应该返回63CX
5)如果校验不正确,返回码的变化及口令锁定:
●第一次校验不正确,应该返回63C2
●第二次校验不正确,应该返回63C1
●第三次校验不正确,应该返回63C0
●此时,再次执行该命令,无论PIN是否正确,都应该返回6983
6)如果校验正确,应该清PIN的错误计数器:
●先错误校验一次,返回63C2
●再正确校验一次,返回9000
●再错误校验一次,应该返回63C2
●再错误校验一次,应该返回63C1
7)校验正确后,验证PIN标志位已经设置:
复位后选择应用ADF1,执行圈存交易返回6982,校验正确后,圈存交易可以执行
8)校验正确后,验证卡片的状态机为校验PIN的后续状态:
9)复位后选择ADF1,读钱包余额应该返回6982,校验正确后,再次读钱包余额,应该能够成功
10)校验不正确后,验证PIN标志位已经被清:
11)复位后选择应用ADF1,执行圈存交易返回6982,校验正确后,圈存交易可以执行,校验不正确后,执行圈存交易返回6982
12)校验不正确,验证卡片的状态机清0:
13)复位后选择ADF1,校验正确后,再次读钱包余额,应该能够成功,校验不正确后,读钱包余额应该返回6982
4.1.4修改PIN
4.1.4.1测试目的:
PINCHANGE/UNBLOCK命令用于修改PIN为新值,且同时改变Pin错误计数器的值。
4.1.4.2测试步骤:
●测试把口令从1234变为123456123456并校验
●测试把口令从123456123456变为12345612345F并校验
●测试把口令从12345612345F变为123F并校验
●测试把口令从123F变为1234并校验
2)新老口令的数据长度(数据报文域中FF字节前后的长度)都应该在2到6间,否则返回6A80,有以下几种组合情况:
●老口令长度为1,新口令长度为3
●老口令长度为7,新口令长度为3
●老口令长度为3,新口令长度为1
●老口令长度为3,新口令长度为7
●老口令长度为1,新口令长度为7
●老口令长度为7,新口令长度为1
3)新、老口令必须符合规范,否则返回6A80,有以下几种组合情况:
●老口令规范,新口令不规范
●老口令不规范,新口令规范
●老口令不规范,新口令不规范
4)老口令和新口令之间应该用FF连接,如果没有FF,返回6A80
5)如果修改正确,应该清PIN的错误次数:
先用错误的老口令修改错误一次,再修改成功,下一次再次用不正确的老口令修改时,应该返回63CX,其中X为最大错误次数减1
6)测试修改时老口令不正确的返回码变化,及口令的锁定:
●如果是第一次修改但老口令不正确,应该返回63C2
●如果是第二次修改但老口令不正确,应该返回63C1
●如果是第三次修改但老口令不正确,应该返回63C0
●如果不正确次数已达到三次,不管再次修改的老口令是否正确以及修改命令执行多少次,都应该返回6983
7)修改正确后,验证PIN标志位应该不变:
●原来已验证PIN的标志位仍为已验证:
复位后选择应用,校验口令正确后,圈存交易可以执行,修改口令成功后,圈存交易仍可以执行
●没有验证PIN的标志位仍为未验证:
复位后选择应用,执行圈存交易返回6982,修改口令成功后,执行圈存交易仍返回6982。
使用新PIN校验成功后,再执行圈存交易应该返回9000
8)老口令不正确,执行修改指令后,验证PIN标志位应该已经被清:
●复位后选择应用,校验口令正确后,圈存交易可以执行,使用错误的老口令执行修改口令后,再次执行圈存交易应该返回6982
4.1.5重装PIN
4.1.5.1测试目的:
RELOADPIN命令用于修改PIN为新值,且同时改变Pin错误计数器的值。
4.1.5.2测试步骤:
●分别选择应用ADF1和应用ADF2,正确执行PIN重装,应该能够成功
●在PIN没有被锁的情况通过该指令修改PIN:
✓从1234修改为123456123456,并校验成功
✓再修改为1234,并校验成功
✓再修改为12345612345F,并校验成功
✓再修改为123F,并校验成功
●在PIN被锁的情况通过该指令修改PIN(原口令为1234):
✓锁定口令,修改为123456123456,并校验成功
✓锁定口令,再修改为1234,并校验成功
✓锁定口令,再修改为12345612345F,并校验成功
✓锁定口令,再修改为123F,并校验成功
2)数据报文中的新口令必须符合规范,否则返回6A80
3)测试命令报文中的MAC不对,将应用永久锁定的情况:
4)此命令正确运行后,应该清重装PIN的错误计数器和PIN自身的错误计数器:
●复位选择应用,错误的校验PIN,应该返回63C2
●第三次执行正确执行该命令,再次错误的校验PIN,应该返回63C2
4.1.6PIN解锁
4.1.6.1测试目的:
PINCHANGE/UNBLOCK命令用于将锁定的PIN进行解锁,同时恢复PIN错误计数器。
4.1.6.2测试步骤:
PIN锁定后,执行PIN解锁,应该返回9000
2)PIN未被锁死的情况下,执行此命令应该返回6985
3)在没有取随机数的情况下,执行此命令应该返回6984
4)使用UNBLOCKPIN命令,数据长度为0(DES计算前第一个为00),应该返回6700
5)测试命令报文中的MAC不对,将应用永久锁定的情况:
6)测试命令报文中的PIN明文不对,将应用永久锁定的情况:
●第一次执行该命令的PIN明文不对,应该返回6988
●第二次执行该命令的PIN明文不对,应该返回6988
●第三次执行该命令的PIN明文不对,应该返回9303,且该应用被永久锁定
7)此命令正确运行后,应该清解锁PIN的错误计数器和PIN自身的错误计数器:
●PIN锁定后,第一次执行该命令的MAC不对,应该返回6988
●第三次执行正确执行该命令
●再次错误的校验PIN,应该返回63C2,直至锁死,再次执行解锁命令
4.1.7取随机数
4.1.7.1测试目的:
GETCHALLENGE命令请求一个永远全过程的随机数。
除非掉电、选择了其他应用后又发出了一个GETCHALLENGE命令,该随机数将一直有效
4.1.7.2测试步骤:
●选择MF,执行取4字节随机数,应该能够成功
●分别选择ADF1和ADF2,执行取4字节随机数,应该能够成功
●随机数在各项性能符合要求(按照FIPS1402):
✓位1的个数在9725-10275之间
✓半字节的值出现0-F的随机性在2.16-46.17之间
✓1个数据位1/0连续出现的间隔数在2315-2685之间
✓2个数据位1/0连续出现的间隔数在1114-1386之间
✓3个数据位1/0连续出现的间隔数在527-723之间
✓4个数据位1/0连续出现的间隔数在240-384之间
✓5个数据位1/0连续出现的间隔数在103-209之间
✓26个数据位1/0连续出现的次数为0
测试方法:
取2500个随机数到文件中,用测试程序中提供的工具进行分析。
●对交易初始化命令返回的随机数进行性能测试
2)随机数的使用特性测试:
●一次随机数只能提供给紧接着的下一条命令使用,取了随机数后,后面没有接着执行取执行的指令,执行了其他指令后再去执行欲执行的指令,应该返回6984:
✓取随机数,校验口令,使用该随机数执行明文+MAC写二进制0015文件,应该返回6984
✓选择应用,取随机数,校验口令,使用该随机数执行应用临时锁定,应该返回6984
✓选择应用,取随机数,校验口令,使用该随机数执行应用永久锁定,应该返回6984
✓选择应用,将应用临时锁定,取随机数,校验口令,使用该随机数执行应用解锁,应该返回6984
✓选择应用,取随机数,校验口令,使用该随机数执行卡片锁定,应该返回6984
●一次随机数只能使用一次
✓取随机数,正确执行明文+MAC写二进制0016文件,再次使用该随机数执行该命令,应该返回6984
✓选择应用,取随机数,正确执行应用临时锁定,再次使用该随机数执行应用解锁,应该返回6984
✓选择应用,取随机数,正确执行应用永久锁定,再次使用该随机数执行卡片锁定,应该返回6984
4.1.8应用锁定
4.1.8.1测试目的:
应用锁定命令执行成功后,锁定当前有效的应用。
应用临时锁定后选择应用应该返回6A81,可以通过GETRESPONSE命令获取FCI信息,应用被永久锁定应该返回9303。
4.1.8.2测试步骤:
1)复位,选择应用,执行应用临时锁定,应该可以执行成功,再次选择该应用应该返回6A81
2)继续执行应用永久锁定,同样应该可以执行成功,再次选择该应用应该返回9303
3)应用已被临时锁定时,再次执行应用临时锁定命令应该返回9000
4)应用临时锁定后,执行选择该应用的指令,虽然返回6A81,但仍可以紧接着通过取响应指令得到正常选择该应用的FCI,取出全部响应的返回码为9000
5)测试命令报文中的MAC不对,导致应用永久锁定的情况:
6)执行此命令前应该先从卡取随机数,否则返回6984
7)应用临时锁定后,在该应用下只能执行取随机数、应用解锁、应用临时锁定、应用永久锁定、卡片锁定这四条命令,执行其他命令均返回6985,
8)应用永久锁定后,执行选择该应用的指令,应该返回9303且无法通过取响应指令得到该应用的FCI,执行取响应返回9303
9)应用永久锁定后,在该应用下只能执行取随机数、卡片锁定这两条命令,执行其他命令均返回9303
10)被临时锁定的应用,可以通过应用解锁命令将此应用解锁
11)被永久锁定的应用,无法通过应用解锁命令将此应用解锁
4.1.9应用解锁
4.1.9.1测试目的:
APPLICATIONUNBLOCK命令执行成功后,解锁当前锁定的应用。
4.1.9.2测试步骤:
1)应用临时锁定后执行应用解锁,应该返回9000
2)应用永久锁定后执行应用解锁,应该返回9303
3)应用没有被锁定时,执行此命令,应该返回6985
4)执行此命令前必须产生随机数,否则返回6984
5)执行应用解锁命令正确后,应该清解锁错误计数器:
●应用临时锁定后,第一次执行该命令的MAC不对,应该返回6988
●第三次执行正确执行该命令,该应用被解锁,再次将应用临时锁定后
4.1.10卡片锁定
4.1.10.1测试目的:
CARDBLOCK命令成功后,应用环境被锁定,执行任何命令都应该返回6A81
4.1.10.2测试步骤:
1)卡片锁定后,应该无法执行所有命令,皆返回6A81
2)执行此命令前必须先取随机数,否则返回6984
3)执行该指令时MAC不对,应该返回6988,错误任意次后仍应该返回6988
4.1.11取响应命令
4.1.11.1测试目的:
当APDU不能用现有协议传输时,GETRESPONSE命令提供了一种从卡片向接口设备传送APDU(或APDU的一部分)的传输方法。
4.1.11.2测试步骤:
应用没有锁定,选择MF和ADF,应该返回61XX,执行GETRESPONSE命令取出FCI应该可以成功。
2)读二进制时指定P3=00,返回6CXX(XX是实际长度)
3)交易指令:
如圈存初始化、圈存、修改透支初始化、修改透支、圈提初始化、圈提、消费初始化、消费、取现初始化、取现、灰锁初始化、灰锁、联机解扣初始化、联机解扣、解扣、取交易认证,返回61XX后执行取响应应该返回9000
4)执行部分取响应应该返回数据+61XX(XX是剩余长度)
5)没有响应,执行取响应命令应该返回6F00
6)应用锁定后,选择应用返回6A81,执行GETRESPONSE命令应该取出FCI
4.1.12选择
4.1.12.1测试目的:
选择命令通过文件名或AID来选择IC卡中的PSE、DDF或ADF,成功执行该命令设定PSE、DDF或ADF的路径。
后续命令作用于与用SFI选定的PSE、DDF或ADF相联系的AEF。
从IC卡返回的应答报文包含回送FCI。
4.1.12.2测试步骤:
●使用DF文件名称选择应用:
✓选择MF,应