锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

IC卡(智能卡)APDU通讯总结

时间:2023-01-20 18:30:00 fci连接器10075025

前言

总所周知,IC卡(智能卡)在身份验证、公共交通、门禁系统、银行、保险等领域随处可见。本文介绍IC卡读写器涉及一些简单的概念IC卡APDU通信,概念不要做太深入,理解,注重应用,少走弯路。

IC基本概念及相关知识

IC卡 (Integrated Circuit Card,集成电路卡),又称智能卡(Smart card)、智慧卡(Intelligent card)、微电路卡(Microcircuit card)或微芯片卡等。它是微电子芯片嵌入符合要求ISO 在7816标准卡基中,做成卡片形式。IC卡与读写器之间的通信方式可以是接触式或非接触式。由于IC卡体积小,携带方便,储存容量大,可靠性高,使用寿命长,保密性强,安全性高。IC20世纪70年代初提出了卡片的概念,法国布尔公司于1976年首次创造了它IC将该技术应用于金融、交通、医疗、身份证等行业,将微电子技术与计算机技术相结合,提高了人们工作和生活的现代化 。

IC卡种类

按以下几点进行简单分类:
按功能分为复合卡(刷、插、触)和普通卡(触摸,如二代身份证)
按卡片协议类型:卡片类型ISO 14443 A类和B类、ISO 7816 A、B和C类等
按智能卡接口:PICC (非接触),ICC(接触)、SAM

日常生活中很常见ID卡、公交卡、社保卡、CPU卡、M1卡、、SAM卡、PSAM卡等都属于IC卡,我们的第二代身份证属于CPU卡或ID 确切地说,卡属于非接触式CPU卡(标准ISO 14443 TYPE B协议),芯片中使用的加密算法是国密(SM1),大唐微电子、华虹、华大、同方微电子等芯片供应商。手机感应非接触式CPU卡一般都是通过NFC,用手机感应身份证有两个前提,一个是你的手机支持NFC功能,二你要知道对操作身份证指令,例如,读取身份证号码的指令,知道指令后可以开发手机app然后感应读取身份证。

注:同一张卡可能有多种名称,不同的卡功能、用途、协议不同,具体

非接触接口和接触接口的区别

非接触接口:

  • 读写速度达 848 Kbps
  • 内置天线用于访问非接触式标签,卡读取距离可达 50 mm(视标签类型而定)
  • 支持 ISO 14443 第 4 部分的 A 类和 B 类卡,以及 MIFARE Classic? 系列卡片
  • 内建防冲突特征(只能随时访问) 1 张标签)
  • 支持扩展的 APDU(最大 64 KB)

接触接口:

  • 支持 ISO 7816 A 类、B 类和 C 类卡(5 V、3 V 和 1.8 V)
  • 支持 CAC(通用权限卡)
  • 支持 PIV (个人身份验证卡)
  • 支持符合 T=0 或 T=1 协议的微处理器
  • 支持各种存储卡
  • 支持 PPS(协议和参数的选择)
  • 具有短路保护功能
  • 支持扩展的 APDU (T=1:最多 64 K 字节;T=0:最多 512 10 字节)

SAM 接口:

  • 一个 SAM 卡槽
  • 符合 ISO 7816 的 SAM 卡槽(A 类)

注:以上区别来自某个读卡器的介绍,用于辅助认知。实际读卡器的特点以具体设备为准

异步半双工传输协议T=0或T=1

传输协议中定义了两种协议:字符传输协议(T=0)与块传输协议(T=1)。IC可选择支持卡T=0协议或者T=该协议通常由终端支持。在ATR中的TD1规定了后续传输中使用的传输协议(T=0或T=1),如果TD1在ATR如果不存在,假设使用T=0。如果在ATR之后,卡片和终端之间没有参数协商PTS如果过程(详参考)ISO7816相关部分)IC复位后立即采用卡指定的协议。

ATR

ATR也叫复位应答,是一个字节序列,这些字节是由卡作为对复位命令的响应发送给读卡器的。在I/O在电路上,每一次成功的复位操作都会导致I/O上一个由初始字符组成TS后跟最多32个字符的复位应开始。ATR它的功能是告诉读卡器我是什么样的卡片,这样读卡器就可以知道下一步该用什么样的方式与卡片通信。

APDU( ApplicationProtocol data unit)

进行APDU通信的前提是:

  1. 有读卡器(必选)和对应的SDK通讯包(可选)
  2. 知道IC卡的APDU命令

以下是普通银行卡、身份证、社保卡的通讯格式APDU,APDU通信的连接方式可以是串口或USB

APDU格式

APDU智能卡与智能卡读卡器之间传输的信息单元

CLA INS P1 P2 Lc Data Le
指令类别 指令码 参数P1 参数P2 Data长度(不超过255个字节) 返回数据 数据字节数表示响应时回答,0表需要最大长度(不超过255个字节)

