文档详情

智能卡安全技术

M****1
实名认证
店铺
PPT
1.02MB
约148页
文档ID:592500795
智能卡安全技术_第1页
1/148

第六章 智能卡安全技术1《智能卡安全技术》PPT课件 关键技术身份鉴别报文鉴别数据加密数字签名 主要内容6.1 密钥管理系统6.2 智能卡的安全访问机制6.3 智能卡防拔插处理 6.4 智能卡的安全使用6.5 安全操作相关的基本命令 6.1 密钥管理系统1. 何为密钥管理? 密钥管理是一门综合性的技术,它涉及密钥的产生、检验、分配、传递、保管和使用 2.密钥管理系统——层次结构 基本思想:用密钥保护密钥–用第i层的密钥Ki来保护第i+1层密钥Ki+1–Ki本身也受到第i-1层密钥Ki-1的保护–下层的密钥可按某种协议不断变化;–密钥管理系统是动态变化的 (1)三层密钥管理系统的结构(2)三层密钥管理系统的举例š 设采用对称密码体制š 主密钥–在智能卡和读写器中存放相同的主密钥š 子密钥–主密钥对某些指定的数据加密后生成子密钥主密钥子密钥会话密钥①①②②③③ –如:每张卡的芯片制造商的标识码的序列号或应用序列号是不相同的,且都设置在IC卡内,因此可利用序列号进行加密生成子密钥;š 会话密钥–用子密钥对可变数据进行加密,加密的结果即为会话密钥(或过程密钥)一个会话密钥仅使用一次。

–如:用子密钥对交易时间或命令计数器进行加密生成会话密钥,这样即使是同一张卡,每次使用时的会话密钥就不同,或做不同的操作,会话密钥也不同 3. 主密钥的生成主密钥可由几个可信任的人彼此独立提出的数据组合成一个密钥,然后对随机数进行加密运算而获得,这样主密钥的生成和变化规律就很难估计 4. 主密钥的下载IC卡中主密钥的下载–主密钥下载是在专门设备上进行的,下载的环境是安全的;–但要保证IC卡上的触点的信息不能被窃取,主密钥下载后,不能再读出,这由硬件(熔丝)和软件(COS卡内操作系统)来保证 读写器中主密钥的下载–读写器内部没有COS,不能保证主密钥不被读出,常采用安全存取模块SAM,密钥下载到SAM模块中,加密/解密算法也在SAM中进行 6.2 智能卡的安全访问机制6.2.1 鉴别与核实6.2.2 安全报文传送6.2.3 文件访问的安全控制6.2.4 数字签名/认证 6.2.1 鉴别与核实鉴别(Authentication)指的是对智能卡(或者是读写设备)的合法性的验证,即是如何判定一张智能卡(或读写设备)不是伪造的卡(或读写设备)的问题;核实(verify)是指对智能卡的持有者的合法性的验证,也就是如何判定一个持卡人是否经过了合法的授权的问题。

读写器鉴别IC卡的真伪(内部认证)读写器生成随机数N,并向卡发内部认证指令(Internal Authentication), 将随机数送卡;卡对随机数N加密成密文M(密钥已存在卡和读写器中),并将M送读写器;读写器将M解密成明文N1;读写器将明文N1和原随机数N比较,相同则读写器认为卡是真的 IC卡鉴别读写器的真伪(外部认证)读写器向卡发生成随机数命令卡产生随机数N,并送读写器;读写器对随机数加密成密文M(密钥已存在卡和读写器中);读写器向卡发外部认证命令(External Authentication),并将密文M送卡;卡将密文M解密成明文N1,并将明文N1和原随机数N比较,相同则卡认为读写器是真的 鉴别 核实方法–验证个人识别号PIN(personal identification number);–生物特征;–下意识特征; PINPIN(Personal Identification Number)个人识别号是IC卡中的保密数据功能:保证只有合法持卡人才能使用该卡或卡中的某一项或几项功能,以防止拾到该卡的人恶意使用或非法伪造错误计数器:用以记录、限制PIN输入错误的次数 PIN的类型全局PIN(Global PIN) 处于系统的较高层次(如主文件)中,一旦因错误计数溢出等原因自锁,也同时锁住使用该PIN的其他应用层次。

