[摘要]
智能卡又叫smartcard或IC卡,是一种应用非常广泛的设备,本文闲话少说,单从技术面对接触式智能卡接口协议ISO7816做一个详细的分析。[关键词] 智能卡、ISO7816、嵌入式
智能卡接口
智能卡接口如下图所示:
pin脚定义如下表:
Pin |
名称
|
用途
|
C1 |
Vcc |
Power connection through which operating power is supplied to
the microprocessor chip in the card |
C2 |
RST |
Reset line through which the IFD can signal to the smart card's
microprocessor chip to initiate its reset sequence of instructions |
C3 |
CLK |
Clock signal line t hrough which a clock signal can be provided
to the microprocessor chip. This line controls the operation speed and provides
a common framework for data communication between the IFD and the ICC |
C4 |
RFU |
Reserved for future use |
C5 |
GND |
Ground line providing common electrical ground between the IFD
and the ICC |
C6 |
Vpp |
Programming power connection used to program EEPROM of first
generation ICCs. |
C7 |
I/O |
Input/output line that provides a half-duplex communication
channel between the reader and the smart card |
C8 |
RFU |
Reserved for future use |
智能卡有三种操作电压,5V for class A,3.3V for class B,1.8V for class C. 一个智能卡至少要支持其中一种,也可支持多种,但必须是连续的。
智能卡上电及掉电过程:
1、拉低RST脚
2、提供电压VCC
3、IO设为接收模式(须上拉)
4、提供时钟CLK
a)、cold reset时序如下图所示:
(b)、warm reset如下图所示:
(c)、deactive 掉电过程:
1、拉低RST脚
2、拉低CLK
3、拉低IO
4、停止供电
时序如下图所示:
(d)、Clock Stop:
有些卡支持clock stop,若IO线在1860个CLK内没有动作,则可按如下时序停止提供CLK
电压选择及传输协议选择:
(a)、电压选择/class selection:
1、若复位应答含有当前class的指示,则继续当前class,若没有,则应执行掉电过程,10ms后再提供复位应答里提供的class。
2、若复位应答里没有class指示,则继续当前class。若复位应答后不能正常操作,则应该执行掉电过程,10ms后可提供另一个class.
3、若没有复位应答,则应当执行掉电过程,放弃或是提供另一个class.
Class 选择流程如下图所示:
(b)、选择传输参数及协议
1、如果TA2存在,则智能卡只能工作在指定模式,应立刻切换到些模式进行操作。
2、如果TA2不存在,若智能卡只支持一种工作模式,则应立刻切换到该模式,若支持多种则可有两种操作:a)切换到智能卡提供的第一种工作模式。b)在当前工作模式下进行PPS exchange,在智能卡所支持的模式中切换工作模式。
PPS exchange:
1、只能由操作设备发起
2、如果智能卡收到错误的PPS exchange,则不做任何响应
3、如果智能卡收到正确的PPS exchange,则应发送PPS response.
4、若超时不响应或是发送了错误的PPS,操作设备应该执行掉电过程。
PPS exchange 过程如下图所示:
PPSS--0xFF
PPS0--bit8 set to 0, bit5,6,7 indicate present of PPS1,PPS2,PPS3,bit4-bit1 indicate transmit protocol.
PPS1--buartrate if present encoded in the same as TA1,from Fd to Fi,Dd to Di.if net present continue with Fd and Dd.
PPS2--SPU encoded in the same way asthe first TB for T=15,If an interface device does not transmit PPS2, or if it transmits PPS2 = '00', it proposes not to use SPU
PPS3--is reserved for future use.
PCK--Exclusive-oring all the bytes PPSS to PCK inclusive shall give '00'. Any other value is invalid.
如果PPS exchange成功,PPS response则应返回,正确的PPS response如下:
PPSS_R--0xFF
PPS0_R--低4位应该和PPS0的低4位一样,如果第5位为1,则PPS1_R应该和PPS1一样,否则说明没有PPS1_R并使用Fd和Dd.若第6位为1,则PPS2_R应该和PPS2一样,否则说明没有PPS2_R且不使用SPU,若第7位为1,PPS3_R应该和PPS3一样,否则没有PPS3_R。
复位应答
复位应答包含了智能卡的一些操作信息,如操作电压,工作协议及参数等,应该高度重视。复位应答格式如下:
--初始字节TS:LL
HH HLHH 或HH
LL LLLL 即0x3B或高位在先反向规则0x3F.若红色部分为HHH,则说明低位在先,若为LLL则说明所有传输都为高位在先且反向传输(即L为H),一般的智能卡都为0x3B
--T0格式字节:bit5-bit8表示TA1,TB1,TC1,TD1是否出现表示为Y1,bit1-bit4表示历史字节个数表示为K。
--TA1接口字节:支持的传输参数buartrate.
--TB1无义意
--TC1保护时间
--TDi格式协议字节:bit1-bit4支持的协议,必须从低到高出现。bit5-bit8同T0。若不出现则只支持T0
--TA2特殊模式字节:如果bit8为1,则智能卡必须工作在特殊模式,否则可进入协调模式,若bit5被设置为0,则应切换到TA1所提供的Fi和Di。then implicit values (not defined by the interface bytes) shall apply
--TB2无义意
--TC2 T=0时的等待时间WI WT=WI*960*Fi/f,若Fi为1则为WI*960个时钟周期。WI不能为0,若没有TC2 WI为10
--TCK校验字节:若只有T=0,则不出现,否则从T0到TCK的异或为0
命令格式智能卡命令格式如下图所示:
CLA:表示Class,不能为0xFF
INS:指令码,不能为0x6X或0x9X,这两种用来做为状态字节返回。
P1:
P2:
P3:
T=0传输协议,即字节传输协议时序如下图:
错误校验采用奇偶较验,错误较验时序如下图:
若接收方接收到错误的检验位,刚应该拉低IO线,最少一个ETU,最多两个ETU
T=1传输协议,即块传输协议 待续
阅读(3285) | 评论(0) | 转发(0) |