cpu卡学习资料docx.docx
- 文档编号:6756857
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:27
- 大小:102.76KB
cpu卡学习资料docx.docx
《cpu卡学习资料docx.docx》由会员分享,可在线阅读,更多相关《cpu卡学习资料docx.docx(27页珍藏版)》请在冰豆网上搜索。
cpu卡学习资料docx
第一部分CPU基础知识
一、为什么用CPU卡
IC卡从接口方式上分,可以分为接触式IC卡、非接触式IC卡及复合卡。
从器件技术上分,可分为非加密存储卡、加密存储卡及CPU卡。
非加密卡没有安全性,可以任意改写卡内的数据,加密存储卡在普通存储卡的基础上加了逻辑加密电路,成了加密存储卡。
逻辑加密存储卡由于采用密码控制逻辑来控制对EEPROM的访问和改写,在使用之前需要校验密码才可以进行写操作,所以对于芯片本身来说是安全的,但在应用上是不安全的。
它有如下不安全性因素:
仁密码在线路上是明文传输的,易被截取;
2、对于系统商来说,密码及加密算法都是透明的。
3、逻辑加密卡是无法认证应用是否合法的。
例如,假设有人伪造了ATM,你无法知道它的合法性,当您插入信用卡,输入PIN的时候,信用卡的密码就被截获了。
再如INTENET网上购物,如果用逻辑加密卡,购物者同样无法确定网上商店的合法性。
正是由于逻辑加密卡使用上的不安全因素,促进了CPU卡的发展。
CPU卡可以做到对人、对卡、对系统的三方的合法性认证。
二、CPU卡的三种认证
CPU卡具有三种认证方法:
持卡者合法性认证——PIN校验
卡合法性认证内部认证
系统合法性认证——外部认证
持卡者合法性认证:
通过持卡人输入个人口令来进行验证的过程。
系统合法性认证(外部认证)过程:
系统卡,
送随机数X
[用指定算法、密钥]对随机数加密
[用指定算法、密钥]解密Y,得结果Z
比较X,乙如果相同则表示系统是合法的;
卡的合法性认证(内部认证)过程:
系统卡
送随机数X
[用指定算法、密钥]解密Y,得结果Z
比较X,乙如果相同则表示卡是合法的;
在以上认证过程中,密钥是不在线路上以明文出现的,它每次的送出都是经过随机数加密的,而且因为有随机数的参加,确保每次传输的內容不同。
如果截获了没有任何意义。
这不单单是密码对密码的认证,是方法认证方法,就象早期在军队中使用的密码电报,发送方将报文按一定的方法加密成密文发送出去,然后接收方收到后又按一定的方法将密文解密。
通过这种认证方式,线路上就没有了攻击点,同时卡也可以验证应用的合法性;但是因为系统方用于认证的密钥及算法是在应用程序中,还是不能去除系统商的攻击性。
在此,我们引进了SAM卡的概念。
SAM卡是一种具有特殊性能的CPU卡,用于存放密钥和加密算法,可完成交易中的相互认证、密码验证和加密、解密运算,一般用作身份标志。
由于SAM卡的出现,我们有了一种更完整的系统解决方案。
在发卡时,我们将主密钥存入SAM卡中,然后由SAM卡中的主密钥,对用户卡的特征字节(如:
应用序列号)加密生成子密钥,将子密钥注入用户卡中。
由于应用序列号的唯一性,使每张用户卡内的子密钥都不同。
密钥一旦注入卡中,则不会在卡外出现。
在使用时,由SAM卡的主密钥生成子密钥存放在RAM区中,用于加密、解密数据。
上述的认证过程就成为如下形式:
系统合法性认证(外部认证)过程:
SAM卡系统卡
送随机数X
SAM卡生成子密钥对随机数加密
解密Y,得结果Z
比较X,乙如果相同则表示系统是合法的;
卡的合法性认证(内部认证)过程:
SAM卡系统卡
送随机数X
SAM卡解密Y,得结果Z
比较X,乙如果相同则表示卡是合法的;
这样在应用程序中的密钥,就转移到了SAM卡中,认证成为卡——卡的认证,系统商不再存在责任。
三、线路保护
卡与外界进行数据传输时,若以明文方式传输,数据易被载获和分析。
同时,也可以对传输的数据进行窜改,要解决这个问题,CPU卡提供了线路保护功能。
线路保护分为两种,一是将传输的数据进行DES加密,以密文形式传输,以防止截获分析。
二是对传输的数据附加MAC(安全报文鉴别码),接收方收到后首先进行校验,校验正确后才予以接收,以保证数据的真实性与完整性。
四、硬件结构图
EEPROM用于存放用户数据;ROM中用于存放COS操作系统,而RAM区中用于存放COS运行时的中间变量。
COS(chipoperationsystem),就是芯片操作系统,类似于DOS和WINDWOS,没有COS的CPU卡就象没有DOS和WINDOWS的PC机一样无法使用。
COS是在芯片出厂时由芯片供应商固化到ROM区的,这个过程就称之为掩膜。
COS是CPU卡的核心部分,它和硬件一起实现CPU卡的安全性。
第二部分SmartCOS简介
SmartCOS是由明华公司自主开发的芯片操作系统,于1999年6月通过了人行认证。
COS主要分为四部分:
一、SMARTCOS的文件系统
CPU卡是以文件方式来管理SmartCOS支持如下文件系统。
仁文件可分为MF文件、DF文件、EF文件
MF:
主控文件,是整个文件系统的根,是唯一的,相当于根目录;
DF:
专用文件,相当于子目录,可用于存储某个应用的所有文件,DF下不可再建立DF。
一个DF可以是一个应用,也可以多个DF用于同一个应用。
EF:
基本文件,用于存储各种应用数据和管理信息。
2、EF从存储内容上分为两种:
安全基本文件:
用于存放密钥,每个目录下只能建立一个安全基本文件,密钥文件不能通过文件选择来选取,密钥内容不可以读出,但在满足条件时可使用和修改。
工作基本文件:
用于存放应用的实际数据,个数及大小只受空间限制。
在满足条件时可读写。
3、基本文件结构
基本文件的结构可分为以下四种:
二进制文件:
数据以字节为单位进行读写,每次读写的长度不能超过110字节;可用于存储无序的数据。
线性定长记录文件:
每条记录为固定长度,可以通过记录号访问记录,记录范围不超过254;
每条记录的长度不超过110字节,密钥文件就是线性定长记录文件,其每条记录长度固定
为25外字节。
可用于存放有规律定长的数据。
线性变长记录文件:
每条记录的长度可以各不相同,但最大长度不能超过110
字节,可以通过记录号来访问。
循环定长记录文件结构:
相当于一个环形记录队列,按照先进先出的原则存储,最新写入的记录号为1,上一次写入的记录号为2,以此类推,记录写满后自动覆盖最早的记录。
4、文件结构图
在MF下可建立EF和DF:
在DF下不可再建立DF,只能建立EF;
KEY文件:
用于控制MF下的文件的创建及读写
数据文件
密钥文件:
用于控制DF下的文件的创建及访问
数据文件(如钱包文件等)
5、文件空间的计算
MF的头文件长度为10个字节+文件名长度(5-16个字节)
DF的头文件长度为10个字节+文件名长度
EF文件所占空间:
定义记录和循环记录文件的空间=文件头空间(10字节)+记录数*记录长度
变长记录结构文件的空间=文件头空间(10个字节)+建立时申请的空间密钥文件所占空间=文件头空间(10个字节)+密钥个数*25个字节钱包文件的空间=文件头(10个字节)+文件体(17个字节)存折文件的空间=文件头(10个字节)+文件体(20个字节)建立了文件系统,那么怎样才能保证文件的安全,下面讲述安全系统。
二、SMARTCOS的安全系统
1、状态机即安全状态:
是指卡在当前所处的一种安全级别,具有(0-F)16种安全状态。
复位后自动设为0,当前应用的安全状态在被成功地选择或复位后自动清0o安全状态的改变必须通过密钥的认证来实现。
**只有当前目录下的PIN核对和外部认证才能改变安全状态。
2、安全属性即访问权限
访问权限是在建立文件的时候指定的。
它是一个区间的概念,例如,描述一个文件的读权限为XY,则表示当前应用的状态机(安全状态)M必须满足乂= 如读权限设为2F,就表示当前的状态机(安全状态)达到2及以上就可以读这个文件。 3、密钥与安全状态的关系 每个密钥在建立的时候都定义了后续状态,即通过密钥认证后能达到的安全状态,在各种密钥中,只有PIN认证和外部认证才能改变当前目录的安全状态。 4、安全状态与访问权限的关系 (安全状态) 使用权限——密钥的使用后续状态文件读写取限 5、安全状态只在当前目录下有效,一旦选择别的应用,状态机自动跳到最低权限0。 各个目录之间的安全都是独立的。 四、复位应答 符号字节内容內容解释 TS3B正向约定 TO6CTB1和TC1存在,历史字符为12个 TB100无需额外的编程电压 TC102需2个额外的保护时间 T1-TCXX历史字符 SMARTCOS历史字符的特定意义: 符号字节内容內容解释 T1XXSMARTCOS的版本号 T2XX卡状态字节 T386明华公司IC卡制造机构标识号 T438 T5-TCXX卡唯一序号 卡状态字节描述如下: B7B6B5B4B3B2B1B0状态 011XXXXXX001XXXXXXXXXXXX该卡已初始化,并成功该卡未被初始化该卡初始化 过程被锁 000000XX该卡未个人化 0010XXXX该卡个人化未结束 0110XXXX该卡个人化成功 0001XXXX该卡个人化没有成功,卡被锁 0111XXXX该卡个人化成功,卡被锁 卡片状态字节中有关于初始化、个人化的概念,我们从卡片的生命周期来看这两个概念,卡 片的生命周期一般包括如下几部分: 芯片芯片生产商 掩膜cos芯片生产商 封装成卡片卡片生产商 卡片的初始化(COS启用)卡片生产商 传输密码保护 卡片的个人化卡片发行商 卡片的使用卡片的使用者卡片的回收卡片发行商 初始化过程就是激活cos,定义cos版本,经过这个过程cos才可以使用。 个人化过程是指建立文件,写入用户数据等操作。 卡片生产商在进行初始化后交付卡片发行商使用时,有传输密码保护。 IC卡必须支持T=0或T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持 T=0和T=1的协议。 T=0通讯协议是异步半双工字符传输协议; T=1通讯协议是异步半双工块传输协议; 在ISO7816-3标准中,具体规定了这两种协议; IC卡所用的协议在TD1中指定,如果在复位应答信息中没有TD1,则表示用T=0的协议进行通讯。 在复位应答后,IC卡和终端之间即用IC卡指定的协议进行通讯。 五、指令解析 在此,我们以一个电子钱包的应用为例,讲解SmartCOS的指令。 仁文件结构: 在人行规范中定义了如下文件结构: 1)电子存折ED/电子钱包EP应用的公共应用基本数据文件 文件结构: 文件标识(SFI)'21'(十进制) 文件类型透明 文件大小30 文件存取控制读=自由改写=需要安全信息 字节数据元长度 I-8发卡方标识8 9应用类型标识1 10应用版本1 II-20应用序列号10 21-24应用启用日期4 25-28应用有效日期4 29-30发卡方自定义FCI数据2 2)电子存折ED/电子钱包EP应用的持卡者基本数据文件文件标识(SFI)'22'(十进制) 文件类型透明 文件大小39 文件存取控制读=自由改写=需要安全信息 字节数据元长度 1卡类型标识1 2本行职工标识1 3-22持卡人姓名20 23-38持卡人证件号码16 39持卡人证件类型1 3)电子存折ED交易明细文件 文件标识(SFI)'24'(十进制) 文件类型循环 文件存取控制读=戸11\1保护 改写=不允许 记录大小23 字节数据元长度 I-2ED或EP联机或脱机交易序号2 3-5透支限额3 6-9交易金额4 10交易类型标识1 II-16终端机编号6 17-20交易日期(终端)4 21-23交易时间(终端)3 2、安全设计如下: 1)核对口令后可以进行外部认证; 2)01号外部认证密钥用于控制电子钱包的圈存; 3)02号外部认证密钥用于控制基本文件的修改、密钥的修改; 4)核对口令后可以进行消费。 KEY文件安装如下密钥: KEY类型标识KID使用权限后续状态该KEY作用描述 0B010F1个人密码PIN,用于个人密码校验 0801112外部认证密钥,用于电子钱包圈存 08021FF外部认证密钥,用于基本文件的修改、密钥的修改 010122无圈存密钥,用于产生圈存MAC 000201无电子钱包消费密钥,用于产生钱包消费MAC 020103无TAC密钥,用于产生圈存、消费、取现、修改透支限额的TAC 050133无应用维护密钥,用于产生应用锁定、应用解锁、卡片锁定、卡片锁定和读、更新二进制、记录命令的MAC 3、指令序列: 1)发卡过程,在卡上建立文件及安装密钥 [CreateMF]APDU命令: 80(CLA)eO(INS)00(P1)00(P2)18(Lc)ffffffffffffffff(8字节传输代码)ff(在MF下建立文件的安全属性)01(目录文件的短文件标识符)315041592e5359532e4444463031(创建的文件名称) [CreateDF]APDU命令: 80(CLA)EO(INS)01(P1)00(P2)OD(Lc信息长度)2F01(文件标识符)ff(建立文件权限)00(COS保留)A00000000386980701 (ADF名称) 建立DF下密钥文件[CreateFile]APDU命令: 80(CLA)EO(INS)02(P1)00(P2) 07(文件信息长度)6F02(密钥文件标识)05(文件类型)FF(增加新密钥的权限)00(COS保留)09(记录数)19(记录长度): 安装个人密码PIN[WriteKey]APDU命令: 80(CLA)E8(INS)00(P1)00(P2)0A (密钥信息长度)01(密钥标识符)01(密钥版本号)00(算法标识)0B(密钥类型)0F(使用权限)01(后续状态)2F(修改权限)33(错误计数器)1234(个人密码) 安装外部认证密钥(DEAK)[WriteKey]APDU命令: 80(CLA)E8(INS)00(P1)00(P2)18(密钥信息长度)01(密钥标识符)01(密钥版本号)00(算法标识)08 (密钥类型)11(使用权限)02(后续状态)FF(修改权限)33(错误计数器)XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX(密钥内容) 安装外部认证密钥(DEAK)[WriteKey]APDU命令: 80(CLA)E8(INS)00(P1)00(P2)18(密钥信息长度)02(密钥标识符)01(密钥版本号)00(算法标识)08 (密钥类型)1F(使用权限)0F(后续状态)FF(修改权限)33(错误计数器)XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX(密钥内容) o安装电子钱包EP的消费密钥DPK。 [WriteKey]APDU命令: 80(CLA)E8(INS)00 (P1)00(P2)18(密钥信息长度)02(密钥标识符)01(密钥版本号)00(算法标识)00(密钥类型)01(使用权限)00(后续状态)FF(修改权限)00(错误计 数器)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(密钥内容) 安装电子钱包的圈存密钥DLK[WriteKey]APDU命令: 80(CLA)E8(INS)00(P1) 00(P2)18(密钥信息长度)01(密钥标识符)01(密钥版本号)00(算法标识)01(密钥类型)22(使用权限)00(后续状态)FF(修改权限)00(错误计数器)XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX(密钥内容) 。 安装消费/取现中用来生成TAC的密钥DTK[WriteKey]APDU命令: 80(CLA)E8(INS) 00(P1)00(P2)18(密钥信息长度)01(密钥标识符)01(密钥版本号)00(算法标识)07(密钥类型)0F(使用权限)00(后续状态)FF(修改权限)00(错误计数器)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(密钥内容) 安装应用维护密钥DAMK[WriteKey]APDU命令: 80(CLA)E8(INS)00(P1)00(P2)18(密钥信息长度)01(密钥标识符)01(密钥版本号)00(算法标识)05(密钥类型)0F(使用权限)00(后续状态)FF(修改权限)00(错误计数器)XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX(密钥内容) 建立公共应用基本文件[CreateFile]APDU命令: 80(CLA)EO(INS)02(P1)00(P2) 07(Lc信息长度)0015(文件标识符)00(二进制文件类型)OF(读权限)FF(更新权限)001e(文件长度) 建立持卡者基本数据文件[CreateFile]APDU命令: 80(CLA)E0(INS)02(P1)00 (P2)07(文件信息长度)0016(文件标识符)00(二进制文件类型)OF(读权限)FF(更新权限)0027(文件长度) 建立交易明细文件[CreateFile]APDU命令: 80(CLA)E0(INS)02(P1)00(P2) 07(文件信息长度)0018(文件标识符)03(循环记录文件类型)1F(读权限)10(更新权限)0a17(文件长度) 写公共应用基本数据文件[UpdateBinary]APDU命令: 00(CLA)D6(INS)95(P1)00 (P2)1E(信息长度)A000000003000001(发卡方标识)03(应用类型标识)01(应用版本)00001998081500000001(应用序列号)20001001(应用启用日期)20021231(应用有效日期)5566(发卡方自定义FCI数据) 写卡持有者基本数据文件[UpdateBinary]APDU命令: 00(CLA)D6(INS)96(P1)00(P2)27(文件信息长度)00(卡类型标识)00(本行职工标识)53414d5000000000000000000000000000000000(持卡人姓名)31313031303837303033 313731383900(持卡人证件号码)00(持卡人证件类型) 建立电子钱包EP文件[CreateFile]APDU命令: 80(CLA)E0(INS)02(P1)00(P2) 07(Lc)0001(文件标识符)06(文件类型)00(权限1)00(权限2)00(LEN1)00 (LEN2) 结束建立应用(DF)[CreateEnd]APDU命令: 80(CLA)E0(INS)01(P1)01(P2) 02(文件标识符长度)2F01(文件标识符) 结束建立MF[CreateEnd]APDU命令: 80(CLA)E0(INS)00(P1)01(P2)02 (文件标识符长度)3F00(文件标识符) 2)交易过程 在此,我们以圈存过程及消费过程为例: A、圈存——将金额存入卡中 在圈存前必须先校对个人口令及01号外部认证; 选择应用[SelectFile]APDU命令: 00(CLA)A4(INS)00(P1)00(P2)02(长度)2F01(文件标识符) 校验PIN[Verify]APDU命令: 00(CLA)20(INS)00(P1)00(P2)02(长度)1234(PIN) 外部认证: [ 取随机数[GetChallenge]APDU命令: 00(CLA)84(INS)00(P1)00(P2)08 用01号外部认证密钥对随机数进行3DES加密; 外部认证[ExternalAuthentication]APDU命令: 00(CLA)82(INS)00(P1)01 (P2)08(长度)XXXXXXXXXXXXXXXX(加密后的随机数) ] 圈存: [ 初始化圈存[InitalizeForLoad]APDU命令: 80(CLA)50(INS)00(P1)02(P2)0B(长度)01(密钥标识符)00001000(交易金额)000000000001(终 端机编号) 如果初始化圈存成功,则应答数据域内容: 说明长度(字节) 电子存折或电子钱包旧余额4 电子存折或电子钱包联机交易序号2 密钥版本号1 算法标识1 伪随机数ICC4 MAC14 用圈存对应答内容(4字节伪随机数ICC+2字节电子存折或电子钱包联机交易序号+8000) 进行3DES加密生成过程密钥; 圈存[CreditForLoad]APDU命令: 80(CLA)52(INS)00(P1)00(P2)OB(LC) YYYYMMDD(交易日期)HHMMSS(交易时间)XXXXXXXX(MAC2) MAC2的计算: 初始值: 0000000000000000 密钥: 上面生成的过程密钥 生成MAC2的数据: 00001000(4字节交易金额)02(交易类型标识)000000000001 (6字节终端机编号)YYYYMMDD(交易日期)HHMMSS(交易时间) 如果圈存交易成功,电子钱包文件的联机交易序号加1,交易金额加在电子钱包的余额上,并且在交易明细文件中增加一条记录。 B、消费过程: 在消费之前先校验PIN: 校验PIN[Verify]APDU命令: 00(CLA)20(INS)00(P1)00(P2)02(长度)12 34(PIN) 初始化消费[InitializeForPurchase]APDU命令: 80(CLA)50(INS)01(P1)02(P2) OB(长度)01(消费密钥标识符)00000001(消费金额)000000000001(终端机编号) 如果初始化消费成功,则应答数据域内容: 说明长度(字节) 电子存折或电子钱包旧余额4 电子存折或电子钱包联机交易序号2 透支限额3 密钥版本号1 算法标识1 伪随机数ICC4 消费[DebitForPurchase]APDU命令: 80(CLA)54(INS)01(P1)00(P2)OF(LC) YYYYYYYY
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cpu 学习 资料 docx
![提示](https://static.bdocx.com/images/bang_tan.gif)