局部PIN(Local PIN) 处于某一具体应用层次中,一旦因错误计数溢出等原因自锁,则仅锁住该应用层次 PIN功能简单汇总表功 能简单IC卡复杂IC卡 (如CPU卡)PIN无或有有PIN数量一个若干个PIN位数较短较长/可自定义(如1~8位十进制数)PIN输入错误限制次数较少(如3次)较长/可自定义(如1~15次)全局/局部PIN否是可修改性等其他属性否是个人解锁码(PUC) 否是PUC: Personal Unblocking Code PIN明码识别•读卡器与卡间以明码传输,在IC卡内部完成PIN的鉴别 PIN密码识别 生物识别生物识别技术就是依靠人体的身体特征来进行身份验证的技术,例如语音、掌纹、面孔、虹膜、视网膜、骨架和指纹上述人体特征都具有终生不变的稳定性和人人不同的特定性,这决定了它们可以作为个人身份鉴定的可靠依据其中指纹识别是最流行、最方便以及最可靠的个人身份认证方法之一 GO 指纹识别的特点具有唯一性和稳定性避免记忆众多而又复杂的口令便于获取指纹样本,实用性强一个人的十指指纹皆不相同,可以方便地利用多个指纹构成多重口令,提高系统的安全性,同时并不增加设计负担指纹识别中使用的模板并非最初的指纹图,而是由图中提取的关键特征,这样减少了模板库的存储量,便于网络传输 指纹在IC卡中的身份识别指纹智能卡读卡器 生物识别的缺点需要较大的存储容量技术实现比较复杂费用较高 6.2 智能卡的安全访问机制6.2.1 鉴别与核实6.2.2 安全报文传送6.2.3 文件访问的安全控制6.2.4 数字签名/认证 6.2.2 安全报文传送在信息交换过程中保证信息的完整性和保密性完整性:保证所交换的内容不被非法修改。

利用MAC)保密性:防止非授权者窃取所交换的信息利用密码技术对信息加密处理) 6.2.2.1 完整性的保证-采用报文鉴别为鉴别所交换的信息内容未被非法修改,在信息报文中加入报头/尾(即鉴别码)–由读卡器对报文内容进行某种运算得出鉴别码1–将鉴别码1和报文一起传输到智能卡,智能卡再用约定算法对报文进行运算得出鉴别码2,将两个鉴别码比较•相等,接受•不相等,拒收并报警 鉴别码通常被简写为MAC(Message Authentication Code,报文鉴别码)鉴别算法–DSA算法–DES算法(目前常用)–3DES算法(目前常用) 1、鉴别算法-DSA算法DSA (decimal shift and add)算法由Sievi1980年提出 (1)DSA算法–在收发双方同时利用两个十位长的任选的十进制数b1和b2,作为密钥–将被鉴别的信息看成十进制数串,然后分组,十位一组–每次运算(加法)取一组,两个运算流并行进行,直到所有信息组运算完毕 (2)DSA算法举例– 用R(X)D表示对D循环右移X位,如D=1234567890,则R(3)D=8901234567– 用S(X)D表示相加之和: S(3)D= R(3)D+D(mod1010)。

其中:R(3)D=8901234567+ D=1234567890S(3)D = 0135802457 假设信息M=1583492637 52835869,鉴别码的计算如下:1.先将信息分成十位一组,最后一组不足十位时补0;2. 即:m1= 1583492637, 3. m2= 5283586900;4.2. 任选密钥: b1= 5236179902, 5. b2= 4893524771;6.3. 两个运算流同时运算 运算流1运算流2m1 1583492637m1 1583492637+ b1 52+ b2 48+ 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= 8937082052 + 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个字节–第四步:如果最后的数据块长度是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密钥产生MAC Triple DES密钥产生MAC 6.2.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为例,介绍数据加密/解密计算–当传输报文中的某一部分重要的明文数据需要加密时,它将要被格式化成为以下形式的数据块:Ø明文数据的长度(LD) ,不包括填充字符Ø明文数据Ø填充字符 数据加密计算–第一步:用LD表示明文数据的长度,在明文数据前加上LD产生的新数据块–第二步:将第一步中生成的数据块分解成8字节数据块,标号为D1,D2,D3等等。

