第34章接触式IC卡.docx
《第34章接触式IC卡.docx》由会员分享,可在线阅读,更多相关《第34章接触式IC卡.docx(29页珍藏版)》请在冰豆网上搜索。
第34章接触式IC卡
第3~4章接触式IC卡国际标准
接触式IC卡国际标准为ISO/IEC7816。
共10部分:
ISO/IEC7816—1,物理特性。
ISO/IEC7816—2,触点尺寸和位置。
ISO/IEC7816—3,电信号和传输协议。
ISO/IEC7816—4,行业间交换用命令。
ISO/IEC78l6—5,应用标识符的编号系统和注册过程
ISO/IEC78l6—6,行业间数据元。
ISO/IEC78l6—7,关于结构化卡询问语言行业间命令
ISO/IEC7816—8,与安全有关的行业间命令。
ISO/IEC7816—9,附加的行业间命令和复位应答。
ISO/IEC7816—10,用于同步卡的电信号和复位应答
本章介绍第1、2、3和第10部分,其余的部分在下一章中作专门介绍
3.1ISO7816-1接触式IC卡的物理特性
所谓接触式IC卡,就是在使用时,通过有形的金属电极触点将卡的集成电路与外部接口设备直接接触连接,提供集成电路工作的电源并进行数据交换的IC卡。
其特点是在卡的表面有符合ISO/IEC7816标准的多个金属触点。
3.2ISO7816-2接触式IC卡的触点尺寸和位置
接触式IC卡有8个触点,即集成电路引脚,从C1到C8,如图3.1所示。
国际标准ISO/IEC7816-2对接触式集成电路卡的触点尺寸和芯片位置以及功能作了具体的规定。
图3.1接触式IC卡的触点位置
IC卡的电极膜片(即8个触点)既可安排在塑料基片的正面,也可安排在反面。
触点之间的排列顺序必须按图3.1所示排列。
各触点在卡基平面的几何尺寸、位置均以卡触点的接触面的左边沿和上边沿为基准边。
其触点的尺寸及位置如图3.1所示。
在ISO/IEC7816-2中对每个触点的几何形状和最大面积虽然没有规定,但却规定了每个触点表面积的内切矩形面积不得小于2mm×1.7mm。
各触点之间应相互隔离。
而相邻两个触点之间的最大距离为0.84mm。
8个触点所占最大面积没有规定,但规定最小面积不小于9.62mm(长)×9.32mm(宽)的矩形平面。
表2.4接触式IC卡的触点功能
3.3ISO/IEC7816-3电信号和传输协议
IC卡支持两种传输协议:
同步传输协议和异步传输协议。
前者在ISO/IEC7816—10中定义,适用于逻辑加密卡,后者在7816—3中定义,适用于内含微处理器的智能卡。
3.3.1操作条件
1.操作条件的类别
根据卡的电源电压不同,卡的操作条件分成两类:
A类VCC上的电压为5V。
B类VCC上的电压为3V。
A类卡应该可以与A类接口设备或AB类接口设备配合工作
B类卡应该可以与B类接口设备或AB类接口设备配合工作。
设计时要注意,这两类卡处于A类操作条件下时都不应该被损坏。
3.3.2触点的电压和电流值
8个触点的定义:
I/O:
IC卡的串行数据的输入和输出端。
VCC:
电源电压输人端(由卡选用)。
GND:
地(参考电压)。
VPP:
编程电压输入端(仅适用于A类,由卡选用)。
CLK:
时钟或定时信号输入端(由卡选用)。
RST:
复位信号(总清信号),可由接口设备提供复位信号给RST触点;或由IC卡内部的复位控制电路在加电时产生内部复位信号。
如果实现内部复位,必须提供电压到VCC端。
剩下的两个触点的用途将在相应的应用标准中规定。
3.3.2触点的电压和电流值
VCC的正常范围为标准电压±10%
Icc的最大值A类为60mA,B类为50mA
Vpp有两种状态:
空闲状态:
Vpp=0.95~1.05Vcc
工作状态:
Vpp=0.975~1.025P
3.3.3IC卡的操作过程
接口设备和卡之间的对话通过以下操作顺序实现
——接口设备连接卡并“激活”电路;
——卡的冷复位(Reset);
——卡对复位的应答(AnswerToReset);
——在卡与接口设备之间连续进行信息交换;
——接口设备“释放”电路。
接口设备“激活”电路由以下操作顺序实现:
——RST处L状态;
——VCC加电;
——接口设备的I/O处于接收方式;
——VPP上升为空闲状态(0.95~1.05VCC);
——提供稳定的CLK。
在复位应答期间,CLK的频率范围:
A类(1MHz~5MHz)
B类(1MHz~4MHz)。
当信息交换结束或异常终止(卡末响应或检测到卡己拔掉)时,接口设备“释放”电路。
电路的释放操作应在卡的触点与接口设备触点机械断开之前结束。
接口设备“释放”电路由以下操作顺序实现。
——RST为状态L(低电平);
——CLK为状态L(低电平);
——VPP释放(如果它已被激活);
——I/O应置为空号(低电平);
——VCC释放。
3.3.4卡的复位
复位有冷复位和热复位两种:
冷复位;当IC卡的电源电压和其他信号从静止状态按一定顺序加上时,称为冷复位,IC卡发回应答信号。
热复位:
在电源电压VCC和时钟CLK处于激活状态下,接口设备发出的复位,称之入热复位。
IC卡发回应答信号。
1.冷复位
2.热复位
3.时钟停止
对于支持时钟停止的卡,当接口设备不希望从卡得到信息时,并且I/O保持在状态Z至少1860个时钟周期(tg),接口设备可停止CLK上的时钟(在时间Te)。
当时钟被停止(从Te到了Tf),CLK应保持在状态H或状态L,这个状态由参数X指明(见3.3.5节)。
在时间Tf,接口设备重启时钟并且I/O上的信息交换可在至少700个时钟周期后继续(时间th在Tf之后)。
4.释放
3.3.5异步传输的复位应答(answertoreset)
1.复位应答的构成
复位应答信号以字符为单位(称为字符帧)进行传送。
(1)字符帧T=1说明1说明2
第10位bl为偶校验位
每一位在I/O线的持续的时间定义为基本时间单元etu。
在复位应答期间,1etu=372个时钟周期.即1etu=372/f。
一个数据字节由8个bit组成,由低到高用b1~b8表示。
接收方在每一位的中间采样,采样时间应少于0.2etu。
两个连续字符之间的延时(两起始位下降沿之间)至少为12个etu、包括字符宽度10个etu和一段保护时间,在保护时间内,接口设备和卡都处于接收状态。
图
在复位应答期间,卡发出的两个连续字符的起始位下降沿之间的延时不得超过9600etu,这个最大值称为初始等待时间。
当奇偶校验不正确时,从起始位下降沿之后的10.5etu开始,收方发送状态A(低电平)作为出错信号。
该信号宽度为1个etu或2个etu
发方检验I/O是在起始位下降沿之后的11etu处、如I/O处于状态Z,则认为接收是正确的;如I/O处于状态A,则认为出错.收方期望发方重发有错的字符(对使用T=0异步传输协议的卡必须重发,对接口设备和其他的卡则是可选择的)。
图
(2)复位应答信息的内容
卡产生的复位应答信息共有5个部分,按传送的顺序依次为:
初始字符TS、格式字符T0、接口字符TAiTbiTCiTDi(i=1,2,…),历史字符T1T2~TK(最多15个字符)以及校验字符TCK。
其中TS和T0是一定有的。
接口字符和历史字符可选择的,校验字符是有条件的。
在TS之后发送的字符数不个。
1)初始字符TS:
规定传送字符发送顺序与规则。
2)格式字符T0:
3)接口字符TAiTBiTCiTDi(i=1,2,3,…)
4)历史字符T1,T2…TK:
由T0的低4位K指出历史字符的个数,最多15个,历史字符指明了一般信息。
例如:
卡的制造商、卡上插的芯片、芯片上的掩模ROM、卡的生存状态。
5)校验字符TCK
TCK的值应这样选择:
使T0到TCK的所有字符的异或操作结果为零
如用用T=0协议、将不发送TCK,而在所有其他情况下,都发送TCK。
2.全局接口字节TA1TB1TC1TA2TB2
全局接口字节给出接口设备用来计算的一些参数(F、D、I、P、N)。
(1)参数F、D、I、P:
在复位应答期间的初始etu将被其后传送信息的工作etu所代替,F是时钟频率转换因子,D是位速率调整因子,用来决定工作时etu。
初始etu=372/fi秒;工作etu=F/(Dfs)秒。
fi为复位应答期间提供的时钟,fs为工作期间提供的时钟。
fs的最小值为1MHz,F以及fs的最大值由表3.7给出,D由表3.8给出。
最大编程电流:
Ipp=ImA
最大编程电压:
Vpp=PV
PI1的值的范围为5~25,由它给出电压P(单位为伏),即相应的编程电压为5V~25V。
PI1=0表示Vpp不连接到卡,而从Vcc直接生成内部编程电压,PI1的其他值保留给今后使用。
PI2由TB2的b8一b1给出,当存在PI2时,PI1被忽略,PI2的值的范围为50~250,由它给出电压P(单位为0.1V),PI2的其他值保留给将来使用。
(2)额外保护时间N
当N在0~254范围内时,两个字符上升沿之间的间隔=[12十FN/Df]周期。
当N=255时,表示两个相邻字符的上升沿之间的间隔在T=0时为12etu,T=1时为11etu,减至最小。
默认值:
F=372,D=1,I=50,P=5,N=0。
(3)操作模式
复位应答后,卡处于下面两种操作模式之
①TA2存在时是专用模式。
②TA2不存在时是协商模式。
在专用模式
当TA2的b5=0时,F和D使用前述TA1规定的值
当TA2的b5=1时,使用默认值。
b4—b1指出要使用的协议
在协商模式
如果复位应答后无PPS请求,则F和D使用默认值:
如果复位应答后有PPS请求,则由IFD发送带有F和D的PPS请求,使卡从协商模式转到专用模式,并使用该F和D。
另外,在专用模式中,TA2的b4一b1位指出要使用的协议。
3.3.6协议和参数选择PPS(protocolandparametersselection)
在复位应答之后,如果TA2不存在,卡处于协商模式,则允许接口设备向卡发送PPS请求。
只有接口设备允许发出PPS请求,其过程如下:
——接口设备向卡发送PPS请求。
——若卡收到正确的PPS请求,则发出PPS确认信号来应答、否则将超出初始等待时间。
接口设备将卡复位或予以拒绝。
——若成功地交换PPS请求和PPS应答,则使用新的协议类型和传送参数。
——若卡收到错误的PPS请求,则不发回PPS应答信号。
——若接口设备收到错误的PPS应答信号,将卡复位或予以拒绝。
PPS请求和PPS应答信号的组成:
PPS请求和PPS应答信号都是由初始字符PPSS(代码为FF)、格式字符PPS0,后跟三个任选字符PPSl、PPS2、PPS3以及最后一个校验字符PCK组成。
PPS0的作用与TD相似,其中b5、b6、b7分别表示任送字符PPSl、PPS2和PPS3是否存在。
b1~b4选择协议类型,b8留作今后使用。
PPSl给出F和U的参数值。
PPS2给出N值,PPS3待定。
PCK的值是使从PPSS到PCK的所有字符的异或结果为零。
一般情况下,如果PPS应答=PPS请求,则为成功的PPS交换。
3.3.7异步半双工字符传输协议(T=0)
命令总是由接口设备发出的,在一个5字节头中告诉卡要做些什么
1.接口设备发送的命令头
由CLA、INS、P1、P2、P35个连续字节组成。
CLA是指令类别,其值为‘FF’时被指定为PPS
INS是指令码,当其最低有效位为0,且有效的高半字节不是“6”或“9”时,指令码才有效。
P1,P2为参数。
P3编码数据字节(D1、…Dn)的数量n,在命令执行期间传送这些数据字节,数据的传送方向包含在指令码中(由指令的功能决定)。
在输出数据传送指令中,如果P3=0,从卡输出256个字节;在输入数据传送指令中,如果P3=0,不传送数据。
在这5个字节传送后,接口设备等待卡的应答。
2.卡的应答
确认字节ACK,用于控制VPP状态和数据传送。
允许数据传送。
VPP处于空闲状态。
VPP处于激活(工作)状态。
NULL字节(60)用于重置工作等待时间,接口设备等待卡发出下一个应答信号。
状态字节SWl-SW2(SW1=“6×”或“9×”,除“60”;SW2=任意值),用于表示命令结束。
正常结束时,SWl-SW2=“90”-“00”。
当发生与应用无关的错误时,SW1的高有效半字节为6:
‘6E’卡不支持这类指令。
‘6D’指令码不被编码或无效。
‘6B’参数是错误的。
‘67’长度不正确。
‘6F’未给出正确的诊断。
其他值保留于将来使用,
当SWl不是‘6E’,也不是‘6D’时、卡支持该指令。
3.3.8异步半双工分组传输协议(T=1)
无论在复位应答或协议类型选择PPS之后,都由接口设备IFD送出第一组数据来启动协议,以后可交替传送数据块
本协议是根据OSI参考模型分层原则设计的.分三个层次
(1)物理层;数据位的交换参见3.3.5节。
(2)数据链路层:
数据交换由字符部分和分组部分定义,两相邻字符之间的最小时间间隔为11个时间单元(每个字符不使用错误信号,也不重发)。
(3)应用层:
处理命令,每次交换数据至少一个分组或若干个分组。
1.分组基本组成——分组帧(blockframe)
分组包括3个字段,开始字段,信息字段和结尾字段。
其中开始字段与结尾字段是必须有的,信息字段则是可选的。
(1)开始字段
①结点地址(NAD)(nodeADdress,)
bl~b3是源结点地址(SAD),b5~b7是目的结点地址(DAD).b4和b8用于Vpp状态控制。
当地址未用时,将SAD和DAD置“0”。
由IFD发送的第一个分组的NAD,确定了SAD和DAD的逻辑关系。
在随后传送的块中也包含相同的SAD/DAD地址对。
例如由IFD发送的分组,其SAD的值为X,DAD的值为Y,由ICC发送的分组,其SAD为Y,DAD为X。
这属于一个逻辑连接、标记为(X,Y)。
当SAD和DAD为其他值时,则属于另一个连接。
k协议控制字节PCB(Protoco1ControlByte)
协议定义3种基本分组类型;
信息分组(I-block),用于应用层传送信息。
接收准备分组(R-block),用于传送正向或反向应答,它的信息字段不存在。
管理分组(S-block),在IFD和ICC之间交换控制信息,它的信息字段是否存在取决于控制功能。
l长度LEN(length):
LEN指出被传送的信息字段的字节数(0一254字节)。
(2)消息字段INF(INformationfield)
INF字段可选,可以是应用数据或控制和状态信息,被传送的字节数由LEN指出。
(3)结尾字段
校验码,可以用纵向冗余校验LRC(1字节)或循环冗余校验CRC(2字节)。
LRC的值与分组中所有字节进行异或运算得结果0,关于CRC的值参见ISO/IEC:
3309
2.专用接口参数
在复位应答中.当第一次在TDi-1(i>2)中出现T=1时,则此后的TAi、TBi、TCi被用作协议参数
(1)信息字段长度
卡和接口设备允许接收的最大信息长度(分别用IFSC和IFSD表示),IFSC由专用接口字符TAi(i>2)给出,其值在1~254范围内,默认值为32。
IFSD的初始值为32。
在协议执行过程中由IFS请求和IFS应答调整IFSC和IFSD。
(2)字符等待时间CWT
在同一分组内两相邻字符上升沿之间的最大时间称为字符等待时间,由Tbi的b4到b1给出字符等待时间整数CWI,经计算得CWT
CWT=(2CWI十11)etu
CWI的最小值为12工作单元,CWI的默认值是13。
(3)分组等待时间(BWT)
发送到卡的最后一个字符的上升沿与从卡发出的第一个字符之间的最大时间称为分组等待时间。
由TBi的b8~b5给出分组等待时间整数BWI,经计算得BWT,计算公式如下;
BWT=2BWI×960×372/fs十11etu
在此处,0<BWT<9,而BWT>9保留将来使用。
BWT的默认值为4。
分组等待时间用来检测不作出应答的卡。
(3)分组等待时间(BWT)
发送到卡的最后一个字符的上升沿与从卡发出的第一个字符之间的最大时间称为分组等待时间。
由TBi的b8~b5给出分组等待时间整数BWI,经计算得BWT,计算公式如下;
BWT=2BWI×960×372/fs十11etu
在此处,0<BWT<9,而BWT>9保留将来使用。
BWT的默认值为4。
分组等待时间用来检测不作出应答的卡。
(2)分组部分
①操作过程
在复位应答或协议类型选择之后的第一个分组是由IFD传送给IC卡的,可以是信息分组(I—block)或管理分组(S—block)
在传送一个分组之后,发送方应该收到确认,才能继续发送下一个分组。
信息分组内有一个发送序列号N(S).N(S)是在传送一个信息分组之后加1(模2)。
接收准备分组(R—blockk)内有一个N(R)、它的值等于下一个要传送的I—block中的N(S)。
R—b1ock用于链接。
管理分组(S—block)有请求分组S(request)—block和应答分组S(response)—block两种,在接收到请求分组后发出一个应答分组。
②链接
分组传输协议具有链接功能,允许接口设备IFD或IC卡传送的信息超过IFSD或IFSC规定的长度。
分组的链接情况受I—block中的协议控制字节PCB中的M位控制
M=0,表示当前的I—block是链的最后一个分组;
M=1,表示链还跟有后面的分组
3.4ISO/IEC7816—10同步卡的
电信号和复位应答简介
主要内容:
ISO/IEC7816—4
ISO/IEC7816—5。
4.1ISO/IEC7816—4(行业间交换用命令)规定的范围
1.在接口设备与卡之间传送的命令和应答信息内容。
2.在复位应答期间由卡发送的历史字节内容。
3.当处理交换用行业间命令时,在接口见到的文件结构和数据
4.在卡中的文件和数据的访问方法。
5.定义在卡中的文件和数据访问权限的安全结构。
6.安全报文的交换方法。
7.对由卡处理的算法的访问方法,但不描述这些算法。
4.2数据结构
指在接口处见到的数据的逻辑结构。
4.2.1文件组织
三种文件:
主文件MF(masterfile):
表示文件根的强制性唯一专用文件,必须有。
专用文件DF(dedicatedfile):
包含文件控制信息和任选的供分配用的存储器的文件,可以是其他DF或EF的父文件
基本文件EF(elementaryfile):
共享同一文件标识符的数据单元或记录的集合,不能包含子文件
下图表明了三类文件之间的关系。
基本文件有2种:
内部基本文件:
存放的数据由卡进行解释,即为了达到管理和控制的目的、由卡来分析和使用这些数据。
工作基本文件:
卡不能对文件中的数据进行解释,而是由外界来使用这些数据。
基本文件的结构有4种:
(1)透明结构:
从接口看到的文件是一个数据单元序列。
(2)具有固定长度记录的线性文件。
(3)具有可变长度记录的线性文件。
(4)具有固定长度记录的环形文件。
4.2.2数据访问(存取)方式
1.文件访问方式
当一个文件不能被默认(隐式)选择时,至少可采用下述方法之—进行选择:
(1)利用文件标识符(identifier)进行访问:
每—·文件有两字节长的标识符,MF的标识符=3F00。
允许不同文件具有相同的标识符,但直接处于给定DF下的所有EF和DF应具有不同的文件标识符。
(2)依靠路径进行访问:
路径Path从MF或者当前的DF的标识符开始,而以被选文件的标识符结束,在这两个标识符之间可能有一串DF标识符,其方向由“父”指向“子”。
如果不知道当前DF的标识符,可以用“3FFF”数值作为路径的开始。
·
(3)利用短EF标识符进行访问:
短EF标识符有5位代码(其值在1—30之间),短EF标识符不能用在路径中或作为文件标识符。
(4)用DF名字进行访问:
DF名字的长度为1到16字节,为避免选择的二义性,在一张卡中的每一个DF名字应是唯一的。
2.数据访问方式
数据可以作为记录、数据单元或数据对象(dataobject)访问。
(1)访问记录:
在记录结构的EF中,可以用记录标识符或记录编号来访问,记录标识符和记录编号是一个无符号的8位整数,其可用值从01到FE,00保留于专用,FF保留于将来使用。
记录标识符是由应用提供的,假如在信息的数据字段中,记录是一个“simple—TLV数据对象”,那么数据对象的第一个字节即为记录标识符。
在一个EF中.每—个记录的记录编号是唯一的,且是顺序安排的。
(2)访问“数据对象”:
按数据对象的头(即标志tag)进行访问。
在ISO/IEC7816—4协议中支持两种数据对象:
BER-TLV数据对象(basicencodingrules-TagLengthValue)
Simple-TLV数据对象
①BER—TLV数据对象:
包括2个或3个字段,其中T字段由1个或几个字节组成,L字段由1个或几个字节组成,假如L字段不空,则V字段的长度为L个字节,若L字段为空,则无V字段。
a.T字段:
T字段的第一个字节是数据对象标志的类别(class)、类型(type)和编号(number)。
b8—b7表示标志类别,b8b7=00为通用类;01为应用类;10为上下文特定类;11为私用类。
b6表示标志类型,0为原型数据对象,1为结构数据对象。
b5一b1的意义与标志的长度有关,如长度为1个字节,b5—bl为标志的编号,且不能为全“l”;如长度大于1个字节,则b5—bl为全“1”,下一字节的b8位为1(如再下一字节仍为编号),b7一b1为编号,最后一个编号字节的b8位为0。
b.L字段:
当L字段为单字节时,b8=0,b7—bl的数据是V字段的字节数。
当L字段为多字节时,b8=1,b7—b1的数值表示本字段后跟的字节数,在这些字节中的数值才表示V字段的字节数。
c.V字段:
某些原型BER—TLV数据对象的V字段由0个、1个或多个力Simple—TLV数据对象组成。
其余的由0个、1个或多个数据项组成。
结构数据对象的V字段由0个、1个或多个BER—TLV数据对象组成。
②Simple—TLV数据对象:
由2个或3个字段组成。
T字段为单字节,其值从1到254,例如用作记录标识符。
L字段由1个字节或3个字节组成。
如L字段的第1个字节的内容从00到FE,则表示L字段由1个字节组成;如为FF,则表示第2,3两个字节示出L的值,即L字段由3个字节组成。
如L字段为空,则不存在V字段。
(3)访问数据单元
在透明结构的EF文件中,每—个数据单元的位置由命令(command)的偏移值给出,其下一个数据单元的位置由偏移值加1后产生。
如IC卡没有给出数据单元长度,则默认其长度为1个字节。
4.3卡的安全结构
在执行命令和/或访问文件时、安全状态要与安全属性进行比较。
4.3.1安全状态
安全状态表明完成下列操作后的当前状态:
(1)复位应答(ATR)或协议类型选择(PPS)
(2)完成认证过程的一条命令或一串