微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用安全处理器和多协议接口简化智能卡设计

利用安全处理器和多协议接口简化智能卡设计

时间:01-03 来源:互联网 点击:


  经过40000个~45 000个时钟周期后,终端向卡的RST端发出一个高电平,以激活卡。卡须在RST上升沿后400个~40000个时钟周期内向终端发送一个ATR字符应答终端。ATR包含后续通信操作的详细信息,包括T=0或T=1协议的选择。如果没有指定协议,则终端默认通信协议为T=0。


  ATR序列的第一个字符定义为起始字符TS。TS的前4位包含1个低电平起始位,然后是两个高电平位,最后是一个低电平位。这种固定位模板允许TS同步信息传输。TS的后续三位如果全为高平电,则表示后续数据为正向约定解码(传数据时,低位在前);如果这些位全部为低电平,则表示后续数据为反向约定解码(传数据时,高位在前)。EMV规范允许使用反向约定,但推荐在新的卡设计中使用正向约定。

  TS的最后三位由两个低电平位和一个校验位组成,10位字符帧的最后一位是校验位,该位电平保证这一帧中1的个数为偶数。

  ATR序列的第二个字符为格式字符,称为T0。这个字符包含两部分,用来确定后续ATR所包含的字符。T0的高4位称为Y1,用来指示随后所发送的TA1、TB1、TC1或TD1,0个~4个字符的发送取决于Y


1中有多少位置1。

  T0的低4位用K表示,代表数字0到15,表示后续ATR序列中包含的“历史字节”。“历史字节”提供卡的一般信息,比如卡的制造商、卡内芯片、芯片ROM或卡的使用期限等。ISO-7816和EMV规范都没有对该部分信息传输进行准确的定义。


  如果ATR中带有TB1字符,则它传递的是智能卡对编程电压的要求:b1~b5位(称为PI1)指出编程电压;b6和b7(称为II)指出编程需要的最大电流。与基本EVM兼容的ATR,TB1=00,说明VPP没有连接到智能卡。

  TC1字符传送的数字N决定从终端向智能卡发送的两个相邻字符之间需要加入的额外安全时间。这个数字不会影响从卡到终端的字符传输,也不影响两个相反方向的字符传输。N所代表的二进制数指明加入额外安全时间的ETU数目。当TC1=FF时,两个字符之间使用最短的延迟时间,在T=0协议中,这个时间是 12个ETU,在T=1协议中,这个时间是11个ETU。N可以是0~255的任何数字。如果ATR中不含TC1,终端将默认为TC1=00而继续进行后续工作。由于N可以在字符传输时加入额外的时间,它可以将输入速率降到最低。表2是对EMV规范中T=0协议的ATR总结。

  一旦 ATR过程结束,开始交易过程。不论是哪种特定的操作,交易都是由终端向智能卡发送指令,智能卡执行这些指令(并可将执行结果返回给终端)。卡的操作可以是简单地指定内存读操作,也可以是比较复杂的,如执行一次加密运算。不论是哪种,终端与卡之间的通信都按照应用协议数据单元(APDU)的格式进行。

  终端发出的特殊指令信息(C-APDU)将从卡端产生一个相应的应答信息(R-APDU),这些信息称为APDU指令对。EMV规范对这两种指令格式进行了详细定义,由终端发送的指令基本结构必须包含4Byte的报头,随后是长度可选的数据部分,如图2(a)所示。报头的4个字节包括CLA、INS、 P1和P2,它们规定了指令的类别,指令码及支持特定指令的参数。C-APDU报头后面跟随数据的字节数,由命令Lc指定,而终端希望智能卡应答信息的字节数由指令Le指定。


  智能卡的应答信息(R-APDU)也由多个字节组成,如图2(b)所示,格式化成3段,分别是数据(主体)和代表指令处理状态的 SW1、SW2(尾部)。正常完成指令时,智能卡返回SW1的值为0x90和SW2的值0x00,其它返回值表示运行错误或有提示信息产生1。

  为了处理全部的终端交易,安全微控制器DS5002可以编程实现握手和数据传输协议。我们已经针对DS5002和DS8007(包含在DS8007评估板内)开发完成了一些例程,实现终端与IC卡的会话过程,包括上电、ATR、APDU和断电。如果将评估板连接到串口接收终端,评估板及其软件将以 38400的波特率通过RS232串口传输数据。

  关于该软件的详细说明已经超出本文范畴,但我们可以提供基于DS5002和接口芯片DS8007设计方案所能完成的基本智能卡接口的源代码,设计方案的电路如图3所示。软件可从ftp://ftp.dalsemi.com/pub/microcontroller/app_note_software/目录下的an4029_sw.zip文件中获得。该文件包含全部的C代码(main.c,ds8007.c,LCD Funct.c)和产生HEX文件(DS8007.hex)所需的汇编源代码(Startup.a51)。这些代码用Keil PK51和mVision集成开发环境编译并链接。mVision项目文件(ds8007.Uv2)也在这个 .zip文件中可以找到。编译完成后,.HEX文件被下载到DS8007评估板并运行。

  为了测试例程,我们使用了一片ACS提供的基于微控制器的智能卡。这种卡可以执行内嵌的ACS智能卡操作系统版本1,或ACOS1。该卡具备如下特点:用来存放应用数据的8kB E2PROM、DES和MAC功能、基于随机数的过程密钥、相互认证的密钥对、持卡人可以更改的PIN码,符合ISO-7816-3,T=0协议。

  ACOS1文件规定IC卡应该返回19Byte的复位数据(ATR),返回T0的数值是0xBE。高半字节(0xB)表明TA1、TB1和TD1将在 TS后续的ATR中出现。低半字节(0xE)表明ATR响应中有14个历史字节。因此,从卡传送过来的ATR一共有19个字节。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top