免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1336 | 回复: 1
打印 上一主题 下一主题

smart card [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 03:35 |只看该作者 |倒序浏览
智能卡(SmartCard),也叫IC卡,它是一个带有微处理器和存储器等微型集成电路芯片的、具有标准规格的卡片。智能卡必须遵循一套标准,ISO7816是其中最重要的一个。
下面将从以下几个方面展开,对Smart Card进行讨论:
1. 电气特性
2. 复位应答(ATR – Answer to Reset)
3. T=0 传输协议
电气特性:
1. ISO7816非常严格地要求了卡片的外形、厚度、触点位置和电信号。下面可以看到正常Smart Card的管脚分布:
C1 电源信号VCC 3/5 V                                                            C2 复位信号RST
C3 始终信号CLK 采用27MHz的分频 – 3.375/4.5/6.75MHz        C4 预留 某些CA厂商会加以利用,如NDS
C5 接地信号GND                                                                    C6 编程电压VPP 一些存储芯片需要高电压(12.5/21V)进行编程
C7 数据通信I/O                                                                       C8 预留
1.1  VCC:   对于供电又分两种,一种是5V供电,两外一种是3V供电。目前,市面上见得多还是5V,左右偏差在0.25V以内,也就是说压值范围为4.75~5.25V,另外它的电流为200mA。
1.2  CLK:   Smart Card工作的时钟信号由外部供给,一般来说有两个,3.579545MHz和4.9152MHz。相比之下,前者用得更多一点。当然对于这两种时钟频率,要得到数据通信所需的波特率9600s/s,那么他们的分频系数自然也不一样,分为为372分频和512分频。
1.3 RST:    复位信号是如何产生的呢?管脚必须满足5个条件: 1)RST管脚拉低;2)CLK管脚拉低;3)VPP管脚不供电;4)I/O管脚拉低;5)VCC管脚不供电。
1.4  字符传输:
       Smart Card的字符传输采用的是异步半双工模式,这种异步的模式很像个人电脑上的RS232通信。传输一个字符时,除了8Bits的数据外,还加了以下几个Bits:
       起始位 -- 用于字符帧的同步
       校验位 -- 用于校验检测
       Guard Time -- 两个字符间的间隔时间
       Guard Time一般为两个bit的时钟周期,这一点很像PC上的UART的通信,用两个停止位来间隔相连的字符。
2. 复位应答(ATR):
        当RST信号被触发,即将RST管脚被拉低400~4000个时钟周期,Smart Card检测到这个信号后,将会回传“复位应答”ATR信号出来,ATR最多包含33个字节,有以下几个段:
       初始化字符(TS)                                          格式化字符(TO)
       接口字符(TAi, TBi, TCi, TDi) (i=0/1)          历史字符(T1, T2, T3 … TK)
       校验字符(TCK)
它们包含哪些意思呢?请看下面的解析:
       首先,TS初始化字符展示了电平的逻辑,反向约定(Inverse Convention即负逻辑)和正向约定(Direct Convention即正逻辑)。那么一般来说,回传TS有两个可能的HEX值0x3F和0x3B,0x3F代表反向约定,0x3B代表正向约定。
       格式化字符TO段分为两个部分,Bit Map和No of History Bytes,各占4个bits。
       接口字符的TAi定义了串口传输中最基本的特性,其中包含两个4-Bits的DI和FI,当中的FI是时钟频率的转换因子,DI则是定义了比特率的调节因子。通过这两个因子,我们可以通过以下的公式验算出Work ETU的大小:
  1. Work ETU = (1/D)*(F/f) sec (f为工作的时钟频率)
        正常来说,一个ETU(Elementary Time Unit),一个bit的时间周期。因此我们计算得出,传输一个字符帧为12个ETU=1 START + 8 DATA + 1 PARITY + 2 GUARDTIME。
接下来,便会有个问题了,字符通信是需要D和F这个两个调节因子,保证其工作时序,而这两个因子又是Smart Card复位后,由通过字符传输回传的ATR获得的,那么谁来保证ATR传输的时序呢?原因是这样的,Card复位时,会有D和F的两个初始值,分别D=1,F=372。而且,复位时时钟频率f会在1~5MHz范围之内,比较常见的是3.579545MHz。
         我们可以计算得出Default ETU = 1/1*372/3579545 sec;
         Baud Rate = 1/Default ETU = 9600s/s;
         TC提供的Guard Time也是如此,Default值为2个bit的时钟周期。
         TD则是要说明的是传输协议的类型,标准里罗列了16种,但是常用也就是两种T0和T1,即异步半双工字节传输和异步半双工块传输。因此,我们知道多数Smart Card复位时,是工作在3.579545MHz和9600s/s上的,一旦复位后,就根据ATR的值重新进行配置工作时钟频率、波特率和Guard Time。使其能更高效的通信。
3. T=0 传输协议:
下面两张图来说明T=0传输协议的细节,
       从上图,我们不难看出,IFD和Smart Card之间存在主从设备关系。在通信之前,我们知道ATR中协议是多于一个,因此接口设备会发一个PTS信号,以便确认通信协议的类型。
CLA - 指令集 (FF 是预留给 PTS)                                                INS - 指令码 (例如,读内存)
P1 - 指令跟的参数1 (例如,内存地址)                                         P2 - 指令参数2
P3 - 数据长度
       另外,再说说Smart Card的两个状态字SW1和SW2。它们是用来通知上位设备目前Smart Card的工作状态,如果工作正常,则返回值如下所示:
       SW1,SW2 = 0x90, 0x00
如果工作异常了,也能通过这两个状态字获得一些信息,如:
       SW1 = 6E - Card 不支持该款指令集
               = 6D - 无效的指令码
7816标准 智能卡读卡器 smartcard T0 T1 T14协议区别和相同点:
guardTime就是停止位。
区别:
      1) T0 异步半双工字符传输协议 停止位是2, T1是1。
      2) T1是异步半双工块传输协议。 有起始域,信息域, 中止域 组成一个 块。
      3) T14叫做私有协议。 
      5) T14没有奇偶校验, ATR期间时钟因子也不同。像irdeto是620

论坛徽章:
105
狮子座
日期:2013-08-15 09:47:21处女座
日期:2013-10-09 10:04:27射手座
日期:2014-07-18 17:24:58处女座
日期:2014-07-24 09:29:49天秤座
日期:2014-07-24 09:30:06白羊座
日期:2014-07-24 15:26:28双子座
日期:2014-11-12 10:13:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之澳大利亚
日期:2015-05-11 09:56:392015年亚洲杯之巴勒斯坦
日期:2015-05-11 09:59:282015年亚洲杯之韩国
日期:2015-05-11 10:16:082015亚冠之水原三星
日期:2015-05-13 09:50:46
2 [报告]
发表于 2011-12-23 15:10 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP