《智能卡安全技术》PPT课件.ppt_第1页
《智能卡安全技术》PPT课件.ppt_第2页
《智能卡安全技术》PPT课件.ppt_第3页
《智能卡安全技术》PPT课件.ppt_第4页
《智能卡安全技术》PPT课件.ppt_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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)三层密钥管理系统的举例 设采用对称密码体制 主密钥 在智能卡和读写器中存放相同的主密钥 子密钥 主密钥对某些指定的数据加密后生成子密钥,如:每张卡的芯片制造商的标识码的序列号或应用序列号是不相同的,且都设置在IC卡内,因此可利用序列号进行加密生成子密钥; 会话密钥 用子密钥对可变数据进行加密,加密的结果即为会话密钥(或过程密钥)。一个会话密钥仅使用一次。 如:用子密钥对交易时间或命令计数器进行加密生成会话密钥,这样即使是同一张卡,每次使用时的会话密钥就不同,或做不同的操作,会话密钥也不同。,3. 主密钥的生成 主密钥可由几个可信任的人彼此独立提出的数据组合成一个密钥,然后对随机数进行加密运算而获得,这样主密钥的生成和变化规律就很难估计。,4. 主密钥的下载 IC卡中主密钥的下载 主密钥下载是在专门设备上进行的,下载的环境是安全的; 但要保证IC卡上的触点的信息不能被窃取,主密钥下载后,不能再读出,这由硬件(熔丝)和软件(COS卡内操作系统)来保证,读写器中主密钥的下载 读写器内部没有COS,不能保证主密钥不被读出,常采用安全存取模块SAM,密钥下载到SAM模块中,加密/解密算法也在SAM中进行。,7.2 智能卡的安全访问机制,1. 鉴别与核实 2. 安全报文传送 3. 文件访问的安全控制 4. 数字签名/认证,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); 生物特征; 下意识特征;,PIN,PIN(Personal Identification Number)个人识别号是IC卡中的保密数据。 功能:保证只有合法持卡人才能使用该卡或卡中的某一项或几项功能,以防止拾到该卡的人恶意使用或非法伪造。 错误计数器:用以记录、限制PIN输入错误的次数,PIN的类型,全局PIN(Global PIN) 处于系统的较高层次(如主文件)中,一旦因错误计数溢出等原因自锁,也同时锁住使用该PIN的其他应用层次。 局部PIN(Local PIN) 处于某一具体应用层次中,一旦因错误计数溢出等原因自锁,则仅锁住该应用层次。,PIN功能简单汇总表,PUC: Personal Unblocking Code,PIN明码识别,读卡器与卡间以明码传输,在IC卡内部完成PIN的鉴别,PIN密码识别,生物识别,生物识别技术就是依靠人体的身体特征来进行身份验证的技术,例如语音、掌纹、面孔、虹膜、视网膜、骨架和指纹 上述人体特征都具有终生不变的稳定性和人人不同的特定性,这决定了它们可以作为个人身份鉴定的可靠依据。 其中指纹识别是最流行、最方便以及最可靠的个人身份认证方法之一。,GO,指纹识别的特点,具有唯一性和稳定性 避免记忆众多而又复杂的口令 便于获取指纹样本,实用性强 一个人的十指指纹皆不相同,可以方便地利用多个指纹构成多重口令,提高系统的安全性,同时并不增加设计负担 指纹识别中使用的模板并非最初的指纹图,而是由图中提取的关键特征,这样减少了模板库的存储量,便于网络传输,指纹在IC卡中的身份识别,指纹智能卡读卡器,生物识别的缺点,需要较大的存储容量 技术实现比较复杂 费用较高,7.2 智能卡的安全访问机制,1. 鉴别与核实 2. 安全报文传送 3. 文件访问的安全控制 4. 数字签名/认证,2. 安全报文传送,在信息交换过程中保证信息的完整性和保密性 完整性:保证所交换的内容不被非法修改。(利用MAC) 保密性:防止非授权者窃取所交换的信息。(利用密码技术对信息加密处理),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位,如D1234567890,则R(3)D8901234567。 用S(X)D表示相加之和: S(3)D R(3)DD(mod1010)。,其中:R(3)D8901234567, D1234567890,S(3)D = 0135802457,假设信息M1583492637 52835869,鉴别码的计算如下:,先将信息分成十位一组,最后一组不足十位时补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)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,所得到的结果作为初始值。 第二步:按照顺序将以下数据连接在一起形成数据块: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,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密钥进行数据解密的算法,2.3 TimeCOS/PK中的安全报文传送,1、实现理念 2、实现方式 3、安全报文传送的命令情况 4、应用举例,1、实现理念,完整性保护 对传输的数据附加4字节MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受 机密性保护 对传输的数据进行DES加密,这样传输的就是密文,攻击者即使获得数据也没有意义 机密性和完整性保护 此种方式最安全,对传输的数据进行DES加密,后对传输的数据附加4字节MAC码,接收方收到后首先进行校验,只有校验正确的数据才予以接受,2、实现方式,如对文件进行安全报文传送,只需在建立文件时改变文件类型字节高两位即可。,例如:某二进制文件(文件类型为28),若希望对该文件进行线路保护,则在建立文件时将文件类型更改为: A8(0010 10001010 1000),举例,如对密钥进行安全报文传送(使用Write Key,Verify等),只需在安装密钥时改变密钥类型字节高两位即可。,例如:某密钥(密钥类型为39),若希望对该密钥进行线路加密保护,则在安装该密钥时将密钥类型更改为: F9(0011 10011111 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,7.2 智能卡的安全访问机制,1. 鉴别与核实 2. 安全报文传送 3. 文件访问的安全控制 4. 数字签名/认证,3. 文件访问的安全控制,1、安全状态 2、安全属性 3、应用实例,1、安全状态,是指卡当前所处的一种安全级别 卡的主控目录或者当前应用目录分别有16种不同的安全状态,对应0F的16个值 下列情况可能影响到相应的安全状态 卡片上电复位后 卡片中所记录的所有安全状态都被清除,这时卡片处于最低级别的安全状态,外部认证命令External Authentication PIN校验命令Verify Pin 在卡内,PIN和外部认证密钥都有自己的后续状态,一旦个人身份鉴别和外部认证通过,当前目录的安全状态便被设定为该PIN或者密钥的后续状态 正确选择DF后 执行Select File指令,正确选择MF或DF后,相应的安全寄存器被复位为0,2、安全属性,是指对某个文件或者文件的一部分进行某种操作时必须达到的状态 有时称访问权限,是在文件创立时指定的。由一个状态区间来描述 每种文件的访问权限在建立文件(Create File)时用一个字节指定;每种密钥的访问权限在增加密钥(Write Key)时用一个字节指定,以TimeCOS/PK为例,文件和密钥主要存在如下访问权限,假设当前安全状态寄存器的值用V来表示 访问权限为0Y时,表示需满足VY方可进行访问 例 如某文件读的权限为05 表示在对该文件进行读之前必须使MF的安全状态寄存器的值大于等于5 访问权限为XY 时(X不为0 )表示需满足XVY方可进行访问 (注:当XY时表示禁止相应的操作) 例1 如某文件写的权限为53表示对该文件进行写之前必须使当前目录的安全状态寄存器的值为3、4或5 例2 某文件读权限为F0 ,写权限为F1 代表可任意读取,写时必须满足当前目录的安全状态寄存器的值大于等于1。,假设在对某文件进行读操作之前,要求必须先通过个人身份鉴别。 一种可行的办法是: 将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文件的内容,7.2 智能卡的安全访问机制,1. 鉴别与核实 2. 安全报文传送 3. 文件访问的安全控制 4. 数字签名/认证,4. 数字签名/认证,基本概念 数字签名/认证的过程 如何在智能卡中实现数字签名,1、数字签名,数字签名是建立在公钥体制基础上的一种服务 数字签名必须保证以下3点: 接收者能够对报文发送者的签名进行认证 发送者事后不能抵赖对报文的签名 任何人都不能伪造其他人的签名 数字签名的一般过程 “私钥加密(签名),公钥解密(验证)”,数字签名过程,存在的问题 要签名数据的大小是任意的,最终签名的大小也是任意的。 解决办法 引入单向散列算法(HASH),2、HASH算法,单向散列函数也称HASH函数,作用在一任意长度的消息M上,返回一个固定长度的散列值h h=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密钥对,命令操作一般流程,相关指令,7.3 智能卡防拔插处理,若智能卡正在对卡片的用户数据进行修改(如执行创建文件指令,更新EF文件的内容等)时,持卡人突然将卡从读写器中拔出或移开,或者读写器由于某种原因突然掉电,都有可能造成数据更新操作中断,从而造成卡内用户数据出错。 为了保证数据的完整性,COS本身应该具备处理这种突发事件的能力,也就是具有防拔插处理的能力。,掉电保护机制,在COS主程序中,首先要判断掉电标志位,如果标志位为0x01,说明上一条命令没有执行成功,程序将首先恢复备份数据。,将备份区清空, 将掉电标识复位,3种意外状况: 1)在步骤3之前发生断电 无影响 2)在步骤3-5之间发生断电 进入数据安全写恢复流程 3)在步骤5之后发生断电 无影响,数据备份举例,数据备份格式示例,在创建文件的时候留出一定大小的区域,用来备份数据。,数据安全写恢复流程,7.4 智能卡的安全使用,IC卡使用时,要与读写器相互确认,以防止伪卡或插错卡。使用过程: 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 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(数据解密) 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 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 错误计数器值:33 5、命令使用示例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,7.5.2 Unblock(解锁口令),1、命令功能描述 用于解锁被锁定的8字节的口令 只有满足该解锁口令使用条件且该解锁口令未被锁死时才能执行此命令,该命令不改变安全状态 若解锁口令核对成功,则新口令取代原有口令,且将口令错误计数器和解锁口令错误计数器恢复成原始值 若解锁口令失败,则解锁口令可再试次数减1,如果解锁口令锁死,解锁口令无法再被解锁。,2、命令报文格式,3、响应报文数据 不存在 4、响应报文状态码 略,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,7.5.3 Get Challenge(取随机数),1、命令功能描述 请求一个用于安全相关过程(如安全报文)的随机数 2、命令报文格式,3、响应报文数据 随机数,长度为Le个字节 4、响应报文状态码 略 5、命令使用示例 略,7.5.4 Internal Authentication(内部认证),1、命令功能描述 提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据认证的功能。 在满足该密钥的使用条件时才能执行此命令 参看流程图,2、内部认证过程 内部认证是读卡器对卡片的认证,认证过程如下图所示:,3、命令报文格式,说明: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 00,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字节初始值是“0000000000000000”,7.5.5 External Authentication(外部认证),1、命令功能描述 IC卡验证读卡器的真伪 在满足该外部认证密钥的使用权限且该密钥未被锁死时才可执行该命令 将命令中的数据用指定外部认证密钥解密,然后与先前产生的随机数进行比较 若一致则表示认证通过 若不一致则认证失败 参看流程图,2、外部认证过程 外部认证是卡片对读卡器的认证,认证过程如下:,3、命令报文格式,说明: 若认证通过,置安全状态寄存器为该密钥规定的后续状态值,错误计数器恢复成初始值; 若认证失败,可再试错误数减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,7.5.6 Generate RSA Key(生成公私钥对),1、命令功能描述 该命令用于卡片自动生成模长为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个字节,用RSA签名或验证时使用 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 0E ED FA 82 D2 EA 1A A5 92 84 5B 9A 6D 4B 02 B7 90 00 6、命令使用示例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,7.5.8 Data Encrypt(数据加密),1、命令功能描述 用非对称密码算法RSA的公钥对数据进行加密 在满足该公钥文件的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论