百富学院IC卡基础知识软件部编百富计算机技术(深圳)有限公司百富学院第一部分IC卡简介百富学院IC卡定义与起源•IC卡定义没有一个统一的概念,一般地认为IC卡是将它是将包含处理器或存储器的集成电路(IntegratedCircuit)嵌入符合相关标准的卡基(物理特性满足标准)中,做成卡片形式。•1976年法国布尔(BULL)公司首先发布IC卡产品。百富学院IC卡物理结构简介百富学院IC卡的相关标准•IC卡得到了广泛使用和推广,国际标准化组织制定的ISO/IEC7816标准协议簇起了重要作用。ISO/IEC7816成为了其它众多卡类标准的基础。ISO/IEC7816协议簇包含15卷,规定了从物理尺寸、电气特性、通信协议及应用规范等标准。每卷的版本单独管理。•EMVCo组织是三大发卡组织,Europay、MasterCard和Visa成立的组织,制定了事实上的金融行业卡类的国际规范EMV规范。现行标准版本是EMV4.2June2008。百富学院•非接触式IC卡标准主要有:1.ISO/IEC10536针对紧靠的卡类2.ISO/IEC14443针对接近型卡类10cm3.ISO/IEC15693针对读卡距离50cm目前市面上最常见的是第二类,后续的讲解均是针对这类.百富学院IC卡通信方式•IC卡根据其通信方式可以分为:1、非接触式2、接触式两类。在每种通信方式里还可以按照不同的分类标准继续划分。比如,非接触式类别里根据通信介质还可以分,微波卡,光卡,电磁耦合卡。百富学院卡片分类——非接触式卡•非接触式IC卡的工作电源方式有有源和无源两种。应用以无源的为主。通常使用的无源非接触式IC卡与读卡设备之间通过13.56MHz的无线频率电磁波通信和电源传输。EM微电子公司125KHz的卡片也有相当范围的使用.动物跟踪识别,门禁系统.目前微波卡也有了一定的应用,利用微波波长短,穿透能力强的特点,进行远距离传输,应用在停车场、高速公路收费站。还有光电卡,利用光学效应与电效应的转换进行数据通信。百富学院卡片分类——非接触式卡百富学院卡片分类——接触式卡•接触式IC卡通过卡片表面8个金属触点与读卡设备进行物理连接来实现电源供给和完成通信,必须保证触点接触的稳定性。百富学院IC卡功能•IC卡根据内部封装的集成电路是否有处理器可以分为:1、存储卡2、智能卡两大类。百富学院存储卡•存储卡,内部只具有存储器和控制电路,使用时只做数据存储用,可读/写。多数的存储卡写操作是有条件的。市面上常见的存储卡有:AT24C04/64之类的EEPROM的卡式封装。SLE4442/28之类的具备口令保护功能的逻辑加密卡。百富学院智能卡•智能卡也称为CPU(中央处理器)卡,它具有数据读写和处理功能•银行的IC卡通常是指智能卡。因具有安全性高、可以离线操作等突出优点。所谓离线操作是与联机操作相对而言的,它可以在不连网的终端设备上使用。离线操作不仅大大减少了通信时间,也能够在移动收费点(如公共交通)或通信不顺畅的场所使用。百富学院IC卡的应用•1995年底,国家金卡办为统筹规划全国IC卡的应用,组织拟定了(金卡工程非银行卡应用总体规划)。为保证IC卡的健康发展,在国务院金卡办的领导下,信息产业部、公安部、卫生部、国家工商管理局等各个部委纷纷制定了IC卡在本行业的发展规划。1、金融行业磁卡向符合PBOC规范的智能卡迁移,目前进展缓慢;2、建设部制定了建设部的IC卡计划,指定了多个IC卡推广试点的城市,推广IC卡在公交、水、电、气行业的应用,形式多样,广泛,但是卡类复杂,管理杂乱,难以统一。3、其它的如,社保、医疗、交通、身份证、广播电视等涉及相当多的行业。百富学院第二部分通信协议简介百富学院接触式存储卡•接触式存储卡的通信协议因具体厂商而定,一般的都遵循IEC/ISO7816中同步卡的复位规范和数据传输规范。•数据通信采用同步方式,也就说,数据的变化(反映在C7触点上)与时钟信号(反映在C3触点上)紧密相关,时钟信号由终端控制,卡片根据时钟信号的沿来锁定/驱动数据信号。百富学院AT24C04通信•AT24C04是将一片EEPROM封装在卡中,通信遵循TWI协议。一个位的读过程如下:百富学院符合ISO7816-3的接触式智能卡•接触式智能卡内部具有处理器,这里介绍符合IEC/ISO7816-3规定的智能卡,它的通信模式是:异步半双工串行方式。•异步:数据通信时数据信号与时钟信号不是同步关系,数据位的持续时间是双方约定的固定的。•串行:数据在数据信号线上按位一个一个的传输。•半双工:某一时刻数据只能是一个方向。百富学院接触式智能IC卡操作过程上电卡片激活数据交互释放下电卡插入卡槽后给卡提供稳定电源冷复位/热复位终端与卡通过规范定义的应用层结构进行数据交互失效复位信号-停时钟-释放I/O-关闭电源百富学院非接触式IC卡操作顺序•PCD与PICC之间正常操作流程:PCD打开电磁能量场PCD轮询卡选定一张卡数据交互关闭能量场,结束交互百富学院接触式智能IC卡状态图静默状态上电状态等待复位等待命令状态百富学院•数据传输过程中的位有效持续时间时间,称为ETU。ETU的大小跟时钟信号不再同步,而是根据时钟频率Fc和速率调节因子Di与时钟调节因子Fi有关,计算公式:ETU=Fi/(Fc*Di)比如,Fi=372,Di=1,Fc=4.8MHz那么,ETU=372/4.8=77.5us.•问题:如果Fi=372,Di=1且Fc=3.57MHz的条件下ETU=?你想到了什么?接触式智能IC卡位持续时间百富学院接触式智能IC卡字符帧格式•数据按位顺序传输,在上层协议中数据是按字符组织的,字符的结构:1个低电平起始位(bs)8个数据位(bx)1个偶校验位(bp)不定长的停止位(bt)但是这里的顺序是跟卡所支持的有关的,在IEC/ISO7816-3里规定了两种方式:1、如果卡片采用反向传输逻辑,那么逻辑数据与数据信号的电平关系是反的,低电平表示逻辑‘1’,反之表示逻辑‘0’,字符是高位先传。2、如果卡片采用正向传输逻辑,那么逻辑数据与数据信号的电平关系是一致的,低电平表示逻辑‘0’,反之表示逻辑‘1’,字符是低位先传。这个逻辑-电平关系有卡复位应答的第一个字符给出。空闲时I/O信号线为高电平.注意:起始为位始终是低电平,与逻辑无关。停止位始终是高电平,也与逻辑无关。百富学院接触式智能IC卡复位应答ATR•ATR(AnswerToReset),复位分为冷复位和热复位两种.复位成功后就可以与卡片进行数据交互.•复位信号有效后(信号由低变高),卡片将回送相应的一组接口字符.这些字符用来协商特定的后续使用参数信息和历史字节信息.•接口字符每个均有自身的含义,详细信息请查阅相关文档/规范.百富学院接触式智能IC卡通信协议•ISO/IEC7816-3指定了以下协议类型,T=0,面向字符半双工传输协议T=1,面向块半双工传输协议T=14,非国际通用的协议,德国实现T=15,非传输协议,主要进行参数控制其它,保留。在这些协议类型中不同的协议处理通信的方式有些不同。百富学院接触式智能IC卡通信中复位应答时序•在卡片复位时,复位信号生效(复位信号上升沿)到卡回送第一个字符下降沿之间的这段时间称为复位等待时间.•在卡片复位时,卡片回送的连续两个字符起始位下降沿之间的等待时间称为字符间等待时间(CWT).•在卡片复位时,卡片送回所有的复位应答字符的总时间长度称为复位总时间长度.百富学院接触式智能IC卡通信中T=0时序•T=0是面向字符通信协议,数据以字符为单位组织解析.卡片前一个接收或发送的字符起始位下降沿到下一个发送字符的起始位下降沿之间的时间称为工作等待时间(WWT).百富学院接触式智能IC卡通信中T=1时序•T=1是面向块通信协议,数据以块为单位组织解析.卡片上一个接收块最后字符起始位下降沿与下一个发送的块的第一个字符起始位下降沿之间的等待时间称为块等待时间(BWT).卡片发送时,块的连续两个字符起始位下降沿之间的等待时间称为字符等待时间(CWT).百富学院非接触式数据通信•ISO/IEC14443规范指定了两类通信调制协议,称为A类和B类.•A类卡通信1)在PCD-PICC的过程中采用100%的ASK(幅移键控),编码方式为变形米勒码,速率为106Kbps.2)在PICC-PCD的过程中采用通/断负载的方式形成一个fc/16的负载波(ASK),编码方式为曼彻斯特,速率也为106Kbps.百富学院•B类卡通信1)在PCD-PICC的过程中采用10%的ASK(幅移键控),编码方式为NRZ码,速率为106Kbps.2)在PICC-PCD的过程中采用通/断负载的方式形成一个fc/16的负载波(BPSK-NRZ),速率也为106Kbps.百富学院非接触式IC卡防冲突机制•非接触式的射频能量场是开放式的,很容易会出现在某时刻有多张卡在场内.因此非接触式卡必须要解决冲突问题.•A卡的防冲突机制是基于位的.协议规定了PCD最后发送的一个间隙(PAAUSE)与PICC的第一个应答载波调制边之间的时间是个固定值,这样当一条命令发出后,如果有多张卡响应,数据如果不一样,那么必然出现至少有一个位的时间片是全调制的.百富学院非接触式T=CL协议•T=CL是一种分组半双工传输协议,协议中所用帧的格式符合ISO/IEC14443-3中规定的格式.•类似接触式的T=1协议,数据分组传输,帧格式:百富学院非接触式T=CL协议•等待时间FWTFWT用于检测传输错误或PICC无应答.PICC可以通过一个S-Block请求来扩展等待时间FWTX.申请个临时的等待时间.•协议支持链接功能,用以传输超过FSD或FSC(最大分组信息长度)的数据.百富学院第三部分TAL应用层百富学院TTL数据结构•ISO/IEC14443/ISO/IEC7816-3中定义的TTL处理过程.终端始终是主动方,卡片是被动方.所有的数据交互由终端按照协议定义格式的命令发起.卡片在接收到命令后做相应地响应.百富学院应用协议数据单元(APDU)结构•命令-响应对,由终端发起的命令和卡片响应构成。•APDU-C:命令头(CLA+INS+P1+P2)命令体(Lc+数据域+Le)•APDU-R:响应体(数据单元)响应尾域(状态字节SWA+SWB)百富学院终端命令数据结构终端命令数据结构structAPDU_REQ{ucharcmd[4];/*命令头*/ushortle;/*期望接收字节数*/ushortlc/*待发送数据单元长度*/uchardatas[256];/*待发送数据单元*/};百富学院卡片响应数据结构•卡片响应数据结构:StructAPDU_RSP{ucharlength;/*响应数据单元长度*/ucharswa;/*第一个状态字节*/ucharswb;/*第二个状态字节*/uchardatas[256];/*响应数据单元*/};百富学院命令类型•根据结构APDU_REQ中Le,Lc两个参数可以把命令分为四种类型:ifLc0thenifLe0thencase4elsecase3endif;elseifLe0thencase2elsecase1endif;endif;百富学院T=0协议下的命令处理过程•在此协议下,任何数据交互命令均由终端发送一个5字节的命令头启动.命令头封装:指令类别CLS,命令码INS,命令参数P1,P2,P3。其中P3根据命令类型不同有不同的映射方式。卡片在接收到命令头后,根据实际情况返回1.过程字节,指示终端下一步动作2.状态字节,指示终端本次通信完成SWA=’90’SWB=’00’表示命令执行成功.百富学院第四部分常用接口芯片百富学院接触式IC卡接口芯片•公司目前使用的接口芯片主要有:NCN6001-一款电特性不是很突出且软件控制简单但过程复杂的芯片,SPI控制接口;TDA8023-一款电特性不是很突出但软件控制过程很简单的芯片,I2C控制接口.AT83C26-一款电特性很突出但软件控制过程很复杂的芯片,I2C控制接口.三款芯片均不