命令格式分类

由具体应用分为4种命令报文结构如下:

① 情形1

CLA INS P1 P2 00

② 情形2

CLA INS P1 P2 Le

③ 情形3

CLA INS P1 P2 Lc Data

④ 情形4

CLA INS P1 P2 Lc Data Le

注:从终端设备(Android 或Windows)命令和卡片信息必须以上四种格式发送

响应报文

响应数据 响应状态码

Data SW1 SW1

DATA: 返回给用户的数据,即命令执行结果。

SW1、SW2: 返回命令处理状态。

对应上述四种情况

① 情形1

SW1 SW2

② 情形2

Le字节的Data SW1 SW2

③ 情形3

SW1 SW2

④ 情形4

Le字节的Data SW1 SW2

响应码含义

9000 正常 成功执行
6200 警告 信息未提供
6281 警告 返回数据可能会出错
6282 警告 文件长度小于Le
6283 警告 所选文件无效
6284 警告 FCI格式与P2指定的不符
6300 警告 鉴别失败
63Cx 警告 校验失败(x-允许重试次数)
6400 出错 状态标志位没有改变
6581 出错 内存失败
6700 出错 长度错误
6882 出错 不支持安全报文
6981 出错 命令与文件结构不相容,当前文件不必要
6982 出错 操作条件(AC)不满意,没有验证PIN
6983 出错 定认证方法,PIN被锁定
6984 出错 随机数无效,引用的数据无效
6985 出错 不符合使用条件
6986 出错 不符合命令执行条件(不允许命令,INS有错)
6987 出错 MAC丢失
6988 出错 MAC不正确
698D 保留
6A80 出错 数据域参数不正确
6A81 出错 不支持功能;不允许创建;目录无效;应用锁定
6A82 出错 未找到文件
6A83 出错 未找到记录
6A84 出错 文件预留空间不足
6A86 出错 P1或P2不正确
6A88 出错 未找到引用数据
6B00 出错 参数错误
6Cxx 出错 Le长度错误,实际长度错误xx
6E00 出错 不支持:CLA有错
6F00 出错 数据无效
6D00 出错 指令代码不支持
6900 出错 不能处理
6901 出错 命令不接受(无效)

1xx 正常 需发GET RESPONSE命令

6600 出错 接收通讯超时
6601 出错 接收字符奇偶错
6602 出错 校验和不对
6603 警告 当前DF文件无FCI
6604 警告 当前DF下无SF或KF
9301 出错 资金不足
9302 出错 MAC无效
9303 出错 应用被永久锁定
9401 出错 交易金额不足
9402 出错 交易计数器达到最大值
9403 出错 密钥索引不支持
9406 出错 所需MAC不可用

**上面的61XX的意思是,命令执行成功,还有 XX 字节需要通过 Get Response 命令取回,命令是00 C0 00 00XX(T=0)00 C0 00 01XX(T=1),这个是非常重要,会影响后续数据取回,
不要以为返回61XX理解为发错命令或者没有想要的数据返回。
**

读卡器APDU流程

接触过的读卡器基本都下面这些步骤,基本相同,不同的是命令发送和数据解析

ICC(接触读取),ISO 7816

  1. 打开阅读器
  2. 对卡片上电
  3. 获取ATR(接触卡状态检测,是否存在卡片)和协议
  4. APDU通讯
  5. 下电
  6. 关闭阅读器

PICC(非接触读取),ISO 1443

  1. 打开阅读器
  2. 寻找卡片
  3. APDU通讯
  4. 关闭阅读器

读卡器与卡交互指令

1.读卡器与卡交互第一步一般是选择应用

比如:一张银联IC卡里面可能有多个应用,所谓应用就是卡片和终端之间的应用协议和相关的数据集,读卡器和卡的交互其实就是和应用的交互,卡的交易其实就是选择某个应用做交易。但目前卡商所生产的卡基本上都是一个应用,即便如此,但根据银联卡的规范,应用选择这个步骤也是必不可少的。

  1. 第二步根据上面的返回数据做下一步操作,并最终拿到结果

注:

  • 如果是银联卡,响应数据是TLV格式,解析TLV格式的解析复杂,但有规则,数据内容需要参考银联卡协议规范进行提取;
  • 如果是其它卡,响应数据就是想要的数据是直接数据,进行转码就可以达到想要的数据

小结

上面只是简单介绍了读卡器APDU通讯涉及到的基础知识,深入理解这些协议和规范还是比较复杂的,应用层开发的话了解即可,希望对应Android或Windows应用开发(涉及到读卡的应用)的人员有所帮助,上文如有错误请指出修正。

参考:

https://blog.csdn.net/mpp_king/article/details/88234575

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章