1、1第七章 智能卡安全技术关键技术身份鉴别报文鉴别数据加密数字签名主要内容7.1 密钥管理系统7.2 智能卡的安全访问机制7.3 智能卡防拔插处理 7.4 智能卡的安全使用7.5 安全操作相关的基本命令7.1 密钥管理系统1.何为密钥管理?密钥管理是一门综合性的技术,它涉及密钥的产生、检验、分配、传递、保管和使用。2.密钥管理系统层次结构 基本思想:用密钥保护密钥 用第i层的密钥Ki来保护第i+1层密钥Ki+1 Ki本身也受到第i1层密钥Ki-1的保护 下层的密钥可按某种协议不断变化;密钥管理系统是动态变化的(1)三层密钥管理系统的结构(2)三层密钥管理系统的举例 设采用对称密码体制 主密钥 在
2、智能卡和读写器中存放相同的主密钥 子密钥 主密钥对某些指定的数据加密后生成子密钥主密钥子密钥会话密钥 如:每张卡的芯片制造商的标识码的序列号或应用序列号是不相同的,且都设置在IC卡内,因此可利用序列号进行加密生成子密钥;会话密钥 用子密钥对可变数据进行加密,加密的结果即为会话密钥(或过程密钥)。一个会话密钥仅使用一次。如:用子密钥对交易时间或命令计数器进行加密生成会话密钥,这样即使是同一张卡,每次使用时的会话密钥就不同,或做不同的操作,会话密钥也不同。3.主密钥的生成主密钥可由几个可信任的人彼此独立提出的数据组合成一个密钥,然后对随机数进行加密运算而获得,这样主密钥的生成和变化规律就很难估计。
3、4.主密钥的下载IC卡中主密钥的下载 主密钥下载是在专门设备上进行的,下载的环境是安全的;但要保证IC卡上的触点的信息不能被窃取,主密钥下载后,不能再读出,这由硬件(熔丝)和软件(COS卡内操作系统)来保证读写器中主密钥的下载 读写器内部没有COS,不能保证主密钥不被读出,常采用安全存取模块SAM,密钥下载到SAM模块中,加密/解密算法也在SAM中进行。7.2 智能卡的安全访问机制1.鉴别与核实2.安全报文传送3.文件访问的安全控制4.数字签名/认证1.鉴别与核实鉴别(Authentication)指的是对智能卡(或者是读写设备)的合法性的验证,即是如何判定一张智能卡(或读写设备)不是伪造的卡
4、(或读写设备)的问题;核实(verify)是指对智能卡的持有者的合法性的验证,也就是如何判定一个持卡人是否经过了合法的授权的问题。读写器鉴别IC卡的真伪(内部认证)读写器生成随机数N,并向卡发内部认证指令(Internal Authentication),将随机数送卡;卡对随机数N加密成密文M(密钥已存在卡和读写器中),并将M送读写器;读写器将M解密成明文N1;读写器将明文N1和原随机数N比较,相同则读写器认为卡是真的。IC卡鉴别读写器的真伪(外部认证)读写器向卡发生成随机数命令卡产生随机数N,并送读写器;读写器对随机数加密成密文M(密钥已存在卡和读写器中);读写器向卡发外部认证命令(Exte
5、rnal Authentication),并将密文M送卡;卡将密文M解密成明文N1,并将明文N1和原随机数N比较,相同则卡认为读写器是真的。鉴别核实方法 验证个人识别号PIN(personal identification number);生物特征;下意识特征;PINPIN(Personal Identification Number)个人识别号是IC卡中的保密数据。功能:保证只有合法持卡人才能使用该卡或卡中的某一项或几项功能,以防止拾到该卡的人恶意使用或非法伪造。错误计数器:用以记录、限制PIN输入错误的次数PIN的类型全局PIN(Global PIN)处于系统的较高层次(如主文件)中,一旦
6、因错误计数溢出等原因自锁,也同时锁住使用该PIN的其他应用层次。局部PIN(Local PIN)处于某一具体应用层次中,一旦因错误计数溢出等原因自锁,则仅锁住该应用层次。PIN功能简单汇总表功 能简单IC卡复杂IC卡(如CPU卡)PIN无或有有PIN数量一个若干个PIN位数较短较长/可自定义(如18位十进制数)PIN输入错误限制次数 较少(如3次)较长/可自定义(如115次)全局/局部PIN否是可修改性等其他属性否是个人解锁码(PUC)否是PUC:Personal Unblocking CodePIN明码识别读卡器与卡间以明码传输,在IC卡内部完成PIN的鉴别用户终端机智能卡键入PIN发“持卡
7、人认证”指令,并提交PIN码该PIN卡内所存密码?PIN是返回错误代码继续其他操作否PIN密码识别生物识别生物识别技术就是依靠人体的身体特征来进行身份验证的技术,例如语音、掌纹、面孔、虹膜、视网膜、骨架和指纹上述人体特征都具有终生不变的稳定性和人人不同的特定性,这决定了它们可以作为个人身份鉴定的可靠依据。其中指纹识别是最流行、最方便以及最可靠的个人身份认证方法之一。GO指纹识别的特点具有唯一性和稳定性避免记忆众多而又复杂的口令便于获取指纹样本,实用性强一个人的十指指纹皆不相同,可以方便地利用多个指纹构成多重口令,提高系统的安全性,同时并不增加设计负担指纹识别中使用的模板并非最初的指纹图,而是由
8、图中提取的关键特征,这样减少了模板库的存储量,便于网络传输指纹在IC卡中的身份识别指纹智能卡读卡器生物识别的缺点需要较大的存储容量技术实现比较复杂费用较高7.2 智能卡的安全访问机制1.鉴别与核实2.安全报文传送3.文件访问的安全控制4.数字签名/认证2.安全报文传送在信息交换过程中保证信息的完整性和保密性完整性:保证所交换的内容不被非法修改。(利用MAC)保密性:防止非授权者窃取所交换的信息。(利用密码技术对信息加密处理)2.1 完整性的保证采用报文鉴别为鉴别所交换的信息内容未被非法修改,在信息报文中加入报头/尾(即鉴别码)。由读卡器对报文内容进行某种运算得出鉴别码1。将鉴别码1和报文一起传
9、输到智能卡,智能卡再用约定算法对报文进行运算得出鉴别码2,将两个鉴别码比较。相等,接受 不相等,拒收并报警鉴别码通常被简写为MAC(Message Authentication Code,报文鉴别码)鉴别算法 DSA算法 DES算法(目前常用)3DES算法(目前常用)1、鉴别算法DSA算法DSA(decimal shift and add)算法由Sievi1980年提出(1)DSA算法 在收发双方同时利用两个十位长的任选的十进制数b1和b2,作为密钥。将被鉴别的信息看成十进制数串,然后分组,十位一组。每次运算(加法)取一组,两个运算流并行进行,直到所有信息组运算完毕。(2)DSA算法举例 用R
10、(X)D表示对D循环右移X位,如D1234567890,则R(3)D8901234567。用S(X)D表示相加之和:S(3)D R(3)DD(mod1010)。其中:R(3)D8901234567 D1234567890S(3)D=0135802457 假设信息M1583492637 52835869,鉴别码的计算如下:1.先将信息分成十位一组,最后一组不足十位时补0;即:m1=1583492637,m2=5283586900;2.任选密钥:b1=5236179902,b2=4893524771;3.两个运算流同时运算。运算流1运算流2m1 1583492637m1 1583492637 b1
11、 5236179902 b2 4893524771 R(4)p=2539681967p=6819672539q=6477017408 R(5)q=1740864770 S(4)p=9359354506 S(5)q=8217882178 m2 5283586900 m2 5283586900 R(8)u=4294140646u=4642941406v =3501469078 R(2)v=7835014690 S(8)p=8937082052 S(2)q=1336483768 m3 m3 .至此,两组信息组运算完毕,得到两个十位长的十进制数,再组合一下,将它们按模1010相加。S(8)p=8937
12、082052 S(2)q=1336483768 0273565820鉴别码鉴别码2、鉴别算法DES算法以TimeCOS/PK为例(规定MAC的长度为4个字节),介绍MAC的生成方法:第一步:终端向智能卡发出一个Get Challenge命令,从智能卡回送的4字节随机数后缀以00 00 00 00,所得到的结果作为初始值。第二步:按照顺序将以下数据连接在一起形成数据块:CLA,INS,P1,P2,Lc+4,Data(注必须置CLA的后半字节为4;在命令的数据域中(如果存在)包含明文或加密的数据)第三步:将该数据块分成8字节为单位的数据块,标号为D1,D2,D3等,最后的数据块有可能是1-8个字节
13、。第四步:如果最后的数据块长度是8字节的话,则在其后加上16进制数字80 00 00 00 00 00 00 00,转到第五步。如果最后的数据块长度不足8字节的话,则在其后加上16进制数字80,如果达到8字节长度,则转入第五步;否则在其后加入16进制数字0直到长度达到8字节。第五步:对这些数据块使用相应的密钥进行加密。根据密钥的长度采用Single DES或Triple DES。第六步:最终得到是从计算结果左侧取得的4字节长度的MAC。Single DES密钥产生MACTriple DES密钥产生MAC2.2 保密性保证加密/解密利用密码技术对信息进行加密处理,以掩盖真实信息,到达保密的目的。
14、一般采用传统的DES算法或3DES算法 DES算法 加密过程:C=EK(DK(EK(M)解密过程:M=DK(EK(DK(C)3DES算法 加密过程:C=EKL(DKR(EKL(M)解密过程:M=DKL(EKR(DKL(C)以TimeCOS/PK为例,介绍数据加密/解密计算 当传输报文中的某一部分重要的明文数据需要加密时,它将要被格式化成为以下形式的数据块:明文数据的长度(LD),不包括填充字符明文数据填充字符数据加密计算 第一步:用LD表示明文数据的长度,在明文数据前加上LD产生的新数据块。第二步:将第一步中生成的数据块分解成8字节数据块,标号为D1,D2,D3等等。最后一个数据块的长度有可能
15、不足8位。第三步:如果最后(或唯一)的数据块长度等于8字节,转入第四步;如果不足8字节,在右边添加16进制数字80。如果长度已达8字节,转入第四步;否则,在其右边添加1字节16进制数字0直到长度达到8字节。第四步:对每个数据块用相应的密钥进行加密。第五步:计算结束后,所有加密后的数据块依照原顺序连接在一起(加密后的D1,加密后的D2,等等)。并将结果数据块插入到命令数据域中。用Single DES密钥进行数据加密的算法用Triple DES密钥进行数据加密的算法数据解密计算 第一步:将命令数据域中的数据块分解成8字节长的数据块,标号为D1,D2,D3,D4等等。第二步:对每个数据块使用与数据加
16、密相同的密钥进行解密。第三步:计算结束后,所有解密后的数据块依照顺序(解密后的D1,解密后的D2,等等)链接在一起。数据块由LD,明文数据,填充字符组成。第四步:因为LD表示明文数据的长度,因此,它被用来恢复明文数据。用Single DES密钥进行数据解密的算法用Triple DES密钥进行数据解密的算法2.3 TimeCOS/PK中的安全报文传送1、实现理念2、实现方式3、安全报文传送的命令情况4、应用举例1、实现理念完整性保护 对传输的数据附加4字节MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受机密性保护 对传输的数据进行DES加密,这样传输的就是密文,攻击者即使获得数据
17、也没有意义机密性和完整性保护 此种方式最安全,对传输的数据进行DES加密,后对传输的数据附加4字节MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受2、实现方式如对文件进行安全报文传送,只需在建立文件时改变文件类型字节高两位即可。b7b6b5b4b3b2b1b0线路保护方式00文件类型无10文件类型MAC(线路保护)11文件类型DES&MAC(线路加密保护)例如:某二进制文件(文件类型为28),若希望对该文件进行线路保护,则在建立文件时将文件类型更改为:A8(0010 10001010 1000)举例举例如对密钥进行安全报文传送(使用Write Key,Verify等),只需在安
18、装密钥时改变密钥类型字节高两位即可。b7 b6 b5 b4 b3 b2 b1 b0线路保护方式00密钥类型无01密钥类型DES(加密保护)11密钥类型DES&MAC(线路加密保护)例如:某密钥(密钥类型为39),若希望对该密钥进行线路加密保护,则在安装该密钥时将密钥类型更改为:F9(0011 10011111 1001)3、安全报文传送的命令情况情形1 没有数据送到卡中,也没有数据从卡中返回 不含安全报文的命令 含安全报文的命令注:CLA字节的低4字节必须是04 Lc=4(MAC的长度)情形2 没有数据送到卡中,但有数据从卡中返回 不含安全报文的命令 含安全报文的命令注:CLA字节的低4字节必
19、须是04;Lc=4(MAC的长度)情形3 有数据送到卡中,但没有数据从卡中返回 不含安全报文的命令 含安全报文的命令注:CLA字节的低4字节必须是04情形4 有数据送到卡中,也有数据从卡中返回 不含安全报文的命令 含安全报文的命令注:CLA字节的低4字节必须是044、应用举例命令:写二进制文件(Update Binary)维护密钥值:57415443484441544154696D65434F53 条件:文件标识符=0003;文件主体空间=8字节 建立时采用线路加密保护(DES&MAC)操作:写二进制文件,写入数据:1122334455667788步骤1取4字节随机数,计算MAC用 命令:00
20、 84 00 00 04 响应:46 4E 84 AF 90 00步骤2写二进制文件,写入数据11 22 33 44 55 66 77 88 命令:04 D6 83 00 14 68 7E 0F 83 F6 A9 85 80 C4 01 5C EB 8D 00 F3 8B 1C AB E2 B9 说明:68 7E 0F 83 F6 A9 85 80 C4 01 5C EB 8D 00 F3 8B为使用维护密钥对数据08 11 22 33 44 55 66 77 88 80 00 00 00 00 00 00加密后的结果;1C AB E2 B9为使用维护密钥生成的4字节MAC码。响应:90 00
21、7.2 智能卡的安全访问机制1.鉴别与核实2.安全报文传送3.文件访问的安全控制4.数字签名/认证3.文件访问的安全控制1、安全状态2、安全属性3、应用实例1、安全状态是指卡当前所处的一种安全级别卡的主控目录或者当前应用目录分别有16种不同的安全状态,对应0F的16个值下列情况可能影响到相应的安全状态 卡片上电复位后 卡片中所记录的所有安全状态都被清除,这时卡片处于最低级别的安全状态 外部认证命令External Authentication PIN校验命令Verify Pin 在卡内,PIN和外部认证密钥都有自己的后续状态,一旦个人身份鉴别和外部认证通过,当前目录的安全状态便被设定为该PIN
22、或者密钥的后续状态 正确选择DF后 执行Select File指令,正确选择MF或DF后,相应的安全寄存器被复位为02、安全属性是指对某个文件或者文件的一部分进行某种操作时必须达到的状态有时称访问权限,是在文件创立时指定的。由一个状态区间来描述每种文件的访问权限在建立文件(Create File)时用一个字节指定;每种密钥的访问权限在增加密钥(Write Key)时用一个字节指定文件类型访问权限MF/DF建立/擦除KEY文件增加KEY文件中的密钥使用/更改公钥/私钥文件使用/更改/读二进制文件读/写记录文件读/写普通钱包文件读&扣款/存款电子存折/电子钱包文件使用以TimeCOS/PK为例,文
23、件和密钥主要存在如下访问权限假设当前安全状态寄存器的值用V来表示访问权限为0Y时,表示需满足VY方可进行访问 例 如某文件读的权限为05 表示在对该文件进行读之前必须使MF的安全状态寄存器的值大于等于5访问权限为XY 时(X不为0)表示需满足XVY方可进行访问 (注:当XY时表示禁止相应的操作)例1 如某文件写的权限为53表示对该文件进行写之前必须使当前目录的安全状态寄存器的值为3、4或5 例2 某文件读权限为F0,写权限为F1 代表可任意读取,写时必须满足当前目录的安全状态寄存器的值大于等于1。假设在对某文件进行读操作之前,要求必须先通过个人身份鉴别。一种可行的办法是:将PIN的使用权限设为
24、10,后续状态定为2,而文件的读权限定为22执行步骤 卡上电复位,安全状态被清除 满足PIN密钥的使用权限10,执行Verify Pin 指令,至此,安全状态V=2 V=2满足文件的读权限22H,允许对文件进行读操作3、应用实例预设环境 MF下有4个二进制文件,其访问权限分别为F0、94、23和52 MF下的KEY文件中有一个PIN密钥,其值为1122334455667788,后续状态为77操作 在验证PIN前后分别对4个文件进行读操作安全属性(访问权限)分析 EF1:F0 EF2:94 EF3:23 EF4:52预期结果(PIN验证后,安全状态变为7)EF1:EF2:EF3:EF4:永远都满
25、足,可任意读写不可读写安全属性需属于2,5才可读写永远都不满足,禁止读写安全属性需属于4,9才可读写不可读写可读写可读写实现步骤 插卡,卡片上电(无安全状态)在MF下的KEY EF中添加PIN密钥 建立4个EF文件 读取4个EF文件的内容 选择MF文件(安全状态变为0)读取4个EF文件的内容 验证PIN(安全状态变为7)读取4个EF文件的内容7.2 智能卡的安全访问机制1.鉴别与核实2.安全报文传送3.文件访问的安全控制4.数字签名/认证4.数字签名/认证基本概念数字签名/认证的过程如何在智能卡中实现数字签名1、数字签名数字签名是建立在公钥体制基础上的一种服务数字签名必须保证以下3点:接收者能
26、够对报文发送者的签名进行认证 发送者事后不能抵赖对报文的签名 任何人都不能伪造其他人的签名数字签名的一般过程 “私钥加密(签名),公钥解密(验证)”数字签名过程原文原文签名签名存在的问题 要签名数据的大小是任意的,最终签名的大小也是任意的。解决办法 引入单向散列算法(HASH)2、HASH算法单向散列函数也称HASH函数,作用在一任意长度的消息M上,返回一个固定长度的散列值hh=H(M)(设h的长度为m)HASH函数具有如下的特性:给定M,很容易计算出h;给定h,根据h=H(M),计算M很难;给定M,要找到另一消息M并满足H(M)=H(M)很难两种典型的HASH算法 MD5算法 可以产生128
27、位的散列结果 SHA算法 也叫做安全散列算法,可以产生160位的散列结果。3、数字签名/验证过程数字签名过程 签名者通过HASH函数把原文变成固定大小 签名者用私钥对散列结果加密,生成数字签名签名验证过程 验证者获得原文和签名 验证者通过HASH函数把原文变成固定大小 验证者将签名解密,并用解密结果和计算出的散列结果进行比较,如果相同,签名有效,否则,验证失败,签名无效SKA是指发送方A的私钥,PKA是指与SKA相对应的A的公钥。提出问题如何得到签名者的公钥?4、数字/签名/公钥证书公钥证书:认证机构CA通过对一个包含身份信息和相应公钥的数据结构进行数字签名来捆绑用户的公钥和身份。这个数据结构
28、被称为公钥证书证书验证包括如下内容:验证CA在证书上的签名 证书有良好的完整性,即:证书上的数字签名 证书在有效期内签名证书通常遵照X.509标准制成,必须含有下列信息:版本号:表示证书的版本 序列号:由证书颁发者分配的证书的唯一标识符 签名密钥持有人的名字 签名算法标识符:用于说明本证书所用的数字签名算法 主体公钥信息 证书的开始有效和终止日期提出问题如何将智能卡与数字签名联系起来?解决问题实现数字签名卡5、数字签名卡的优点CPU卡特有的硬件制造工艺可以抵御物理、电子、化学方法的攻击体积小,便于携带COS可以防止攻击者利用软件方式窃取卡内的机密信息存储在卡中的私钥绝对安全。自动锁定保护总之,
29、CPU卡是存储私钥和数字证书的理想介质。6、数字签名卡的实现实现条件及要求 智能卡支持某非对称密码算法(RSA、ECC等)智能卡文件系统中需有公钥文件和私钥文件以TimeCOS/PK为例说明数字签名卡的实现过程 TimeCOS/PK支持SHA-1算法和RSA算法 可在卡内生成1024位RSA密钥对命令操作一般流程 相关指令相关指令7.3 智能卡防拔插处理若智能卡正在对卡片的用户数据进行修改(如执行创建文件指令,更新EF文件的内容等)时,持卡人突然将卡从读写器中拔出或移开,或者读写器由于某种原因突然掉电,都有可能造成数据更新操作中断,从而造成卡内用户数据出错。为了保证数据的完整性,COS本身应该
30、具备处理这种突发事件的能力,也就是具有防拔插处理的能力。掉电保护机制 在COS主程序中,首先要判断掉电标志位,如果标志位为0 x01,说明上一条命令没有执行成功,程序将首先恢复备份数据。将备份区清空,将掉电标识复位3种意外状况:1)在步骤3之前发生断电 无影响2)在步骤3-5之间发生断电 进入数据安全写恢复流程3)在步骤5之后发生断电 无影响数据备份举例数据备份举例数据备份格式示例在创建文件的时候留出一定大小的区域,用来备份数据。备份项数数据地址数据长度数据内容数据地址数据长度数据内容1字节2字节1字节2字节1字节数据安全写恢复流程7.4 智能卡的安全使用 IC卡使用时,要与读写器相互确认,以
31、防止伪卡或插错卡。使用过程:1.插卡:读写器向卡加电,并发复位信号,令卡初始化,做好交易准备,卡发出应答信号ATR;2.读写器鉴别卡的真伪;3.卡鉴别读写器的真伪;4.检查卡是否列入黑名单;5.鉴别持卡人的身份:通常采用密码比较的方法,即由持卡人输入密码,与卡内密码比较;6.检查上次交易是否完成,未完成,卡应有自动恢复数据的功能;7.根据应用需求进行交易;8.拔卡。7.5 安全操作相关的基本命令基本安全命令 6.5.1 Verify PIN(验证口令)6.5.2 Unblock(解锁口令)6.5.3 Get Challenge(取随机数)6.5.4 External Authenticatio
32、n(外部认证)6.5.5 Internal Authentication(内部认证)7.5 安全操作相关的基本命令RSA算法相关命令 6.5.6 Generate RSA Key(生成公私钥对)6.5.7 Data Compress(数据压缩)6.6.5 Data Encrypt(数据加密)6.5.9 Data Decrypt(数据解密)6.5.10 Digital Signatures(数字签名)6.5.11 Signatures Verify(签名验证)7.5.1 Verify PIN(验证口令)1、命令功能描述 用于校验命令数据域的口令密钥正确性。在满足口令密钥的使用权限时才可执行该命令
33、。若口令验证成功,则系统安全状态寄存器的值被置成该密钥的后续状态,同时口令错误计数器被置成初始值 若验证错误,则口令可试次数减1,若口令已被锁死,则不能再执行该命令。当口令长度为8字节时,可用Unblock命令对其进行解锁。2、命令报文格式代码长度(byte)值(Hex)描述CLA100/04-INS120-P1100-P21XX口令密钥标识号Lc102-08-DATA02-08XXXX外部输入的口令密钥Le-不存在说明:密钥标识在Write Key时给出3、响应报文数据 不存在4、响应报文状态码 90 00 63 CX 还剩X次可试机会 当卡片回送63C0时,表示不能重试口令密钥,此时再使用
34、Verify PIN命令时,将回送失败状态码6983(认证方法锁死)5、命令使用示例1 预设环境 正确的PIN值为11 22 33 44,设其密钥标识号为01,错误计数器值为33 命令报文1:APDU:00 20 00 01 04 11 22 33 44 响应报文1:90 00 错误计数器值:33 命令报文2 APDU:00 20 00 01 04 11 22 33 33 响应报文2:63 C2 错误计数器值:32 命令报文3 APDU:00 20 00 01 04 11 22 33 44 响应报文3:90 00 错误计数器值:335、命令使用示例2 预设环境 正确的PIN值为11 22 33
35、 44,设其密钥标识号为01,错误计数器值为33 命令报文1 APDU:00 20 00 01 04 11 22 33 44 响应报文1:90 00 错误计数器值:33 命令报文2 APDU:00 20 00 01 04 11 22 33 33 响应报文2:63 C2 错误计数器值:32 命令报文3 APDU:00 20 00 01 04 11 22 22 22 响应报文3:63 C1 错误计数器值:31 命令报文4 APDU:00 20 00 01 04 11 11 11 11 响应报文4:63 C0 错误计数器值:30 命令报文5 APDU:00 20 00 01 04 44 33 22
36、11 响应报文5:69 83 错误计数器值:307.5.2 Unblock(解锁口令)1、命令功能描述 用于解锁被锁定的8字节的口令 只有满足该解锁口令使用条件且该解锁口令未被锁死时才能执行此命令,该命令不改变安全状态 若解锁口令核对成功,则新口令取代原有口令,且将口令错误计数器和解锁口令错误计数器恢复成原始值 若解锁口令失败,则解锁口令可再试次数减1,如果解锁口令锁死,解锁口令无法再被解锁。2、命令报文格式3、响应报文数据 不存在4、响应报文状态码 略代码长度(byte)值(Hex)描述CLA180-INS12C-P1100-P21XX解锁口令密钥标识Lc110-DATA16XXXX8字节解
37、锁口令+8字节新口令Le-不存在5、命令使用示例 预设环境 某PIN密钥被锁,要求用密钥标识号为06的口令解锁密钥进行解锁(新口令为01 02 03 04 05 06 07 08),解锁密钥使用权=0 xF0、更改权=0 xEF、错误计数器=0 x33、8字节解锁口令=11 22 33 44 55 66 77 88 命令报文 APDU:80 2C 00 06 10 11 22 33 44 55 66 77 88 01 02 03 04 05 06 07 08 响应报文 90 007.5.3 Get Challenge(取随机数)1、命令功能描述 请求一个用于安全相关过程(如安全报文)的随机数2
38、、命令报文格式代码长度(byte)值(Hex)描述CLA100-INS184-P1100-P2100-Lc1-不存在DATA16-不存在Le104-10要求卡片返回的随机数长度3、响应报文数据 随机数,长度为Le个字节4、响应报文状态码 略5、命令使用示例 略7.5.4 Internal Authentication(内部认证)1、命令功能描述 提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据认证的功能。在满足该密钥的使用条件时才能执行此命令 参看流程图2、内部认证过程 内部认证是读卡器对卡片的认证,认证过程如下图所示:终端方向卡片产生1个8字节随机数RNDIFD送RNDIFD作内部
39、认证用指定的DES加密密钥对随机数RNDIFD进行DES加密运算,产生鉴别数据D1。即:D1=DES(K,RNDIFD)送D1用与卡片DES加密密钥相同密钥对RNDIFD进行DES解密运算,产生D2,后比较D1和D2。即:1)D2=DES-1(K,RNDIFD)2)D1?=D23、命令报文格式代码长度(byte)值(Hex)描述CLA100-INS188-P1100加密01解密02计算MACP21XXDES密钥标识号Lc1XX-DATAXXXX.XX认证数据Le100-说明:P1=00表示进行加密运算,密钥类型是DES加密密钥 P1=01表示进行解密运算,密钥类型是DES解密密钥 P1=02表
40、示进行MAC运算,密钥类型是DES&MAC密钥4、响应报文数据 相关认证数据,即DES运算的结果。5、响应报文状态码 略6、命令使用示例1 预设环境 密钥标识号=01;密钥类型是DES加密密钥;使用权限=0 xF0;更改权限=0 xEF,16字节密钥为“57415443484441544154696D65434F53”;读卡器产生的随机数为“1122334455667788”命令报文APDU:00 88 00 01 08 11 22 33 44 55 66 77 88 响应报文 07 CB F6 15 E7 D7 2F 96 90 00DES加密结果BACK TO 鉴别鉴别7、命令使用示例2
41、预设环境 密钥标识号=01;密钥类型为DES解密密钥;使用权限=0 xF0;更改权限=0 xEF,16字节密钥为“57415443484441544154696D65434F53”;待解密数据为“07CBF615E7D72F96”命令报文 APDU:00 88 01 01 08 07 CB F6 15 E7 D7 2F 96 响应报文 11 22 33 44 55 66 77 88 90 008、命令使用示例3 预设环境 密钥标识号=01;密钥类型为DES&MAC解密密钥;使用权限=0 xF0;更改权限=0 xEF,16字节密钥为“57415443484441544154696D65434F5
42、3”;待计算MAC数据=“1122334455667788”命令报文 APDU:00 88 02 01 08 11 22 33 44 55 66 77 88 响应报文 87 56 E2 85 90 00 说明:“87 56 E2 85”是MAC计算结果,计算MAC的8字节初始值是“0000000000000000”7.5.5 External Authentication(外部认证)1、命令功能描述 IC卡验证读卡器的真伪 在满足该外部认证密钥的使用权限且该密钥未被锁死时才可执行该命令 将命令中的数据用指定外部认证密钥解密,然后与先前产生的随机数进行比较 若一致则表示认证通过 若不一致则认证失
43、败 参看流程图2、外部认证过程 外部认证是卡片对读卡器的认证,认证过程如下:终端方向卡片取8字节随机数产生1个8字节随机数RNDICC送随机数RNDICC用与卡片认证密钥相同密钥对RNDICC进行DES加密运算,产生D1,即:D1=DES(K,RNDIFD)送D1作外部认证用指定的外部认证密钥对D1进行DES解密运算,产生鉴别数据D2。,后比较D2和RNDICC。即:1)D2=DES-1(K,RNDIFD)2)D2?=RNDICC送比较结果(SW1SW2),若为9000,则置安全状态寄存器值为该密钥后续状态3、命令报文格式代码长度(byte)值(Hex)描述CLA100-INS182-P110
44、0-P21XX外部认证密钥标识号Lc18-DATA8XXXX8字节加密后的随机数Le-说明:若认证通过,置安全状态寄存器为该密钥规定的后续状态值,错误计数器恢复成初始值;若认证失败,可再试错误数减1,且不改变安全状态寄存器的值4、响应报文数据 不存在5、响应报文状态码 略6、命令使用示例 预设环境 外部认证密钥标识号=01;使用权限=0 xF0;更改权限=0 xEF;错误计数器=0 x33;后续状态=11;16字节密钥为“57415443484441544154696D65434F53”;BACK TO 鉴别鉴别 命令报文 步骤1取8字节随机数。APDU:00 84 00 00 08 响应:D
45、3 89 BF 67 45 B9 35 50 90 00 步骤2读卡器用与外部认证密钥相同的密钥“57 41 54 43 48 44 41 54 41 54 69 6D 65 43 4F 53”对随机数进行加密,加密后的结果为C2 A8 5B 4B 13 40 25 21 步骤3读卡器将加密后的随机数送到卡中作外部认证 APDU:00 82 00 00 08 C2 A8 5B 4B 13 40 25 21 响应:90 00 说明:成功执行后置安全状态寄存器值为该外部认证密钥的后续状态17.5.6 Generate RSA Key(生成公私钥对)1、命令功能描述 该命令用于卡片自动生成模长为10
46、24位的RSA密钥对,根据P1、P2参数的不同,决定私钥是回送出来还是存于由P2指定的私钥文件中2、命令报文格式代码 长度(byte)值(Hex)描述CLA180-INS1CE-P1100-P21XX私钥文件标识符Lc-不存在DATA-不存在Le100-说明:P2=00时,私钥回送给终端,否则,私钥存于由P1、P2指定的文件标识的私钥文件中。3、响应报文数据 公钥(包括模数n和公开指数e)若P2=00时,响应报文还包括私钥(包括q,d mod(q-1)、p、d mod(p-1)、q-1 mod p)响应报文将以TLV格式送出,T定义如下:T(Hex)含义6E模数n65公开指数e70素数p71素
47、数q50私钥指数d mod(q-1)51私钥指数d mod(p-1)49q-1 mod p4、响应报文状态码 略5、命令使用示例 略7.5.7 Data Compress(数据压缩)1、命令功能描述 用安全散列算法SHA-1将数据压缩为20个字节,用RSA签名或验证时使用2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1CC-P1P22XXXX见说明Lc1XX-DATAXXXXXX待压缩数据Le114-说明:若数据总长度小于138字节,直接对该数据进行压缩;否则以64字节为一块重复执行此命令进行分块压缩,压缩结果由最后一块数据产生。3、响应报文数据 当进行单块数据压缩时
48、,响应报文是20字节HASH结果 当进行分块数据压缩时,除对最后一块数据压缩,卡片只回送90 00,并不返回压缩结果,只有对最后一块数据进行压缩时,卡片才返回压缩结果。4、响应报文状态码 略5、命令使用示例1 预设环境 对长度为64字节的数据(0串)进行压缩,输入数据不需保留 命令报文 APDU:80 CC 40 40 40 DATA(DATA表示64个字节的0)响应报文 C8 D7 D0 EF 0E ED FA 82 D2 EA 1A A5 92 84 5B 9A 6D 4B 02 B7 90 006、命令使用示例2 预设环境:对长度为160(64+64+32)字节的数据(0串)进行压缩,将
49、输入数据保留在卡内 命令报文1 APDU:80 CC 3F FF 40 DATA1(64个字节的0)响应报文1:90 00 命令报文2 APDU:80 CC BF FF 40 DATA2(64个字节的0)响应报文2:90 00 命令报文3 APDU:80 CC 80 A0 20 DATA3(32个字节的0)响应报文3:97 97 ED F8 D0 EE D3 6B 1C F9 25 47 81 60 51 C8 AF 4E 45 EE 90 007.5.8 Data Encrypt(数据加密)1、命令功能描述 用非对称密码算法RSA的公钥对数据进行加密 在满足该公钥文件的使用权限时才能执行此命
50、令2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1C6-P1P22XX XX公钥文件标识符Lc1XX-DATAXXXXXX需要加密的数据Le180说明:1)P1P2=0000时,表示用卡内临时公钥对数据进行加密。该临时公钥由Data Compress命令分批送入。2)在进行数据加密之前,COS会对加密数据进行编码,后对编码数据进行加密运算。编码数据EM=00|BT|PS|00|D BT=02,表示为数据加密。PS为不小于8字节的随机数 D:待加密数据(加密数据最大长度为117字节)3、响应报文数据 由加密后的密文组成4、响应报文状态码 略5、命令使用示例 略7.5.9