1、信息安全综合实验智能卡4第五章 智能卡实验 本实验配合智能卡原理与技术课程进行。5.1 实验目的 本实验的目的主要虽如下四点: 1熟悉接触式和非接触式智能卡的应用环境和应用方式。 2掌握智能卡的基本物理结构和逻辑结构。 3了解智能卡的应用编程。 4了解智能卡操作系统的基本结构和编程。5.2 实验设备与准备 在进行实验之前需要如下设备和环境: 1标准接触式智能卡读写器设备和射频卡读写器设备各一套及相关驱动。 2带九针RS232串行接口及USB串行接口计算机一台。 3带支持ISO-7816-4的命令的操作系统的CPU卡、射频M1型卡、存储器卡各一张。 4VC编程环境。5.3 预备知识5.3.1 智
2、能卡简介 智能卡的名称来源于英文名词“Smartcard”,又称集成电路卡,即IC卡(Integrated Circuitcard)。它将一个集成电路芯片镶嵌于塑料基片中,封装成卡的形式,其外形与覆盖磁条的磁卡相似。它以其超小的体积、先进的集成电路芯片技术以及特殊的保密措施和无法被译及仿造的特点受到普遍欢迎。IC卡芯片具有写入数据和存储数据的能力,IC卡存储器中的内容根据需要可以有条件地供外部读取和供内部信息处理和判定之用。 我们曾经了解过一些使用密码学的身份认证系统如 Kerberos,SNP,SSH 等,而这些系统都是架构在密码学的基础下成型的:然而除采用密码学的方式做为身份认证机制外,当
3、然我们也可以用其它的方法做为身份认证之用。这些其它的方法如传统式的身份证件,或是磁卡,而有些系统还可以用辨人体的指纹,声纹或是视网膜。而智能卡是目前被看好的一种新一代的身份认证系统。 根据卡中所镶嵌的集成电路的不同IC卡可以分成以下三类: 存储器卡:卡中的集成电路为EEPROM(可用电擦除的可编程只读存储器)。 逻辑加密卡:卡中的集成电路具有加密逻辑和ZEPROM。 CPU卡: 卡中的集成电路包括中央处理器CPU、EEPROM、随机存储器RAM以及固化在只读 存储器ROM中的片内操作系统COS(ChiPOperatingSystem)。严格地讲,只有CPU卡才是真正的智能卡。 按卡与外界数据传
4、送的形式来分,有接触型IC卡和非接触型IC卡两种。当前使用广泛的是接触型IC卡,在这种卡片上,IC芯片有8个触点可与外界接触。非接触型IC卡集成电路不向外引出触点,因此它除了包含前述三种IC卡的电路外,还带有射频收发电路及其相关电路,读写器对卡的读写为非接触式,因而称这种IC卡为非接触式或者感应式IC卡(RF射频卡)。 IC卡在使用中,有一些参数在卡型选择时是需要认真考虑的。例如: (1)如果IC卡的使用环境低于0时,最好不要选用CPU卡,因CPU卡的工作温度在0时以上.而MemoryCard可以工作在20的低温下工作。 (2)IC卡是有工作电压指标的,西门子公司的IC卡一般工作电压在4.75
5、V5.25V之间.ATMEL公司的IC卡工作电压约在2.7V5.5V之间。 (3)IC卡的寿命是对IC卡的擦写次数决定。 (4)IC卡读写器的使用寿命主要由两个因素决定:读写器本身器件的选择和卡座的寿命;卡座的寿命分别有10万次,20万次和50万次。 (5)读写器对IC卡的上电操作,仅在接到软件发出的指令以后才能进行,并且,在IC卡没有插入的情况下,应给出上电出错的返回代码。 (6)读写器应用中最重要的问题是通信和系统的可靠性问题。5.3.2 存储器卡预备知识 存储器卡中的集成电路为EEPROM(可用电擦除的可编程只读存储器)。这种卡的生产厂商最多,下面就常用的ATMEL公司的AT24C系列和
6、INFINEON公司的44系列给出介绍。5.3.2.1 AT24C系列 AT24C01A/02/04/08/16/64系列IC卡为ATMEL存储卡,是一种不具备加密功能的EEPROM卡,AT24C为系列号,数字部分为K位容量,分别为1K、2K、4K、8k、16K、32K、64K位。它的使用方法与EEPROM完全相同,存储结构简单,只有读写两种操作功能,主要用于存放一些保密性要求不高的数据。该系列卡可循环擦写1,000,000次,数据保存期为100年,使用的温度范围从-250C到700C。该系列的卡结构单一,无分区,只有读、写操作 AT24C系列的工作频率为lMHz(5V),lMHz(2.7V)
7、,400KHz(1.8V);工作电压为5V士l0,根据要求最低可至1.8V;Icc电流读最大为lmA,写最大为3mA:写擦除次数为l00万次;数据保持lO0年;工作温度为O-70,根据要求可超过指定工作温度;通讯协议符合ISOIEC 7816-3同步协议,双向串行接口。 AT24C系列的存储结构如下图所示: 图5-1 AT24C系列型号的后两位数字为该型号的最大K位数(1K=1024),8位为1字节,最大字节存储容量的算法为K位数l0248。如:AT24C01A的最大存储容量的110248=128,其字节地址空间为O127(16进制为0x000x7F)。 下面的伪码程序在AT24C系列卡的AD
8、DR地址开始写LEN个字节,并且读出校对。 Open(AT24Cxxx) Write(ADDR,LEN,WDATA) RDATA Read(ADDR,LEN) Close() IF WDATARDATA THEN 写成功 ELSE 写失败。 下面的伪码程序在AT24C系列卡的ADDR地址开始读LEN个字节。 Open(AT24Cxxx) RDATA Read(ADDR,LEN) Close()5.3.2.2 SLE4404卡 SLE4404卡为416位加密卡,存在读数据、写数据、密码及熔断操作。其性能如下: 416位容量 208位应用区 整区擦除 温度范围:-3580 至少10,000次循环擦
9、写 至少10年数据保存期 触点结构和串行接口符合ISO7816同步协议 SLE4404卡的保密特性主要是由用户密码、擦除密码及熔断操作来决定的,熔丝熔断前和熔断后的保密特性有所不同,现说明如下(以下的写表示置0,擦表示置1,编程操作时必须先擦后写): (1)存储区名称:厂商代码字节地址: 01字节长度: 2熔断前特性:出厂时已固化,只能读,不能更改熔断后特性:同熔丝前 (2)存储区名称:发行商代码字节地址: 27字节长度: 6熔断前特性:用户密码核对正确后,可反复擦写熔断后特性:固化,不可更改 (3)存储区名称:用户密码字节地址: 89字节长度: 2熔断前特性:用户密码核对正确后,可读,可更改
10、熔断后特性:核对正确后不可读,但可更改 (4)存储区名称:密码错误计数器字节地址: 10字节长度: 1熔断前特性:初始值为4,用户密码核对出错1次减1,连续4次出错,则卡片自动锁死,若其中有一次正确,则计数器恢复为初始值熔断后特性:同熔丝前 (5)存储区名称:备注区字节地址: 1113字节长度: 3熔断前特性:用户密码核对正确后,可读,可擦,可写,用户可在其中标注信息熔断后特性:同熔丝前 (6)存储区名称:应用区(首字节的第1位为写属性控制位,第2位为读属性控制位)字节地址: 1439字节长度: 26熔断前特性:读:当RD置为1时,任何情况下可读;当RD置为0时,用户密码核对正确后,可读;写:
11、用户密码核对正确后,可写;擦:用户密码核对正确后,且擦除密码核对正确,则整区擦除熔断后特性:读:特性同熔丝前;写:当PR置为1,用户密码校对正确后,可写;当PR置为0,任何情况下不可写;擦:同熔丝前 (7)存储区名称:擦除密码字节地址: 4043字节长度: 4熔断前特性:用户密码核对正确后,可读,可更改熔断后特性:任何情况下不可读,不可更改 (8)存储区名称:擦除计数器字节地址: 4451字节长度: 8熔断前特性:不起作用熔断后特性:每校验一次擦除密码,不论对错,擦除计数器减1,应用区共可擦64次5.3.3 CPU卡预备知识5.3.3.1 COS简介 作为敏感数据和密钥信息的安全存储介质,智能
12、卡的安全性除了芯片本身外,还取决于卡内的芯片操作系统或者称智能卡操作系统,即COS。CPU卡内的资源较多,除了CPU之外,往往还有串行通信电路、存储器、随机数发生器、密码运算模块等,这些都需要COS来进行管理。从功能上来说,智能卡操作系统主要用于控制数据传输,内存管理和信息处理。在命令处理时, COS 检查各项参数是否正确,以及安全条件是否满足,在此基础上执行相应的操作和数据处理,以实现对文件的访问。5.3.3.2 COS的工作流程和命令处理 COS 工作流程可以通过命令处理的过程来详细说明。命令处理的过程如下图。 图5-2 COS命令处理的过程 命令管理是智能卡操作系统的主要内容。其基本过程
13、是:终端设备向IC卡发送命令,IC卡则根据执行情况返回应答。命令与应答结构有四种情形。情形一:命令格式:CLAINSP1P200应答格式:SW1SW2情形二:命令格式:CLAINSP1P2 LcData应答格式:SW1SW2情形三:命令格式:CLAINSP1P2Le应答格式:DataSW1SW2情形四:命令格式:CLAINSP1P2 LcDataLe应答格式:DataSW1SW2 其中,CLA表示指令的类别,INS表示指令的指令码,P1、P2表示命令的参数,Lc表示数据域DATA的长度,DATA表示命令报文数据域或应答报文数据域,Le表示要求返回数据的长度,Le为00表示返回卡中最大数据长度。
14、而SW1、SW2 卡执行命令的返回代码(状态码)。每条命令的应答至少由两个字节的状态码组成。状态码说明命令被处理的情况。命令返回码的意义见下表。 表5-1 命令返回码的意义序号SW1 SW2意义 190 00命令正确执行261 XXSW2指出仍可得到的应答字节数362 00非易失性存贮器状态未变,命令处理完成但未必正确462 81部分返回数据可能是错的562 82命令处理完成,但在达到Le字节之前,文件或记录已结束662 83选择文件无效,文件或密钥校验错误 762 84FCI格式不遵循ISO标准863 00非易失性存贮器状态已变,命令处理完成但未必正确963 81上次写入时,文件已充满106
15、3 CXX表示还可再试次数1164 00非易失性存贮器状态未变,命令处理夭折1265 00非易失性存贮器状态已变,命令处理夭折,无其它信息1365 81存贮器失效,非易失性存贮器状态已变,命令处理夭折1467 00错误的长度1568 00不支持CLA的功能,不给出信息1668 81不支持的逻辑通道1868 82不支持的安全报文1969 00不允许的命令,不给出信息2069 01无效的状态2169 81命令与文件结构不相容2269 82不满足安全状态2369 83密钥被锁死2469 84参考数据无效2569 85使用条件不满足2669 86当前文件不是EF或无当前文件2769 87安全报文未得到
16、2869 88安全报文不正确296A 80数据域参数错误306A 81功能不支持或卡中无MF或卡片已锁定316A 82文件未找到326A 83记录未找到336A 84文件无足够空间346A 85Lc与TLV结构不一致356A 86参数P1 P2错误366A 87Lc与P1P2不一致376A 88引用数据未找到(密钥未找到)386B 00命令夭折,在达到Le字节之间文件结束;偏移量错误396D 00指令码错误406E 00错误的CLA416F 00数据无效4293 02银行MAC错误4393 03 应用已被锁定4494 01金额不足4594 03密钥未找到(用于银行专用命令)4694 06所需的
17、MAC不可用5.3.3.3 COS的传输管理 传输管理器主要是根据卡所使用的通信协议来进行数据收发。常用的通信协议有T=0和T=1。IC卡插入读写设备并正确接触后,触点激活,读写设备对IC卡上电。IC卡发出复位应答,给出后继字符解码方式、检验方式、通信协议等请求。IC卡和读写设备建立起通信联系后,读写设备向卡发送数据,依据双方约定的通信协议,IC卡对由读写设备发出的命令进行接收。同时,把对命令的响应按照传通信议的格式发送出去。IC卡在对命令进行接收的同时,也要对命令接收的正确性作出判断。这种判断只是针对在传输过程中可能产生的错误预言的,并不涉及命令的具体内容。当发现检验错误,立刻向读写设备报告
18、,并且请求重发原数据。如果传IC卡认为对命令的接收是正确的,那么,它一般是只将接收到的命令的信息部分传到下功能模块,而滤掉诸如起始位、停止位之类的附加信息。相应地,当IC卡在向读写设备发送应答的时候,则应该对每个传送单位加上信息交换协议中所规定的各种必要的附属信息。 T=1协议的传输基本组成如下: 开 始 字 段 信息字段 结尾字段 NAD PCB LEN INF EDC 其中,NAD长1字节,PCB长1字节,LEN长1字节,INF长0254字节,EDC长1字节;LEN表示INF的数据长度,EDC为开始字段和信息字段的出错校验码。5.3.3.4 COS的安全管理 当完整的命令信息传到安全管理模
19、块后, COS 根据命令的需要来实现卡和终端机之间的相互认证、文件访问权限控制、数据的加密和解密等安全保密功能。5.3.3.5 COS的应用管理和文件管理 应用管理则对卡接收到命令的可执行性进行判断。COS 主要提供了两种对命令可执行性的判断方式。顺序判断:即命令只有满足某一系列条件才能进行下一步操作。另一种是权限判断:即只有满足某一安全属性才能对文件进行操作。 文件即数据单元或卡中记录的有组织的集合。COS 的整个文件系统按树形结构组织(如下图)。COS 给每一个应用建立一个相关的文件以实现对各个应用的存储和管理。每个应用下都可有各种基本文件。利用选择文件命令或其它命令中所指明的短文件标识符
20、可以选择某个文件,并且在以后对该文件进行操作。图5-3 COS的文件组织 文件标识符是文件的标识代码,用2个字节来表示,在选择文件时只要指出该文件的标识代码, COS 就可以找到相应文件,同一父文件下的子文件标识符必须是唯一的,MF的文件标识符是3F00。所有文件都可以通过文件标识符用SELECT FILE命令进行文件选择,MF和DF还可以通过文件名称在任意位置进行选择。 在智能卡操作系统中,文件系统是仅次于安全系统的重要部分,因为它是卡中所有用户数据和程序,或者说所有应用的载体。根据ISO78164, COS 支持的基本文件类型包括主文件MF(Master File)、专用文件DF(Dedi
21、cated File)和基本文件EF(Elementary File)。 (1) 主文件MF 主文件MF在IC卡中唯一,且必须存在。MF是卡片文件系统的根,在MF下可以有多个专用文件DF和基本文件EF,IC卡复位后,卡片自动选择MF文件为当前文件。MF下可有一个内部保密文件ISF,它是一个TLV格式的线性变长文件。MF下还可有一应用列表文件,它是一个TLV格式的线性变长文件,它包含有卡片支持的应用目录。MF的大小由用户在创建的时候指定,且仅受可用空间限制。在创建的时候同时指定MF的ISF文件的大小以及创建DF、创建EF和创建KEY记录的访问控制权限。 MF在卡片复位后自动被选择,此外在任何文件
22、下均可通过文件标识符3F00或文件名称1PAY.SYS.DF01来选择MF。在创建文件后,MF不能自动被选择,需要执行选择文件命令。 (2) 专用文件DF 一个DF则代表一个应用。每一DF下可以存放多个EF。任何一个DF在物理上和逻辑上都保持独立,都有自己的安全机制和应用数据,可以通过应用选择实现对其逻辑结构的访问。专用文件DF下可有一个内部保密文件ISF,它是一个TLV格式的线性变长文件。DF的大小由用户在创建的时候指定,且不能超过32K。DF在创建的时候同时指定ISF文件的大小以及创建EF和创建KEY记录的访问控制权限。 (3) 基本文件EF 基本文件EF用于存放用户数据、程序或密钥,分为
23、内部保密文件ISF和工作基本文件。 存放密钥的文件称为内部保密文件ISF (Internal Secret File),它不需用户专门创建,而与MF/DF同时被建立。 ISF文件可存放的密钥类型包括口令密钥、内部认证密钥、外部认证密钥、内部密钥、重装PIN的密钥、线路加密密钥、线路认证密钥或线路加密认证密钥等。ISF文件在任何情况下密钥数据均无法读出。 存放用户数据的文件称为工作基本文件WEF (Working Elementary File),分为透明文件、线性定长文件、循环文件、线性变长文件、ECC参数文件、ECC密钥文件。 透明文件也称二进制文件,为一个数据单元序列,数据以二进制为单位按
24、地址进行读写,其中的数据由应用者解释。 线性定长文件每条记录长度相同,数据以记录为单位进行存储。 循环文件为具有固定长度记录的环形文件。循环文件及下面所述的计算文件只能顺序增加记录,当写记录时当前写入的为第一条记录,上一次写入的为第二条记录,依此类推。当记录写满后再执行写命令将自动覆盖最早写入的记录,最后一次写入的记录的记录号总是为1,上次写入的记录的记录号为2,依次类推。 线性变长文件的每一条记录长度是可变的。更新记录时,新的记录长度必须与卡中记录长度相同,否则更新无效。变长记录的格式TLV如下:T LV T(Tag): 记录标识 、 L(Length):记录数据域长度、V(Value):
25、L字节数据5.3.3.6 COS的常用命令 同学们,不同的智能卡硬件平台和生产厂商可能有功能相同的操作系统,但是也很可能不相同,我们在以后的工作和学习过程中要根据实际情况来确定具体的开发和应用方法。在ISO7816规范中确定了不同的操作系统应该遵循的规范,特别是命令规范和文件规范。而不同的厂商会对ISO - 7816的命令规范进行扩充,形成自己的命令集,扩充的命令主要是: (1)创建文件系统和密钥系统的相关命令。这一部分是必不可少的,在进行CPU卡的应用开发时执行相关的命令也是必需的。在ISO - 7816中规范此类命令的数据格式和应答格式。 (2)密码相关命令,比如RSA和ECC基本运算、加
26、密、解密、签名、认证命令,对于当前大多数的PKI环境下的智能卡应用此类命令也是必不可少的。 (3)行业命令,比如银行应用、税控应用、社保应用的相关行业命令。我们在进行应用开发时要注意选择带有支持相关行业命令的操作系统的CPU卡。 下面列举一些常用的命令及其格式:(1)应用锁定命令 AppliBlock 应用锁定命令使当前选择的DF失效。命令结构如下:CLAINS P1 P2 Lc DATA84 1E 00 00/01 4 MAC P200 命令执行成功后可锁定应用,但该应用可以用应用解锁命令解锁,可由选择命令选择进入该文件,但返回69 83。 P201 此命令执行成功后将永久锁定应用,IC卡将
27、不允许执行解锁应用。 应答报文只有SW1和SW2:SW1 SW2意义90 00命令正确执行62 00无信息提供62 81回送数据可能出错62 83选择文件无效64 00EEPROM状态未改变65 81写EEPROM不成功(表示EEPROM失效)68 82文件不支持安全报文69 82不满足安全状态69 84引用数据无效(密钥类型不正确)69 87安全报文数据项丢失(Lc不正确)69 88安全报文数据项不正确6A 86参数P1 P2不正确6A 88未找到引用数据(线路保护生成密钥)(2)应用解锁命令 AppliUnblock 应用解锁命令用于解锁当前DF。如果对于某应用连续三次解锁失败,则IC卡将
28、永久锁定此DF。命令结构如下:CLAINS P1 P2 Lc DATA84 18 00 00 04 MAC 应答报文只有SW1和SW2:SW1 SW2意义90 00命令正确执行(含应用未被锁定之情况)64 00状态标志未改变65 81写EEPROM不成功68 82文件不支持安全报文69 82不满足安全状态69 84引用数据无效(密钥类型不正确)69 87安全报文数据项丢失69 88安全报文数据项不正确6A 88未找到引用数据(线路保护生成密钥)93 03应用或文件已被永久锁定(3)卡片锁定命令 CardBlock 卡片锁定命令使卡中所有应用失效。当用卡片锁定命令永久锁定卡之后,所有后续的命令都
29、将回送状态码6A 81,表示不支持此功能,且不执行任何其它操作。命令结构如下:CLAINS P1 P2 Lc DATA84 16 00 00 04 MAC 应答报文只含SW1和SW2:SW1 SW2意义90 00命令正确执行64 00状态标志未改变65 81写EEPROM不成功68 82不支持安全报文69 82不满足安全状态69 84引用数据无效(密钥类型不正确)69 87安全报文数据项丢失69 88安全报文数据项不正确6A 88未找到引用数据(线路保护生成密钥)(4)外部认证命令 ExternAuth 外部认证命令要求IC卡中的应用验证密码。操作过程是:将命令中的数据域用指定外部认证密钥解密,然后与先前产生的随机数进行比较,若一致则表示认证通过,置安全状态寄存器为该密钥规定的后续状态值,错误允许计数器恢复成初始值;若比较不一致则认证失败,错误允许计数器值减1,且不改变安全状态寄存器的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1