最后一个数据块的长度有可能不足8位–第三步:如果最后(或唯一)的数据块长度等于8字节,转入第四步;如果不足8字节,在右边添加16进制数字‘80’如果长度已达8字节,转入第四步;否则,在其右边添加1字节16进制数字‘0’直到长度达到8字节 –第四步:对每个数据块用相应的密钥进行加密–第五步:计算结束后,所有加密后的数据块依照原顺序连接在一起(加密后的D1,加密后的D2,等等)并将结果数据块插入到命令数据域中 •用Single DES密钥进行数据加密的算法 •用Triple DES密钥进行数据加密的算法 数据解密计算–第一步:将命令数据域中的数据块分解成8字节长的数据块,标号为D1,D2,D3,D4等等–第二步:对每个数据块使用与数据加密相同的密钥进行解密–第三步:计算结束后,所有解密后的数据块依照顺序(解密后的D1,解密后的D2,等等)链接在一起数据块由LD,明文数据,填充字符组成–第四步:因为LD表示明文数据的长度,因此,它被用来恢复明文数据 •用Single DES密钥进行数据解密的算法 •用Triple DES密钥进行数据解密的算法 6.2.2.3 TimeCOS/PK中的安全报文传送1、实现理念2、实现方式3、安全报文传送的命令情况4、应用举例 1、实现理念完整性保护–对传输的数据附加4字节MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受机密性保护–对传输的数据进行DES加密,这样传输的就是密文,攻击者即使获得数据也没有意义机密性和完整性保护–此种方式最安全,对传输的数据进行DES加密,后对传输的数据附加4字节MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受 2、实现方式•如对文件进行安全报文传送,只需在建立文件时改变文件类型字节高两位即可。

