Smart Card

2024-02-24 17:58
文章标签 card smart

本文主要是介绍Smart Card,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

智能卡(SmartCard),也叫IC卡,它是一个带有微处理器和存储器等微型集成电路芯片的、具有标准规格的卡片。智能卡必须遵循一套标准,ISO7816是其中最重要的一个。

下面将从以下几个方面展开,对Smart Card进行讨论:

1. 电气特性

2. 复位应答(ATR – Answer to Reset)

3. T=0 传输协议

电气特性:

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 预留

对于供电又分两种,一种是5V供电,两外一种是3V供电。目前,市面上见得多还是5V,左右偏差在0.25V以内,也就是说压值范围为4.75~5.25V,另外它的电流为200mA。

Smart Card工作的时钟信号由外部供给,一般来说有两个,3.579545MHz和4.9152MHz。相比之下,前者用得更多一点。当然对于这两种时钟频率,要得到数据通信所需的波特率9600s/s,那么他们的分频系数自然也不一样,分为为372分频和512分频。

复位信号是如何产生的呢?管脚必须满足5个条件,1)RST管脚拉低;2)CLK管脚拉低;3)VPP管脚不供电;4)I/O管脚拉低;5)VCC管脚不供电。

字符传输:

Smart Card的字符传输采用的是异步半双工模式,这种异步的模式很像个人电脑上的RS232通信。传输一个字符时,除了8Bits的数据外,还加了以下几个Bits:

起始位 -- 用于字符帧的同步

校验位 -- 用于校验检测

Guard Time -- 两个字符间的间隔时间

Guard Time一般为两个bit的时钟周期,这一点很像PC上的UART的通信,用两个停止位来间隔相连的字符。

复位应答(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的大小:

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。使其能更高效的通信。


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

这篇关于Smart Card的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742883

相关文章

2024/9/8 c++ smart

1.通过自己编写的class来实现unique_ptr指针的功能 #include <iostream> using namespace std; template<class T> class unique_ptr { public:         //无参构造函数         unique_ptr();         //有参构造函数         unique_ptr(

idea插件【1】Smart Tomcat

一、简介 在开发过程中除了springboot项目支持jar运行,很多场景下需要使用到tomcat外置服务部署,此时我们可以使用idea插件Smart Tomcat (Smart Tomcat 插件是一个用于简化与 Tomcat 服务器交互的工具,它提供了一些额外的功能来增强开发体验)帮助我们进行快速的服务部署与调试 二、集成 1. 安装Smart Tomcat 在idea plugin

hdu5159 Card(组合数学)BC26

/* 问题描述 桌子上有a张牌,每张牌从1到a编号,编号为i(1<=i<=a)的牌上面标记着分数i , 每次从这a张牌中随机抽出一张牌,然后放回,执行b次操作,记第j次取出的牌上面分数是 Sj , 问b次操作后不同种类分数之和的期望是多少。 输入描述 多组数据,第一输入数据组数T ,接下来T行,每行两个整数a,b以空格分开 [参数说明] 所有输入均为整数 1<=

M1 card crack

判断卡片类型 这张卡就是本次实现的对象 ,一张废弃的校园卡,以下所有操作都以此卡展开 我们使用flipper的NFC功能扫描该卡片。我们直接read 我们得出最终结果该卡是M1 1K卡,也就是S50卡 。 Mifare 1卡是属于非接触式逻辑加密卡。MIFARE MF1是符合ISO/IEC 14443A的非接触智能卡。其通讯层(MIFARE RF 接口)符合ISO/IEC 14443

HDU5159--BC--Card(概率写法,和组合写法)

概率方法 要求出和的期望,期望的基本定理, 和的期望 = 各部分期望的和。 E(sum) = E(1) + E(2) + ... + E(x) ; 每个数在b次中只有选到和没选到两种情况,在b次中被选到的概率p =1 -  (1 - 1/x)^b ; 所以每个数的期望也是 i*( 1-(1-1/x)^b ) 得到sum的期望。 #include <cstdio>#in

【Web3初识系列】如何连接 Binance Smart Chain通过交易对绘制 k 线?

连接 Binance Smart Chain通过交易对绘制 k 线 安装 web3 pip install web3 连接到 Binance Smart Chain 使用公共的 BSC 节点 URL。 from web3 import Web3# 连接到 BSC 公共节点bsc_url = "https://bsc-dataseed.binance.org/"web3 = Web3

方法论:SWOT、SMART

解决方案分析方法论SWOT 什么是SWOT:例子中间件RabbitMQ和RocketMQ队列选择对比S(strengths)优势:RabbitMQ团队多人用过,AMQP跨语言、模型API丰富W(weaknesses)劣势:RabbitMQ阅读过源码的人过少,Erlang开发,二次修改不容易O(opportunities)机会:多个容器平台拥抱RabbitMQ,易用性、扩展性强T(threats)

smart-sso单点登录(三):接入指南

目录 前言1.引入客户端依赖2.应用配置修改3.验证 前言 如果您的SpringBoot应用需要接入到smart-sso,只需要简单的两步即可完成。 1.引入客户端依赖 在您任意的SpringBoot应用中maven的pom.xml配置中增加客户端依赖。 <dependency><groupId>com.smart</groupId><artifactId>smart-s

Smart Home DIY 计划

工作了这么长时间了,感觉自己目前的工作内容很不利于技术水平的提升,对此状况,我心里深感不踏实。因此,我决定利用下班时间,边学习边做,做一套真正可用的智能家居系统,首先部署到自己居住的房间。 对此智能家居系统,我的大致构想如下: 1,采集房间的温度、湿度、光照强度、煤气浓度等数据,并将采集的数据通过智能家居网关传送到自建的web服务器,以供 自己通过外网实时查看数据; 2,可通

施耐德ATV610变频器MODBUS通信(SMART PLC)

MODBUS通信相关内容可以参考专栏的系列文章,常用链接如下: 1、提升MODBUS-RTU通信数据刷新速度 提升MODBUS-RTU通信数据刷新速度的常用方法_modbus rtu通讯慢-CSDN博客文章浏览阅读1k次。SMART PLC的MODBUS-RTU通信请参考下面文章链接:【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客MODBUS通讯