第五章 智能卡实验Word下载.docx
- 文档编号:18124452
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:50
- 大小:1.04MB
第五章 智能卡实验Word下载.docx
《第五章 智能卡实验Word下载.docx》由会员分享,可在线阅读,更多相关《第五章 智能卡实验Word下载.docx(50页珍藏版)》请在冰豆网上搜索。
(5)读写器对IC卡的上电操作,仅在接到软件发出的指令以后才能进行,并且,在IC卡没有插入的情况下,应给出上电出错的返回代码。
(6)读写器应用中最重要的问题是通信和系统的可靠性问题。
5.3.2存储器卡预备知识
存储器卡中的集成电路为EEPROM(可用电擦除的可编程只读存储器)。
这种卡的生产厂商最多,下面就常用的ATMEL公司的AT24C系列和INFINEON公司的44系列给出介绍。
5.3.2.1AT24C系列
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),400KHz(1.8V);
工作电压为5V士l0%,根据要求最低可至1.8V;
Icc电流读最大为lmA,写最大为3mA:
写/擦除次数为l00万次;
数据保持l00年;
工作温度为0-70℃,根据要求可超过指定工作温度;
通讯协议符合ISO/IEC7816-3同步协议,双向串行接口。
AT24C系列的存储结构如下图所示:
图5.1AT24C系列IC卡的存储结构
AT24C系列型号的后两位数字为该型号的最大K位数(1K=1024),8位为1字节,最大字节存储容量的算法为K位数×
l024÷
8。
如:
AT24C01A的最大存储容量的1×
1024÷
8=128,其字节地址空间为0—127(16进制为0x00—0x7F)。
下面的伪码程序在AT24C系列卡的ADDR地址开始写LEN个字节,并且读出校对。
Open(AT24Cxxx)
Write(ADDR,LEN,WDATA)
RDATA=Read(ADDR,LEN)
Close()
IFWDATA=RDATATHEN写成功ELSE写失败。
下面的伪码程序在AT24C系列卡的ADDR地址开始读LEN个字节。
5.3.2.2SLE4404卡
SLE4404卡为416位加密卡,存在读数据、写数据、密码及熔断操作。
其性能如下:
⏹416位容量
⏹208位应用区
⏹整区擦除
⏹温度范围:
-35℃~80℃
⏹至少10,000次循环擦写
⏹至少10年数据保存期
⏹触点结构和串行接口符合ISO7816同步协议
⏹SLE4404卡的保密特性主要是由用户密码、擦除密码及熔断操作来决定的,熔丝熔断前和熔断后的保密特性有所不同,现说明如下(以下的写表示置‘0’,擦表示置‘1’,编程操作时必须先擦后写):
(1)存储区名称:
厂商代码
字节地址:
0~1
字节长度:
2
熔断前特性:
出厂时已固化,只能读,不能更改
熔断后特性:
同熔丝前
(2)存储区名称:
发行商代码
2~7
6
用户密码核对正确后,可反复擦写
固化,不可更改
(3)存储区名称:
用户密码
8~9
用户密码核对正确后,可读,可更改
核对正确后不可读,但可更改
(4)存储区名称:
密码错误计数器
10
1
初始值为4,用户密码核对出错1次减1,连续4次出错,则卡片自动锁死,若其中有一次正确,则计数器恢复为初始值
(5)存储区名称:
备注区
11~13
3
用户密码核对正确后,可读,可擦,可写,用户可在其中标注信息
(6)存储区名称:
应用区
(首字节的第1位为写属性控制位,第2位为读属性控制位)
14~39
26
读:
当RD置为‘1’时,任何情况下可读;
当RD置为‘0’时,用户密码核对正确后,可读;
写:
用户密码核对正确后,可写;
擦:
用户密码核对正确后,且擦除密码核对正确,则整区擦除
特性同熔丝前;
当PR置为‘1’,用户密码校对正确后,可写;
当PR置为‘0’,任何情况下不可写;
(7)存储区名称:
擦除密码
40~43
4
任何情况下不可读,不可更改
(8)存储区名称:
擦除计数器
44~51
8
不起作用
每校验一次擦除密码,不论对错,擦除计数器减1,应用区共可擦64次
5.3.3CPU卡预备知识
5.3.3.1COS简介
作为敏感数据和密钥信息的安全存储介质,智能卡的安全性除了芯片本身外,还取决于卡内的芯片操作系统或者称智能卡操作系统,即COS。
CPU卡内的资源较多,除了CPU之外,往往还有串行通信电路、存储器、随机数发生器、密码运算模块等,这些都需要COS来进行管理。
从功能上来说,智能卡操作系统主要用于控制数据传输,内存管理和信息处理。
在命令处理时,COS检查各项参数是否正确,以及安全条件是否满足,在此基础上执行相应的操作和数据处理,以实现对文件的访问。
5.3.3.2COS的工作流程和命令处理
COS工作流程可以通过命令处理的过程来详细说明。
命令处理的过程如下图。
图5.2COS命令处理的过程
命令管理是智能卡操作系统的主要内容。
其基本过程是:
终端设备向IC卡发送命令,IC卡则根据执行情况返回应答。
命令与应答结构有四种情形。
情形一:
命令格式:
CLA
INS
P1
P2
00
应答格式:
SW1
SW2
情形二:
P2
Lc
Data
情形三:
Le
情形四:
其中,CLA表示指令的类别,INS表示指令的指令码,P1、P2表示命令的参数,Lc表示数据域DATA的长度,DATA表示命令报文数据域或应答报文数据域,Le表示要求返回数据的长度,Le为00表示返回卡中最大数据长度。
而SW1、SW2卡执行命令的返回代码(状态码)。
每条命令的应答至少由两个字节的状态码组成。
状态码说明命令被处理的情况。
命令返回码的意义见下表。
表5-1命令返回码的意义
序号
SW1SW2
意义
1
9000
命令正确执行
2
61XX
SW2指出仍可得到的应答字节数
3
6200
非易失性存贮器状态未变,命令处理完成但未必正确
4
6281
部分返回数据可能是错的
5
6282
命令处理完成,但在达到Le字节之前,文件或记录已结束
6
6283
选择文件无效,文件或密钥校验错误
7
6284
FCI格式不遵循ISO标准
8
6300
非易失性存贮器状态已变,命令处理完成但未必正确
9
6381
上次写入时,文件已充满
10
63CX
X表示还可再试次数
11
6400
非易失性存贮器状态未变,命令处理夭折
12
6500
非易失性存贮器状态已变,命令处理夭折,无其它信息
13
6581
存贮器失效,非易失性存贮器状态已变,命令处理夭折
14
6700
错误的长度
15
6800
不支持CLA的功能,不给出信息
16
6881
不支持的逻辑通道
18
6882
不支持的安全报文
19
6900
不允许的命令,不给出信息
20
6901
无效的状态
21
6981
命令与文件结构不相容
22
6982
不满足安全状态
23
6983
密钥被锁死
24
6984
参考数据无效
25
6985
使用条件不满足
26
6986
当前文件不是EF或无当前文件
27
6987
安全报文未得到
28
6988
安全报文不正确
29
6A80
数据域参数错误
30
6A81
功能不支持或卡中无MF或卡片已锁定
31
6A82
文件未找到
32
6A83
记录未找到
33
6A84
文件无足够空间
34
6A85
Lc与TLV结构不一致
35
6A86
参数P1P2错误
36
6A87
Lc与P1P2不一致
37
6A88
引用数据未找到(密钥未找到)
38
6B00
命令夭折,在达到Le字节之间文件结束;
偏移量错误
39
6D00
指令码错误
40
6E00
错误的CLA
41
6F00
数据无效
42
9302
银行MAC错误
43
9303
应用已被锁定
44
9401
金额不足
45
9403
密钥未找到(用于银行专用命令)
46
9406
所需的MAC不可用
5.3.3.3COS的传输管理
传输管理器主要是根据卡所使用的通信协议来进行数据收发。
常用的通信协议有T=0和T=1。
IC卡插入读写设备并正确接触后,触点激活,读写设备对IC卡上电。
IC卡发出复位应答,给出后继字符解码方式、检验方式、通信协议等请求。
IC卡和读写设备建立起通信联系后,读写设备向卡发送数据,依据双方约定的通信协议,IC卡对由读写设备发出的命令进行接收。
同时,把对命令的响应按照传通信议的格式发送出去。
IC卡在对命令进行接收的同时,也要对命令接收的正确性作出判断。
这种判断只是针对在传输过程中可能产生的错误预言的,并不涉及命令的具体内容。
当发现检验错误,立刻向读写设备报告,并且请求重发原数据。
如果传IC卡认为对命令的接收是正确的,那么,它一般是只将接收到的命令的信息部分传到下—功能模块,而滤掉诸如起始位、停止位之类的附加信息。
相应地,当IC卡在向读写设备发送应答的时候,则应该对每个传送单位加上信息交换协议中所规定的各种必要的附属信息。
T=1协议的传输基本组成如下:
开始字段信息字段结尾字段
NADPCBLENINFEDC
其中,NAD长1字节,PCB长1字节,LEN长1字节,INF长0~254字节,EDC长1字节;
LEN表示INF的数据长度,EDC为开始字段和信息字段的出错校验码。
5.3.3.4COS的安全管理
当完整的命令信息传到安全管理模块后,COS根据命令的需要来实现卡和终端机之间的相互认证、文件访问权限控制、数据的加密和解密等安全保密功能。
5.3.3.5COS的应用管理和文件管理
应用管理则对卡接收到命令的可执行性进行判断。
COS主要提供了两种对命令可执行性的判断方式。
顺序判断:
即命令只有满足某一系列条件才能进行下一步操作。
另一种是权限判断:
即只有满足某一安全属性才能对文件进行操作。
文件即数据单元或卡中记录的有组织的集合。
COS的整个文件系统按树形结构组织(如下图)。
COS给每一个应用建立一个相关的文件以实现对各个应用的存储和管理。
每个应用下都可有各种基本文件。
利用选择文件命令或其它命令中所指明的短文件标识符可以选择某个文件,并且在以后对该文件进行操作。
图5-3COS的文件组织
文件标识符是文件的标识代码,用2个字节来表示,在选择文件时只要指出该文件的标识代码,COS就可以找到相应文件,同一父文件下的子文件标识符必须是唯一的,MF的文件标识符是3F00。
所有文件都可以通过文件标识符用SELECTFILE命令进行文件选择,MF和DF还可以通过文件名称在任意位置进行选择。
在智能卡操作系统中,文件系统是仅次于安全系统的重要部分,因为它是卡中所有用户数据和程序,或者说所有应用的载体。
根据ISO7816-4,COS支持的基本文件类型包括主文件MF(MasterFile)、专用文件DF(DedicatedFile)和基本文件EF(ElementaryFile)。
(1)主文件MF
主文件MF在IC卡中唯一,且必须存在。
MF是卡片文件系统的根,在MF下可以有多个专用文件DF和基本文件EF,IC卡复位后,卡片自动选择MF文件为当前文件。
MF下可有一个内部保密文件ISF,它是一个TLV格式的线性变长文件。
MF下还可有一应用列表文件,它是一个TLV格式的线性变长文件,它包含有卡片支持的应用目录。
MF的大小由用户在创建的时候指定,且仅受可用空间限制。
在创建的时候同时指定MF的ISF文件的大小以及创建DF、创建EF和创建KEY记录的访问控制权限。
MF在卡片复位后自动被选择,此外在任何文件下均可通过文件标识符3F00或文件名称1PAY.SYS.DF01来选择MF。
在创建文件后,MF不能自动被选择,需要执行选择文件命令。
(2)专用文件DF
一个DF则代表一个应用。
每一DF下可以存放多个EF。
任何一个DF在物理上和逻辑上都保持独立,都有自己的安全机制和应用数据,可以通过应用选择实现对其逻辑结构的访问。
专用文件DF下可有一个内部保密文件ISF,它是一个TLV格式的线性变长文件。
DF的大小由用户在创建的时候指定,且不能超过32K。
DF在创建的时候同时指定ISF文件的大小以及创建EF和创建KEY记录的访问控制权限。
(3)基本文件EF
基本文件EF用于存放用户数据、程序或密钥,分为内部保密文件ISF和工作基本文件。
存放密钥的文件称为内部保密文件ISF(InternalSecretFile),它不需用户专门创建,而与MF/DF同时被建立。
ISF文件可存放的密钥类型包括口令密钥、内部认证密钥、外部认证密钥、内部密钥、重装PIN的密钥、线路加密密钥、线路认证密钥或线路加密认证密钥等。
ISF文件在任何情况下密钥数据均无法读出。
存放用户数据的文件称为工作基本文件WEF(WorkingElementaryFile),分为透明文件、线性定长文件、循环文件、线性变长文件、ECC参数文件、ECC密钥文件。
透明文件也称二进制文件,为一个数据单元序列,数据以二进制为单位按地址进行读写,其中的数据由应用者解释。
线性定长文件每条记录长度相同,数据以记录为单位进行存储。
循环文件为具有固定长度记录的环形文件。
循环文件及下面所述的计算文件只能顺序增加记录,当写记录时当前写入的为第一条记录,上一次写入的为第二条记录,依此类推。
当记录写满后再执行写命令将自动覆盖最早写入的记录,最后一次写入的记录的记录号总是为1,上次写入的记录的记录号为2,依次类推。
线性变长文件的每一条记录长度是可变的。
更新记录时,新的记录长度必须与卡中记录长度相同,否则更新无效。
变长记录的格式TLV如下:
T
L
V
T(Tag):
记录标识、L(Length):
记录数据域长度、V(Value):
L字节数据
5.3.3.6COS的常用命令
同学们,不同的智能卡硬件平台和生产厂商可能有功能相同的操作系统,但是也很可能不相同,我们在以后的工作和学习过程中要根据实际情况来确定具体的开发和应用方法。
在ISO7816规范中确定了不同的操作系统应该遵循的规范,特别是命令规范和文件规范。
而不同的厂商会对ISO-7816的命令规范进行扩充,形成自己的命令集,扩充的命令主要是:
(1)创建文件系统和密钥系统的相关命令。
这一部分是必不可少的,在进行CPU卡的应用开发时执行相关的命令也是必需的。
在ISO-7816中规范此类命令的数据格式和应答格式。
(2)密码相关命令,比如RSA和ECC基本运算、加密、解密、签名、认证命令,对于当前大多数的PKI环境下的智能卡应用此类命令也是必不可少的。
(3)行业命令,比如银行应用、税控应用、社保应用的相关行业命令。
我们在进行应用开发时要注意选择带有支持相关行业命令的操作系统的CPU卡。
下面列举一些常用的命令及其格式:
(1)应用锁定命令AppliBlock
应用锁定命令使当前选择的DF失效。
命令结构如下:
P2=00命令执行成功后可锁定应用,但该应用可以用应用解锁命令解锁,可由选择命令选择进入该文件,但返回‘6983’。
P2=01此命令执行成功后将永久锁定应用,IC卡将不允许执行解锁应用。
应答报文只有SW1和SW2:
(2)应用解锁命令AppliUnblock
应用解锁命令用于解锁当前DF。
如果对于某应用连续三次解锁失败,则IC卡将永久锁定此DF。
意义
命令正确执行(含应用未被锁定之情况)
状态标志未改变
写EEPROM不成功
文件不支持安全报文
引用数据无效(密钥类型不正确)
安全报文数据项丢失
安全报文数据项不正确
未找到引用数据(线路保护生成密钥)
9303
应用或文件已被永久锁定
(3)卡片锁定命令CardBlock
卡片锁定命令使卡中所有应用失效。
当用卡片锁定命令永久锁定卡之后,所有后续的命令都将回送状态码‘6A81’,表示不支持此功能,且不执行任何其它操作。
应答报文只含SW1和SW2:
不支持安全报文
(4)外部认证命令ExternAuth
外部认证命令要求IC卡中的应用验证密码。
操作过程是:
将命令中的数据域用指定外部认证密钥解密,然后与先前产生的随机数进行比较,若一致则表示认证通过,置安全状态寄存器为该密钥规定的后续状态值,错误允许计数器恢复成初始值;
若比较不一致则认证失败,错误允许计数器值减1,且不改变安全状态寄存器的值。
外部认证命令的报文结构如下:
若P2为00,则使用第一个外部认证密钥。
命令报文数据域DATA由8字节加密后的随机数组成。
应答报文可能的状态码如下:
密钥校验错误
认证失败且不给出其它信息
写EEPROM失败
长度错误
命令不支持安全报文
认证方法锁定(密钥被锁定)
不是外部认证密钥
未找到ISF文件
参数P1、P2不正确
密钥未找到
(5)取随机数命令GetChallenge
取随机数命令请求一个用于安全相关过程的4字节随机数。
除非掉电、选择了其它应用或又发出了一个取随机数命令,否则该随机数将一直有效。
取随机数命令的报文结构如下:
应答报文如下:
应答报文可能的状态码如下:
命令不支持安全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 智能卡实验 第五 智能卡 实验