b7b6b5b4b3b2b1b0线路保护方式00文件类型无10文件类型MAC(线路保护)11文件类型DES&MAC(线路加密保护)•例如:某二进制文件(文件类型为28),若希望对该文件进行线路保护,则在建立文件时将文件类型更改为: A8(0010 10001010 1000)举例举例 •如对密钥进行安全报文传送(使用Write Key,Verify等),只需在安装密钥时改变密钥类型字节高两位即可b7 b6 b5 b4 b3 b2 b1 b0线路保护方式00密钥类型无01密钥类型DES(加密保护)11密钥类型DES&MAC(线路加密保护)•例如:某密钥(密钥类型为39),若希望对该密钥进行线路加密保护,则在安装该密钥时将密钥类型更改为: F9(0011 10011111 1001) 3、安全报文传送的命令情况•情形1 没有数据送到卡中,也没有数据从卡中返回–不含安全报文的命令–含安全报文的命令注:CLA字节的低4字节必须是04 Lc=4 ( MAC的长度) •情形2 没有数据送到卡中,但有数据从卡中返回–不含安全报文的命令–含安全报文的命令注:CLA字节的低4字节必须是04;Lc=4 (MAC的长度) •情形3 有数据送到卡中,但没有数据从卡中返回–不含安全报文的命令–含安全报文的命令注:CLA字节的低4字节必须是04 •情形4 有数据送到卡中,也有数据从卡中返回–不含安全报文的命令–含安全报文的命令注:CLA字节的低4字节必须是04 4、应用举例命令:写二进制文件(Update Binary)–维护密钥值:57415443484441544154696D65434F53–条件:•文件标识符=0003;•文件主体空间=8字节•建立时采用线路加密保护( DES&MAC )–操作: 写二进制文件,写入数据:1122334455667788 [步骤1]取4字节随机数,计算MAC用–命令:00 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 6.2 智能卡的安全访问机制6.2.1 鉴别与核实6.2.2 安全报文传送6.2.3 文件访问的安全控制6.2.4 数字签名/认证 6.2.3 文件访问的安全控制1、安全状态2、安全属性3、应用实例 1、安全状态是指卡当前所处的一种安全级别卡的主控目录或者当前应用目录分别有16种不同的安全状态,对应0~F的16个值下列情况可能影响到相应的安全状态–卡片上电复位后 卡片中所记录的所有安全状态都被清除,这时卡片处于最低级别的安全状态 –外部认证命令External Authentication–PIN校验命令Verify Pin 在卡内,PIN和外部认证密钥都有自己的后续状态,一旦个人身份鉴别和外部认证通过,当前目录的安全状态便被设定为该PIN或者密钥的后续状态–正确选择DF后 执行Select File指令,正确选择MF或DF后,相应的安全寄存器被复位为0 2、安全属性•是指对某个文件或者文件的一部分进行某种操作时必须达到的状态•有时称访问权限,是在文件创立时指定的由一个状态区间来描述•每种文件的访问权限在建立文件(Create File)时用一个字节指定;每种密钥的访问权限在增加密钥(Write Key)时用一个字节指定 文件类型访问权限MF/DF建立/擦除KEY文件增加——KEY文件中的密钥使用/更改公钥/私钥文件使用/更改/读二进制文件读/写记录文件读/写普通钱包文件读&扣款/存款电子存折/电子钱包文件使用•以TimeCOS/PK为例,文件和密钥主要存在如下访问权限 假设当前安全状态寄存器的值用V来表示访问权限为‘0Y’时,表示需满足V≥Y方可进行访问 [例] 如某文件读的权限为05 表示在对该文件进行读之前必须使MF的安全状态寄存器的值大于等于5访问权限为XY 时(X不为0 )表示需满足X≥V≥Y方可进行访问 (注:当X

假设在对某文件进行读操作之前,要求必须先通过个人身份鉴别一种可行的办法是: 将PIN的使用权限设为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:永远都满足,可任意读写不可读写安全属性需属于[2,5]才可读写永远都不满足,禁止读写安全属性需属于[4,9]才可读写不可读写可读写可读写 实现步骤–插卡,卡片上电(无安全状态)–在MF下的KEY EF中添加PIN密钥–建立4个EF文件–读取4个EF文件的内容–选择MF文件(安全状态变为0)–读取4个EF文件的内容–验证PIN(安全状态变为7)–读取4个EF文件的内容 6.2 智能卡的安全访问机制6.2.1 鉴别与核实6.2.2 安全报文传送6.2.3 文件访问的安全控制6.2.4 数字签名/认证 6.2.4 数字签名/认证基本概念数字签名/认证的过程如何在智能卡中实现数字签名 1、数字签名数字签名是建立在公钥体制基础上的一种服务数字签名必须保证以下3点:–接收者能够对报文发送者的签名进行认证–发送者事后不能抵赖对报文的签名–任何人都不能伪造其他人的签名数字签名的一般过程 “私钥加密(签名),公钥解密(验证)” 数字签名过程原文原文签名签名存在的问题–要签名数据的大小是任意的,最终签名的大小也是任意的。

解决办法–引入单向散列算法(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函数把原文变成固定大小–验证者将签名解密,并用解密结果和计算出的散列结果进行比较,如果相同,签名有效,否则,验证失败,签名无效 SKA是指发送方A的私钥,PKA是指与SKA相对应的A的公钥 提出问题如何得到签名者的公钥? 4、数字/签名/公钥证书公钥证书:认证机构CA通过对一个包含身份信息和相应公钥的数据结构进行数字签名来捆绑用户的公钥和身份这个数据结构被称为公钥证书证书验证包括如下内容:–验证CA在证书上的签名–证书有良好的完整性,即:证书上的数字签名–证书在有效期内 签名证书通常遵照X.509标准制成,必须含有下列信息:–版本号:表示证书的版本–序列号:由证书颁发者分配的证书的唯一标识符–签名密钥持有人的名字–签名算法标识符:用于说明本证书所用的数字签名算法–主体公钥信息–证书的开始有效和终止日期 提出问题如何将智能卡与数字签名联系起来?解决问题实现数字签名卡 5、数字签名卡的优点CPU卡特有的硬件制造工艺可以抵御物理、电子、化学方法的攻击体积小,便于携带COS可以防止攻击者利用软件方式窃取卡内的机密信息存储在卡中的私钥绝对安全。

自动锁定保护总之,CPU卡是存储私钥和数字证书的理想介质 6、数字签名卡的实现实现条件及要求–智能卡支持某非对称密码算法(RSA、ECC等)–智能卡文件系统中需有公钥文件和私钥文件以TimeCOS/PK为例说明数字签名卡的实现过程–TimeCOS/PK支持SHA-1算法和RSA算法–可在卡内生成1024位RSA密钥对 •命令操作一般流程 相关指令相关指令 6.3 智能卡防拔插处理若智能卡正在对卡片的用户数据进行修改(如执行创建文件指令,更新EF文件的内容等)时,持卡人突然将卡从读写器中拔出或移开,或者读写器由于某种原因突然掉电,都有可能造成数据更新操作中断,从而造成卡内用户数据出错为了保证数据的完整性,COS本身应该具备处理这种突发事件的能力,也就是具有防拔插处理的能力 掉电保护机制 在COS主程序中,首先要判断掉电标志位,如果标志位为‘0x01’,说明上一条命令没有执行成功,程序将首先恢复备份数据 将备份区清空,将掉电标识复位①③②④⑤3种意外状况:1)在步骤3之前发生断电 无影响2)在步骤3-5之间发生断电 进入数据安全写恢复流程3)在步骤5之后发生断电 无影响数据备份举例数据备份举例 数据备份格式示例•在创建文件的时候留出一定大小的区域,用来备份数据。

