Chinaunix首页 | 论坛 | 博客
  • 博客访问: 411541
  • 博文数量: 73
  • 博客积分: 3120
  • 博客等级: 中校
  • 技术积分: 785
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-20 12:26
文章分类

全部博文(73)

文章存档

2013年(4)

2012年(10)

2011年(32)

2010年(27)

分类: 嵌入式

2010-11-10 17:13:39

[摘要]智能卡又叫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:LLHH HLHH 或HHLL 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) |
给主人留下些什么吧!~~