深入理解7816(2)---关于ATR
智能卡(此处主要指接触式CPU卡)本身始终处于被动的状态,所以终端设备在和智能卡进行数据交互的时候,需要首先给智能卡发指令,智能卡才会对应地给出应答。而智能卡告诉终端的第一句话就是ATR,亦即“复位应答”。
想象一下,如果让你为智能卡设计一个通讯协议,该怎么设计?
因为ATR是智能卡上电后说的第一句话,所以一定要确保这句话被准确地接收。在设计通讯协议的时候,有必要设计一个可以让收发双方进行“握手”的“同步头”,如果接收方能够正确解析同步头数据,那么双方就可以在默认的参数下正确地进行后续的通讯。ATR里面的第一个字符TS就相当于这个“同步头”。如果终端给卡片上电后,能够收到第一个字符并解析出“3B”或者“3F”就表示卡和终端在默认参数下的通讯已经建立起来了。
既然ATR是卡片和终端说的第一句话,终端自然希望卡片能多透露些信息,以免让终端在后续的对话中茫然无措。从终端的角度看,主要想了解的就是如下信息:
1)卡片支持的通讯协议是T=0还是T=1,或者是其他的T = X ?
2)除了默认参数,卡片是否还支持其他的通讯参数?
3)和某些行业应用有关的特殊信息。
在ATR的第二个字符T0中,就给出了这些必要的信息是如何在ATR中存在的。T0的高4位用来指出是否存在表示通讯协议以及通讯参数的“接口字节”TA、TB、TC、TD(当然如果不存在接口字节,则使用默认的协议与通讯参数),T0的低4位则用来指出可以反映卡片自定义信息的历史字节个数。
在某些行业应用规范里,会对历史字节有明确的规定,用来区分芯片商、卡商、COS版本等,同时可能还会规定用某些历史字节来作为卡片密钥分散的分散因子。
那么这些通讯参数有哪些呢?主要包括通讯协议,字符传输速率,以及超时等待时间和数据块的大小等。
接口字节采用逐层嵌套的方式来表示的,第一层TA1、TB1、TC1、TD1是否存在由T0的高4位决定,第二层TA2、TB2、TC2、TD2是否存在则由TD1的高4位决定,依此类推,每层的TDi的高4位都决定了下一层的TA(i+1)、TB(i+1)、TC(i+1)、TD(i+1)是否存在。
如果卡片在ATR里给出的信息表明其可以支持若干种通讯协议,终端该如何和它打交道呢?相当于卡片用默认的“英语”告诉终端“I can speak English, Chinese, Japanese, French。”
这个时候终端可以进行协议选择(PPS)也可以不选择直接使用默认协议,如果进行协议选择的话,那么PPS就是终端在收到ATR后发出的第一个指令,相当于终端告诉卡片“OK, Let’s speak in Chinese !”,然后它们“就可以用中文拉呱了”。如果不进行协议选择的话,终端则使用默认的协议给卡片发送其他的APDU指令,相当于二者使用默认的英语进行后续对话,“Could you please bring me a cup of coffee? ”,“OK, What’s your prefer? ”,“Cappuccino”,“Here you are. ”。。。。。。
深入理解7816(2)---关于ATR的更多相关文章
- 深入理解7816(2)---关于ATR【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcrk.html 深入理解7816(2)---关于ATR 智能卡(此处主要指接触式CPU卡)本身始终 ...
- 深入理解7816(1)---- 关于F/D和etu【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0101gkss.html 深入理解7816(1)---- 关于F/D和etu 对于刚接触智能卡的工程师来说, ...
- 深入理解7816(3)-----关于T=0 【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcyp.html 深入理解7816(3)-----关于T=0 卡片和终端之间的数据传输是通过命令响应 ...
- 深入理解7816(1)---- 关于F/D和etu
对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭.尤其是在看到复位应答中的F和D设置,以及对应的etu的时候,会觉得有些复杂和难以理解. 其实 ...
- 深入理解7816(4)---关于T=1
之前说过的T=0协议,基本上相当于是透明的数据,也就是说从应用的角度看,通过T=0传递的TPDU数据信息大都可以直接转换为对应的APD命令响应数据,“字节”是T=0协议最小的数据传输单元. 对于T=1 ...
- 深入理解7816(3)-----关于T=0
卡片和终端之间的数据传输是通过命令响应的方式进行的,卡片只能被动地接收命令,并且给出响应.所有的命令都是以命令头开始,而该命令被完整地执行后(无论结果对错),必须以包含状态字(SW1 SW2)的响应结 ...
- 深入理解7816(5)-----关于文件DF/EF/MF/FID/AID/SFI
刚开始接触CPU卡的时候,对于各种文件.应用的定义容易模糊不清,通常不能准确地界定什么是文件?什么是应用?DF和EF的区别真的就像计算机里的目录和文档那样吗?FID.AID.SFI这些概念都在什么时候 ...
- ATR的计算
TR=∣最高价-最低价∣和∣最高价-昨收∣和∣昨收-最低价∣的最大值 TR = max(high-low, abs(last-high), abs(last-low)) ATR = MA(TR, N) ...
- Java知识总结:Java反射机制(用实例理解)
概念理解: 反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来 实现对自己行为的描述( self-representation )和检测( examination) ,并能 ...
随机推荐
- Effective C++笔记(一)——条款26-29
条款26:尽可能延后变量定义式的出现时间 为何要尽量延后? 当程序中途跳出而导致变量未被使用,但是必须进行构造和析构. 最佳初始化变量 直接在构造时指定初值比构造之后再赋值效率高(条款4) ... s ...
- 【细说Java】Java的重写与隐藏
重写与隐藏,有些书上或介绍上可能名称不一样,但都大差不差.以前只了解重写,隐藏也听说过,但没有详细了解过,趁现在,整理一下这两方面的内容吧. 首先,先说一下概念方面的东西. 重写 重写:子类继承了父类 ...
- [置顶] 宏途_LCD调试流程.
今天在调试宏途的LCD屏时,开始是开机屏幕不亮,背光都不亮,可能板子已经损坏,一般通过测试电流电压简单验证,(注:硬件引脚没焊好也会引起读lcd id出现错误!!!)出现这个问题一般是因为引脚没焊好, ...
- 简单的HDFS思维导图
- BLOG PLUGINS
文章分享按钮 (1)加网(JiaThis) (2)百度分享 文章关联推荐 每篇博文下面可以显示你博客中与该篇博文有些关联的几篇文章,也就是智能推荐,一方面可以增加你博文的曝光率和点击率,一方面也可以给 ...
- (转)OpenSSL命令---pkcs12
用途: pkcs12文件工具,能生成和分析pkcs12文件.PKCS#12文件可以被用于多个项目,例如包含Netscape. MSIE 和 MS Outlook. 用法: openssl pkcs12 ...
- (转)在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送 From: http://saeapns.sinaapp.com/doc.html 1,在 ...
- Java_io体系之PipedWriter、PipedReader简介、走进源码及示例——14
Java_io体系之PipedWriter.PipedReader简介.走进源码及示例——14 ——管道字符输出流.必须建立在管道输入流之上.所以先介绍管道字符输出流.可以先看示例或者总结.总结写的有 ...
- struts2.1.3之后使用自定义Filter
struts2中 ActionContextCleanUp, StrutsPrepareAndExecuteFilter, StrutsPrepareFilter,StrutsExecuteFilte ...
- 有利于SEO的DIV+CSS规范小结
一.CSS文件及样式命名 1.CSS文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: ...