备份项数数据地址数据长度数据内容数据地址数据长度数据内容…1字节2字节1字节…2字节1字节…… 数据安全写恢复流程 6.4 智能卡的安全使用 IC卡使用时,要与读写器相互确认,以防止伪卡或插错卡使用过程:1. 插卡:读写器向卡加电,并发复位信号,令卡初始化,做好交易准备,卡发出应答信号ATR;2. 读写器鉴别卡的真伪;3. 卡鉴别读写器的真伪;4. 检查卡是否列入黑名单; 5. 鉴别持卡人的身份:通常采用密码比较的方法,即由持卡人输入密码,与卡内密码比较;6. 检查上次交易是否完成,未完成,卡应有自动恢复数据的功能;7. 根据应用需求进行交易;8. 拔卡 6.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(内部认证) 6.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(签名验证) 6.5.1 Verify PIN(验证口令)1、命令功能描述–用于校验命令数据域的口令密钥正确性。

–在满足口令密钥的使用权限时才可执行该命令–若口令验证成功,则系统安全状态寄存器的值被置成该密钥的后续状态,同时口令错误计数器被置成初始值–若验证错误,则口令可试次数减1,若口令已被锁死,则不能再执行该命令–当口令长度为8字节时,可用Unblock命令对其进行解锁 2、命令报文格式代码长度(byte)值(Hex)描述CLA100/04-INS120-P1100-P21XX口令密钥标识号Lc102-08-DATA02-08XX…XX外部输入的口令密钥Le--不存在说明:密钥标识在Write Key时给出3、响应报文数据–不存在 4、响应报文状态码–90 00–63 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 错误计数器值: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 APDU:00 20 00 01 04 44 33 22 11–响应报文5:69 83 错误计数器值:30 6.5.2 Unblock(解锁口令)1、命令功能描述–用于解锁被锁定的8字节的口令–只有满足该解锁口令使用条件且该解锁口令未被锁死时才能执行此命令,该命令不改变安全状态–若解锁口令核对成功,则新口令取代原有口令,且将口令错误计数器和解锁口令错误计数器恢复成原始值–若解锁口令失败,则解锁口令可再试次数减1,如果解锁口令锁死,解锁口令无法再被解锁。

2、命令报文格式3、响应报文数据–不存在4、响应报文状态码–略代码长度(byte)值(Hex)描述CLA180-INS12C-P1100-P21XX解锁口令密钥标识Lc110-DATA16XX…XX8字节解锁口令+8字节新口令Le--不存在 5、命令使用示例–预设环境 某PIN密钥被锁,要求用密钥标识号为06的口令解锁密钥进行解锁(新口令为01 02 03 04 05 06 07 08),解锁密钥使用权=0xF0、更改权=0xEF、错误计数器=0x33、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 6.5.3 Get Challenge(取随机数)1、命令功能描述–请求一个用于安全相关过程(如安全报文)的随机数2、命令报文格式代码长度(byte)值(Hex)描述CLA100-INS184-P1100-P2100-Lc1-不存在DATA16-不存在Le104-10要求卡片返回的随机数长度 3、响应报文数据–随机数,长度为Le个字节4、响应报文状态码–略5、命令使用示例–略 6.5.4 Internal Authentication(内部认证)1、命令功能描述–提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据认证的功能。

