ISO7816完整教程:智能卡标准协议详解
目录
- 一、ISO7816标准概述
- 二、ISO7816-1:物理特性
- 三、ISO7816-2:触点尺寸与位置
- 四、ISO7816-3:电气接口与传输协议(T=0 / T=1)
- 五、ISO7816-4:组织、安全和命令(APDU详解)
- 六、ISO7816-5:应用标识符(AID)注册
- 七、ISO7816-6:行业间数据元
- 八、ISO7816-7:结构化卡查询语言(SCQL)
- 九、ISO7816-8:安全操作命令
- 十、ISO7816-9:卡管理命令
- 十一、ISO7816-10:同步卡
- 十二、ISO7816-11:个人信息验证
- 十三、ISO7816-12:USB接口
- 十四、ISO7816-13:多应用管理
- 十五、ISO7816-15:加密信息应用
- 十六、ISO7816应用场景与相关标准
- 十七、ISO7816与其他智能卡标准对比
一、ISO7816标准概述
ISO7816是国际标准化组织(ISO)制定的智能卡标准,全称为"Identification cards — Integrated circuit cards"(识别卡——集成电路卡)。这是智能卡行业最基础、最核心的ISO7816标准协议族,定义了带触点集成电路卡(ICC,Integrated Circuit Card)的物理特性、电气特性、通信协议和应用数据结构。
ISO7816协议最早于1987年发布,经历了多次修订和扩展。目前ISO7816标准共包含15个部分(ISO7816-1 ~ ISO7816-15),覆盖从物理尺寸到应用层安全的完整技术栈。无论是银行卡(EMV)、SIM卡(GSM/3GPP)、身份证(eID)、护照(ICAO)、还是门禁卡,都建立在ISO7816智能卡标准之上。
ISO7816各部分的角色
ISO7816-1~3定义物理和电气层(硬件),ISO7816-4定义传输协议和命令(软件核心),ISO7816-5~15定义应用层扩展。其中ISO7816-4是开发者最常接触的部分,定义了APDU命令格式和文件系统模型。
理解ISO7816对于智能卡开发至关重要。本文将从ISO7816-1到ISO7816-15逐一详细介绍每个部分的关键内容,帮助开发者全面掌握智能卡ISO7816标准。
二、ISO7816-1:物理特性
ISO7816-1定义了智能卡的物理特性,包括卡片尺寸、抗弯强度、抗扭曲能力、耐温范围、防紫外线能力等机械和物理参数。这些要求确保智能卡在日常使用中的可靠性和耐用性。
卡片尺寸
ISO7816-1物理特性规定智能卡的标准尺寸为ID-1格式:85.60mm × 53.98mm × 0.76mm,与普通信用卡尺寸完全一致。这个尺寸标准来源于ISO/IEC 7810,所有符合ISO7816标准的智能卡均采用此尺寸。
机械强度要求
| 测试项目 | 要求 | 测试标准 |
|---|---|---|
| 抗弯强度 | 在弯曲20mm形变下不损坏 | ISO 7816-1 §4.2 |
| 抗扭曲 | ±15° 扭曲1000次不损坏 | ISO 7816-1 §4.3 |
| 耐温范围 | -35°C 至 +50°C(工作),-40°C 至 +85°C(存储) | ISO 7816-1 §4.3.4 |
| 防紫外线 | UV照射100小时后功能正常 | ISO 7816-1 §4.4 |
| 抗静电 | 耐受±4kV ESD放电 | ISO 7816-1 §4.2.5 |
| X射线耐受 | 0.1Gy剂量后数据不丢失 | ISO 7816-1 §4.5 |
ISO7816-1还规定了卡片的翘曲度和表面光洁度指标。在智能卡生产过程中,芯片模块嵌入卡片后整体厚度偏差不得超过±0.08mm。这些ISO7816物理特性确保了智能卡在全球各种环境下的可靠使用。
三、ISO7816-2:触点尺寸与位置
ISO7816-2定义了智能卡表面金属触点的尺寸、数量和位置。标准ISO7816触点共有8个,排列在卡片正面左上角区域。每个触点都有明确的功能定义。
ISO7816-2触点引脚定义
| 触点编号 | 名称 | 功能 | 说明 |
|---|---|---|---|
| C1 | VCC | 电源电压 | 供电电源(通常3V或5V,现代卡多用1.8V/3V) |
| C2 | RST | 复位信号 | 复位(Reset)信号线,用于卡复位 |
| C3 | CLK | 时钟信号 | 时钟输入(1~5MHz,常用3.5712MHz) |
| C4 | RFU | 保留 | 保留给未来使用(USB接口的D+信号) |
| C5 | GND | 地 | 接地(Ground) |
| C6 | VPP | 编程电压 | 早期用于EEPROM编程电压,现代卡已不使用(接GND或VCC) |
| C7 | I/O | 数据输入/输出 | 串行数据通信(半双工) |
| C8 | RFU | 保留 | 保留(USB接口的D-信号) |
USB接口模式下的触点复用
在ISO7816-12 USB接口规范中,C4和C8触点被重新定义为USB的D+和D-数据线。此时智能卡可以同时支持ISO7816 T=0/T=1协议和USB协议,通过协商机制选择通信模式。
ISO7816-2触点位置严格规定:触点模块的左上角距离卡片上边缘不小于8.25mm,距离左边缘不小于9.25mm。这个位置标准确保了所有符合ISO7816标准的智能卡能在任何标准读卡器中使用。
四、ISO7816-3:电气接口与传输协议
ISO7816-3是智能卡通信的核心,定义了电气接口和传输协议。这部分规定了卡片与读卡器之间的电气信号特性、字符传输格式、ATR(Answer To Reset,复位应答)以及两种经典传输协议:T=0协议和T=1协议。
ATR 复位应答
当智能卡插入读卡器并上电后,读卡器发送复位信号,卡片返回一串字节序列,称为ATR(Answer To Reset)。ISO7816-3 ATR包含卡片的通信参数和能力信息,是卡片与终端之间建立通信的第一步。
ATR结构包含以下部分:
| 字段 | 长度 | 含义 |
|---|---|---|
| TS | 1字节 | 初始字符,定义后续字节的编码约定(直接或反向) |
| T0 | 1字节 | 格式字符,指示后续接口字符的出现情况 |
| TAi/TBi/TCi/TDi | 可变 | 接口字符,定义协议参数(时钟速率、编程电压等) |
| 历史字节 | 0~15字节 | 历史字符,包含卡片的制造商信息和生命期状态 |
| TCK | 0~1字节 | 校验字符,异或校验 |
# 典型的 ATR 示例(直接编码模式)
3B 9F 96 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 7B 05 00 00 BA
# TS=3B (直接编码) T0=9F (TA1/TB1/TC1/TD1存在,历史字节15个)
# TD1=80 (T=0协议,无后续TD2)
T=0 协议详解
T=0协议是ISO7816-3定义的异步半双工字符传输协议,也是应用最广泛的智能卡传输协议。T=0中的"0"表示字符级别的差错处理。在T=0协议中,数据传输以字节为单位,读卡器和卡片交替发送字节。
T=0协议特点:
- 异步半双工通信,I/O线上每个字节由起始位、8个数据位和1个奇偶校验位组成
- 错误处理在字符层面——接收方检测到奇偶校验错误时,在下一个字符开始前发送错误信号
- 命令头由5个字节组成:CLA、INS、P1、P2、P3
- 支持过程字节(Procedure Bytes)机制,用于命令执行的流控
- 默认数据传输速率:使用外部时钟的1/372分频
T=1 协议详解
T=1协议是ISO7816-3定义的异步半双工块传输协议。"1"表示块级别的差错处理。T=1协议在T=0的基础上增加了更可靠的数据链路层,以块(Block)为单位传输数据,每个块包含CRC校验。
T=1协议特点:
- 块结构传输,包含序言字段(Prologue)、信息字段(Information)和结语字段(Epilogue)
- 支持CRC16校验,数据完整性优于T=0
- 支持三种块类型:I块(信息块)、R块(接收就绪块)、S块(监督块)
- 支持链式传输(Chaining),可发送超过256字节的大数据块
- NAD(节点地址)支持逻辑通道多路复用
| 对比维度 | T=0 协议 | T=1 协议 |
|---|---|---|
| 传输单位 | 字符(字节) | 块(Block) |
| 差错检测 | 奇偶校验(每字节) | CRC16(每块) |
| 最大数据长度 | 256字节 | 理论无限制(通过链式) |
| 复杂度 | 简单 | 较复杂 |
| 流控 | 过程字节 | 块序号和WTX机制 |
| 典型应用 | 银行卡(EMV)、SIM卡 | 身份证、护照、高安全应用 |
时钟速率与波特率
ISO7816-3电气特性规定工作电压类别:Class A(5V±10%)、Class B(3V±6%)、Class C(1.8V±10%)。现代智能卡大多支持Class B和Class C。ISO7816时钟频率范围为1~5MHz,最常用的是3.5712MHz和4.9152MHz。数据传输速率为时钟频率的1/372(默认),通过ATR中的TA1接口字符可以协商更高的速率。
五、ISO7816-4:组织、安全和命令
ISO7816-4是ISO7816标准中最重要、开发者使用最频繁的部分。它定义了智能卡的文件系统模型、APDU命令格式和安全消息机制。几乎所有智能卡应用开发都围绕ISO7816-4展开。
文件系统模型
ISO7816-4文件系统采用层次化结构,包含三种文件类型:
| 文件类型 | 缩写 | 说明 |
|---|---|---|
| 主文件 | MF(Master File) | 文件系统的根目录,每张卡有且仅有一个MF |
| 专用文件 | DF(Dedicated File) | 相当于目录/文件夹,可包含EF和其他DF(ADF子类型代表应用DF) |
| 基本文件 | EF(Elementary File) | 存储实际数据的文件,分为透明EF(二进制数据)和记录EF(定长/变长记录) |
APDU命令结构
ISO7816 APDU(Application Protocol Data Unit,应用协议数据单元)是智能卡通信的基本单位。APDU分为命令APDU(Command APDU)和响应APDU(Response APDU)。
命令APDU格式:
命令APDU = CLA INS P1 P2 [Lc] [Data] [Le]
CLA (1字节): 指令类别,0x00=ISO标准,0x80+ = 私有指令
INS (1字节): 指令代码,如 0xA4=SELECT, 0xB0=READ BINARY
P1 (1字节): 参数1,指令的参数字段
P2 (1字节): 参数2,指令的参数字段
Lc (0~3字节): 命令数据字段长度
Data (变长): 命令数据
Le (0~3字节): 期望响应数据长度
响应APDU格式:
响应APDU = [Response Data] SW1 SW2
Response Data (变长): 响应数据(可选)
SW1 (1字节): 状态字1
SW2 (1字节): 状态字2
# SW1 SW2 = 0x9000 表示命令执行成功
深入阅读
关于APDU命令的完整参考,请查阅本站的APDU命令大全,其中详细列出了所有标准APDU命令指令码(INS)、状态字(SW)及使用示例。
ISO7816-4安全消息
ISO7816-4安全消息机制支持安全消息(Secure Messaging,SM),通过加密和MAC保护APDU数据的机密性和完整性。安全消息使用TLV格式(Tag-Length-Value)编码安全数据对象。关于TLV编码的详细说明,请参考本站的TLV格式详解。
六、ISO7816-5:应用标识符注册
ISO7816-5定义了AID(Application Identifier,应用标识符)的注册体系和管理规则。AID用于唯一标识智能卡上的每个应用,终端通过AID来选择与特定应用建立通信。
AID结构由两部分组成:
AID = RID (5字节) + PIX (0~11字节)
RID: 注册应用提供者标识符(Registered Application Provider Identifier)
由ISO分配,全球唯一
PIX: 私有应用标识符扩展(Proprietary Application Identifier Extension)
由RID持有者自行定义
例如,EMV支付应用的AID通常以A0 00 00 00 03(Visa的RID)或A0 00 00 00 04(Mastercard的RID)开头。ISO7816 AID的注册管理确保了全球智能卡应用之间的互操作性。
七、ISO7816-6:行业间数据元
ISO7816-6定义了行业间数据元(Interindustry Data Elements),为不同行业应用之间的数据交换提供统一的数据元定义和数据对象编码规则。
ISO7816-6数据元使用BER-TLV编码(Basic Encoding Rules - Tag Length Value)来表示,每个数据元由一个唯一的Tag标识。标准中定义了多种通用数据元,如:持卡人姓名(Tag '5F20')、卡有效期(Tag '5F24')、持卡人公钥证书等。
关于BER-TLV和EMV TLV的详细编码规则,请参考本站的TLV格式详解和EMV Tag详解。
八、ISO7816-7:结构化卡查询语言
ISO7816-7定义了SCQL(Structured Card Query Language,结构化卡查询语言)。SCQL是基于SQL-92子集的数据库查询语言,专门为智能卡资源受限环境设计。
ISO7816 SCQL支持SELECT、INSERT、UPDATE、DELETE等基本SQL操作,使智能卡可以像微型数据库一样被查询和管理。然而,由于实现复杂度较高,SCQL在实际商业产品中应用较少,大多数智能卡应用仍直接使用ISO7816-4 APDU命令进行数据访问。
九、ISO7816-8:安全操作命令
ISO7816-8定义了与安全操作相关的行业间命令,主要包括:
- 数字签名命令(PERFORM SECURITY OPERATION — PSO):使用卡内私钥生成数字签名
- 哈希计算命令:对输入数据进行密码学哈希
- 公钥/私钥对生成命令(GENERATE ASYMMETRIC KEY PAIR):在卡内安全生成RSA或ECC密钥对
- 验证签名命令:使用卡内公钥验证数字签名
ISO7816-8安全命令为PKI(Public Key Infrastructure)应用提供了底层支持,广泛应用于电子身份证、电子护照和数字签名卡等安全场景。
十、ISO7816-9:卡管理命令
ISO7816-9定义了卡管理命令,包括:
- 文件生命周期管理:创建(CREATE FILE)、删除(DELETE FILE)、激活/停用文件
- 应用生命周期管理:应用的安装、锁定、卸载
- 密钥管理:密钥的导入、导出、替换
这些ISO7816-9卡管理命令通常由发卡机构的发卡系统使用,而非终端用户应用。在GlobalPlatform卡管理规范中,大量引用了ISO7816-9的管理概念。
十一、ISO7816-10:同步卡
ISO7816-10定义了同步传输集成电路卡的标准。与ISO7816-3定义的异步协议不同,同步卡使用时钟信号直接控制数据收发,无需起始位和停止位。
同步智能卡主要用于存储类应用(如电话IC卡、门禁ID卡),采用I²C总线或SPI类协议。由于功能相对简单,ISO7816-10同步卡的成本远低于异步微处理器卡,在低成本、大批量场景中广泛使用。
十二、ISO7816-11:个人信息验证
ISO7816-11定义了通过生物特征识别进行个人身份验证的方法。该标准规定了智能卡如何存储生物特征模板数据(如指纹、虹膜、人脸特征),以及如何在与终端的交互中完成生物识别验证过程。
ISO7816-11生物识别支持"卡内比对"(Match-on-Card)模式,即生物特征数据不出卡,在卡内直接完成比对。这种模式极大地增强了个人隐私保护,应用于高安全身份证件。
十三、ISO7816-12:USB接口
ISO7816-12定义了智能卡USB接口。利用ISO7816-2中保留的C4和C8触点,智能卡可以通过USB协议与主机通信,获得远超传统T=0/T=1的数据传输速率。
ISO7816-12 USB智能卡的主要特点:
- 复用C4(D+)和C8(D-)触点
- 支持USB 2.0全速模式(12Mbps)
- 通过ATR协商在ISO7816协议和USB协议之间选择
- 特别适合需要大数据量传输的应用(如大文件签名、高清照片传输)
十四、ISO7816-13:多应用管理
ISO7816-13定义了多应用环境下的应用管理命令和机制。现代智能卡通常承载多个应用(如一张卡上同时有支付、公交、门禁功能),ISO7816-13为这些应用的独立管理和相互隔离提供了标准化方法。
关键概念包括:应用选择(Application Selection)、逻辑通道(Logical Channels,最多支持4个并行通道)、应用防火墙(Application Firewall,防止应用间非授权访问)。
十五、ISO7816-15:加密信息应用
ISO7816-15定义了加密信息在智能卡上的存储格式和访问方式。该标准使用ASN.1(Abstract Syntax Notation One)描述加密对象的数据结构,并使用PKCS#15作为具体编码方案。
ISO7816-15支持以下加密对象的存储:
- X.509数字证书
- RSA/ECC私钥和公钥
- 对称密钥(AES、3DES)
- PIN码和生物特征模板
- 可信CA证书链
延伸阅读
关于ASN.1语法和编码规则的详细教程,请参阅本站的ASN.1完全教程。ASN.1是理解ISO7816-15和PKCS标准的基础。
十六、ISO7816应用场景与相关标准
ISO7816智能卡在全球数十亿张卡片中运行,覆盖以下主要应用场景:
| 应用领域 | 基于ISO7816的行业标准 | 典型卡片 |
|---|---|---|
| 金融支付 | EMV(Europay Mastercard Visa),基于ISO7816-4 APDU和TLV编码 | EMV信用卡/借记卡、银联IC卡 |
| 移动通信 | 3GPP/ETSI UICC规范,基于ISO7816物理/电气/协议层 | SIM卡、USIM卡、eSIM |
| 电子身份 | ICAO 9303(护照)、ISO/IEC 24727(eID中间件) | 电子护照、电子身份证(eID) |
| 数字签名 | CEN/TS 15480(欧洲公民卡)、PKCS#15 | 数字签名卡、法人证书卡 |
| 门禁考勤 | ISO/IEC 14443(非接触) + ISO7816-4(命令层) | 员工工卡、门禁卡 |
| 公共交通 | 基于ISO7816-4 APDU的私有扩展 | 公交卡、地铁卡 |
| 付费电视 | DVB-CI/CIPLUS | 数字电视CAM卡、CA条件接收卡 |
| 医疗健康 | ISO 21549(健康卡) | 社保卡、健康保险卡、电子病历卡 |
ISO7816与EMV的关系
EMV标准(Europay、Mastercard、Visa联合制定的支付规范)在命令层和数据层完全基于ISO7816-4。EMV交易的每一个步骤——从应用选择(SELECT命令,使用AID)、数据读取(READ RECORD)到卡片认证(GET PROCESSING OPTIONS、GENERATE AC)——都是对ISO7816 APDU命令的具体应用和扩展。EMV标签数据采用BER-TLV编码,详细内容参见本站的EMV Tag详解。
ISO7816与GlobalPlatform的关系
GlobalPlatform规范定义了智能卡的安全架构和卡管理框架,其对卡片生命周期、安全域(Security Domain)、应用安装卸载的管理命令在ISO7816-4/8/9/13的基础上进行了扩展和增强。支持GlobalPlatform的智能卡(如Java Card平台)可以动态加载和删除应用。
十七、ISO7816与其他智能卡标准对比
| 标准 | 范围 | 与ISO7816关系 |
|---|---|---|
| ISO7816 | 带触点智能卡全部层次(物理~应用) | — 基础标准 — |
| ISO/IEC 14443 | 非接触式智能卡(13.56MHz,Type A/B) | 物理/电气层不同,命令层(APDU)复用ISO7816-4 |
| ISO/IEC 15693 | 远距离非接触卡(Vicinity Card,最远1m) | 完全不同,主要用于RFID标签 |
| EMV | 支付卡应用层(接触+非接触) | 基于ISO7816-4 APDU + TLV,增加支付专用命令 |
| GlobalPlatform | 智能卡管理和安全框架 | 扩展ISO7816-4/8/9/13的卡管理能力 |
| Java Card | 智能卡Java运行环境 | 底层通信遵循ISO7816-3/4,上层封装为Java API |
| PKCS#11 | 加密令牌接口(软件API层) | 底层令牌通信依赖ISO7816-4/8 |
学习路径建议
如果你是智能卡开发新手,建议按以下路径学习:ISO7816完整教程(本文,理解整体框架)→ APDU命令大全(掌握命令细节)→ TLV格式详解(数据编码)→ ASN.1完全教程(数据描述语言)→ EMV Tag详解(支付应用实战)。