基于DS5002和接口芯片DS8007实现智能卡接口设计

网友投稿 257 2022-11-12

基于DS5002和接口芯片DS8007实现智能卡接口设计

最初,卡的规范规定供电电压为5V±10%(A类卡),现在已更改为3V±10%(AB类卡),以后要转变成1.85V±10%(ABC类卡)。最终目标是在2009年6月全部淘汰A类卡,仅保留AB类或ABC类卡。

终端接口要求

字符传输中的每一位定义为基本时间单元(ETU),ETU的时间长短与智能卡的CLK时钟周期成线性关系。ATR通信过程中的位定时称为初始ETU。

任何通信字符都包含10位数据,持续时间为10ETU。第一位是起始位,它总是低电平,起始位之前I/O默认为高电平。每个字符的最后位是校验位,由发送方决定,可能是高电平,也可能是低电平,其作用是保证整个字符中1的个数为偶数。图1给出了一个位模板的例子,每个字符由10位组成,包括1个起始位、8个数据位和1个校验位。每两个字符之间通过一个最小安全周期进行分隔。

在ISO-7816规范中,4位用于选择卡通信协议。目前16种协议中只用了两种,分别命名为T=0和T=1。这两种都是半双工模式(任何时刻,数据只能单向传输)、异步通信方式。T=0是以基于字符的通讯格式,而T=1是基于数据块的通信格式。所有兼容EMV标准的智能卡必须支持T=0或T=1协议,所有终端必须同时支持这两种协议。

当卡插入终端后,所有触点保持低电平状态,电源VCC立即加到触点C1。终端在确认电压稳定并满足规范限制后,将自身的I/O触点置成接收模式,并向卡的C3提供时钟(CLK)信号。在时钟信号开始的200个时钟周期内,终端须将I/O口置为高阻态(接收模式),卡的I/O口则置于发送模式。

经过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。

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)的格式进行。

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何利用java控制鼠标操作一些重复的事情
下一篇:分布式消息服务DMS与开源Kafka对比
相关文章

 发表评论

暂时没有评论,来抢沙发吧~