–在满足该密钥的使用条件时才能执行此命令 参看流程图 2、内部认证过程–内部认证是读卡器对卡片的认证,认证过程如下图所示:终端方向卡片产生1个8字节随机数RNDIFD送RNDIFD作内部认证用指定的DES加密密钥对随机数RNDIFD进行DES加密运算,产生鉴别数据D1即:D1=DES(K, RNDIFD)送D1用与卡片DES加密密钥相同密钥对RNDIFD进行DES解密运算,产生D2,后比较D1和D2即:1)D2=DES-1(K, RNDIFD)2)D1?=D2 3、命令报文格式代码长度(byte)值(Hex)描述CLA100-INS188-P1100加密01解密02计算MACP21XXDES密钥标识号Lc1XX-DATAXXXX..XX认证数据Le100-说明:P1=00表示进行加密运算,密钥类型是DES加密密钥 P1=01表示进行解密运算,密钥类型是DES解密密钥 P1=02表示进行MAC运算,密钥类型是DES&MAC密钥 4、响应报文数据–相关认证数据,即DES运算的结果5、响应报文状态码–略6、命令使用示例1–预设环境 密钥标识号=01;密钥类型是DES加密密钥;使用权限=0xF0;更改权限=0xEF,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–预设环境 密钥标识号=01; 密钥类型为DES解密密钥; 使用权限=0xF0;更改权限=0xEF, 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 00 8、命令使用示例3–预设环境 密钥标识号=01; 密钥类型为DES&MAC解密密钥; 使用权限=0xF0;更改权限=0xEF, 16字节密钥为“57415443484441544154696D65434F53”; 待计算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字节初始值是“00000” 6.5.5 External Authentication(外部认证)1、命令功能描述–IC卡验证读卡器的真伪–在满足该外部认证密钥的使用权限且该密钥未被锁死时才可执行该命令–将命令中的数据用指定外部认证密钥解密,然后与先前产生的随机数进行比较•若一致则表示认证通过•若不一致则认证失败 参看流程图 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-P1100-P21XX外部认证密钥标识号Lc18-DATA8XX…XX8字节加密后的随机数Le--- 说明:•若认证通过,置安全状态寄存器为该密钥规定的后续状态值,错误计数器恢复成初始值;•若认证失败,可再试错误数减1,且不改变安全状态寄存器的值 4、响应报文数据–不存在5、响应报文状态码–略6、命令使用示例–预设环境 外部认证密钥标识号=01;使用权限=0xF0;更改权限=0xEF;错误计数器=0x33;后续状态=11;16字节密钥为“57415443484441544154696D65434F53”;BACK TO 鉴别 –命令报文 [步骤1]取8字节随机数APDU:00 84 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 6.5.6 Generate RSA Key(生成公私钥对)1、命令功能描述–该命令用于卡片自动生成模长为1024位的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素数q50私钥指数d mod(q-1)51私钥指数d mod(p-1)49q-1 mod p 4、响应报文状态码–略5、命令使用示例–略 6.5.7 Data Compress(数据压缩)1、命令功能描述–用安全散列算法SHA-1将数据压缩为20个字节,用RSA签名或验证时使用2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1CC-P1P22XXXX见说明Lc1XX-DATAXXXX…XX待压缩数据Le114- •说明:若数据总长度小于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 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 51 C8 AF 4E 45 EE 90 00 6.5.8 Data Encrypt(数据加密)1、命令功能描述–用非对称密码算法RSA的公钥对数据进行加密–在满足该公钥文件的使用权限时才能执行此命令 2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1C6-P1P22XX XX公钥文件标识符Lc1XX-DATAXXXX…XX需要加密的数据Le180说明:1)P1P2=0000时,表示用卡内临时公钥对数据进行加密。

