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