该临时公钥由Data Compress命令分批送入2)在进行数据加密之前,COS会对加密数据进行编码,后对编码数据进行加密运算 编码数据EM=00||BT||PS||00||D–BT=02,表示为数据加密–PS为不小于8字节的随机数–D:待加密数据(加密数据最大长度为117字节)3、响应报文数据–由加密后的密文组成4、响应报文状态码–略5、命令使用示例–略 6.5.9 Data Decrypt(数据解密)1、命令功能描述–用非对称密码算法RSA的私钥对加密数据进行解密–在满足该私钥文件的使用权限时才能执行此命令 2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1C8-P1 P22XXXX私钥文件标识符Lc180-DATA128XX…XX需解密的密文Le100-3、响应报文数据–由解密后的明文组成 4、响应报文状态码–略5、命令使用示例–略 6.5.10 Digital Signatures(数字签名)1、命令功能描述–用非对称密码算法RSA的私钥对数据进行签字–在满足该私钥文件的使用权限时才能执行此命令 2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1C2-P1 P22XXXX私钥文件标识符Lc1XX-DATAXXXX…XX需要签字的数据Le180-说明:Lc=00时,表示用卡中压缩好的数据进行签名(即先将须签字的数据用Data Compress命令进行压缩)3、响应报文数据–略 4、响应报文状态码–略5、命令使用示例–略 6.5.11 Signatures Verify(签名验证)1、命令功能描述–用非对称密码算法RSA的公钥对签名数据进行认证–在满足该公钥文件的使用权限时才能执行此命令 2、命令报文格式代码长度(byte)值(Hex)描述CLA180-INS1C4-P1 P22XXXX公钥文件标识符Lc180-DATA128XX…XX本公钥对应的私钥所产生的数字签名Le180-说明:P1P2=0000时,表示用卡内临时公钥对数据进行验证。

该临时公钥由Data Compress命令分批送入 3、响应报文数据–由认证后的数据组成(128字节),认证后的数据EM=00||BT||PS||00||D1)BT=01,表示为数字签名2)PS=‘FF…FF’,表示填充数据PS由‘FF’数据块组成PS的长度=LEN(EM)-3-LEN(D)PS至少为1个字节的‘FF’3)D=30||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、智能卡的安全使用–卡和读卡器相互验证–检查黑名单–验证持卡人身份5、安全操作相关的基本指令 第六章作业(5月2日交) 1、为验证持卡人是否是假冒的而经常采取的验证方法是什么?2、如果持卡人多次输入PIN,但都不正确,将发生什么情况?3、说明智能卡和读写设备之间相互认证的方法,即如何确定对方是真实的而不是伪造的。

4、系统中交换信息报文时在报尾增加鉴别码的作用及产生方法 The End141《智能卡安全技术》PPT课件 命令报文格式(不带线路保护)代码长度(byte)值(Hex)描述CLA100-INS1D6-P11XXP21XXLc1XX-DATAXXXX… XX写入文件的数据Le--不存在1)2)前提:所写文件为当前文件 Create File1、命令报文格式代码长度(byte)值(Hex)描述CLA180INS1E0P1P22XX XX文件标识符FIDLc1XXDATALcXX…XX文件控制信息Le不存在 •建立MF文件时–P1P2=‘3F00’–DATA域文件控制信息为DATA文件类型文件空间建立权限擦除权限8字节传输代码长度(byte)12118值(HEX)38FFFFXXXXXX…XX建立DF文件时–DATA域文件控制信息为DATA文件类型 文件空间 建立权限 擦除权限保留字DF名称(可选)长度(byte)121135-16值(HEX)38XXXXXXXXFFFFFFDF名称 建立EF文件时–Lc=’07’–DATA域文件控制信息为(不带线路保护时)‘FF’‘FF’存款权限读/扣款权限记录长度记录数‘2F’普通钱包文件‘FF’‘FF’写权限读权限记录长度记录数‘2A’定长记录文件‘FF’‘FF’写权限读权限记录长度记录数‘2E’循环文件‘FF’‘FF’写权限读权限文件空间‘2C’变长记录文件‘FF’读权限更改权限使用权限文件空间≥330‘3D’私钥文件‘FF’读权限更改权限使用权限文件空间≥135‘3E’公钥文件当前DF文件SFI读权限Byte4文件空间文件空间Byte2‘FF’‘FF’增加权限‘3F’密钥文件‘FF’‘FF’写权限‘28’二进制文件Byte7Byte6Byte5Byte3Byte1 数据域文件类型 Read Binary(不带线路保护)代码长度(byte)值(Hex)描述CLA100-INS1B0-P11XXP21XXLc--不存在DATA--不存在Le1XX要读取的数据长度注: Read Binary代码长度(byte)值(Hex)描述CLA100/04-INS1B0-P11XXP21XXLc--不存在(CLA=04时除外)DATA--不存在(CLA=04时,应包括MAC)Le1XX要读取的数据长度注: 代码长度(byte)值(Hex)描述CLA100/04-INS1D6-P11XXP21XXLc1XX-DATAXXXX… XX写入文件的数据Le--不存在Update Binary 。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档