EMV芯片卡交易流程与数据解析指南
约 3800 字 | EMV/PBOC 支付规范 | 2026-07
什么是 EMV?
EMV 是全球芯片卡支付的互操作标准,由 Europay、Mastercard 和 Visa 三大卡组织联合制定,现由 EMVCo 维护。在中国,银联基于 EMV 标准制定了 PBOC(中国金融集成电路卡)规范。市面上每张带芯片的银行卡——无论借记卡还是信用卡——都遵循 EMV/PBOC 协议。
对于智能卡工程师而言,理解 EMV 交易流程不仅是支付行业的入门课,也是理解"智能卡 + 终端 + 后台"三位一体协同工作的最佳范例。本文重点讲脱机数据认证(Offline Data Authentication)——这是 EMV 安全体系中对工程师最有技术含量的部分。
EMV 交易流程全景
一次完整的接触式 EMV 交易经历以下步骤:
1
应用选择(Application Selection)
终端发 SELECT 选择 PSE 或 PPSE,获取卡片支持的支付应用列表(AID)。用户或终端选择具体应用(如 PBOC 借记 vs 电子现金)。
终端发 SELECT 选择 PSE 或 PPSE,获取卡片支持的支付应用列表(AID)。用户或终端选择具体应用(如 PBOC 借记 vs 电子现金)。
2
应用初始化(Initiate Application Processing)
终端发 GPO(GET PROCESSING OPTIONS)指令,卡片返回 AFL(应用文件定位符)和 AIP(应用交互特征)。AFL 告诉终端"交易数据分布在哪些文件记录里"。
终端发 GPO(GET PROCESSING OPTIONS)指令,卡片返回 AFL(应用文件定位符)和 AIP(应用交互特征)。AFL 告诉终端"交易数据分布在哪些文件记录里"。
3
读取应用数据(Read Application Data)
终端按 AFL 指示逐条读取记录,获取卡号、有效期、发卡行公钥证书、持卡人验证方法列表等。这些数据用 BER-TLV 编码。
终端按 AFL 指示逐条读取记录,获取卡号、有效期、发卡行公钥证书、持卡人验证方法列表等。这些数据用 BER-TLV 编码。
4
脱机数据认证(Offline Data Authentication)
这是安全核心!终端验证卡片的真实性,防止伪卡。三种方式:SDA(静态)、DDA(动态)、CDA(复合)。中国 PBOC 借记卡普遍使用 SDA,贷记卡推荐 DDA/CDA。
这是安全核心!终端验证卡片的真实性,防止伪卡。三种方式:SDA(静态)、DDA(动态)、CDA(复合)。中国 PBOC 借记卡普遍使用 SDA,贷记卡推荐 DDA/CDA。
5
持卡人验证(Cardholder Verification)
验证持卡人身份:联机 PIN、脱机明文 PIN、脱机加密 PIN、或签名。国内借记卡通常用联机 PIN。
验证持卡人身份:联机 PIN、脱机明文 PIN、脱机加密 PIN、或签名。国内借记卡通常用联机 PIN。
6
终端风险管理(Terminal Risk Management)
终端做 floor limit 检查、随机交易选择、异常文件检查,决定走脱机批准还是联机授权。
终端做 floor limit 检查、随机交易选择、异常文件检查,决定走脱机批准还是联机授权。
7
终端行为分析(Terminal Action Analysis)
终端汇总所有检查结果,发 GENERATE AC 指令请求卡片生成应用密文(ARQC/TC/AAC)。联机交易生成 ARQC 送后台验证。
终端汇总所有检查结果,发 GENERATE AC 指令请求卡片生成应用密文(ARQC/TC/AAC)。联机交易生成 ARQC 送后台验证。
8
联机处理 & 发卡行认证(Online Processing)
后台收到 ARQC 后做发卡行认证(验证卡片密钥的合法性),生成 ARPC 返回给终端。终端发 EXTERNAL AUTHENTICATE 将 ARPC 传给卡片验证。
后台收到 ARQC 后做发卡行认证(验证卡片密钥的合法性),生成 ARPC 返回给终端。终端发 EXTERNAL AUTHENTICATE 将 ARPC 传给卡片验证。
9
交易完成(Transaction Completion)
卡片验证 ARPC 通过后,发卡行脚本(Issuer Script)可更新卡片参数(如重置 PIN 错误计数器)。终端生成 TC(交易证书)完成交易。
卡片验证 ARPC 通过后,发卡行脚本(Issuer Script)可更新卡片参数(如重置 PIN 错误计数器)。终端生成 TC(交易证书)完成交易。
关键认知:EMV 安全分为"卡片真伪验证"(脱机数据认证)和"交易授权"(联机认证)两个独立环节。一张真卡也可能被拒绝交易——比如余额不足。这两个环节经常被混淆。
深入:脱机数据认证(SDA / DDA / CDA)
SDA — 静态数据认证
SDA 只验证静态应用数据的签名,不防止卡片复制。流程:
- 终端从卡片读取发卡行公钥证书(Tag 90)和签名的静态应用数据 SSAD(Tag 93)
- 用 CA 公钥(预置在终端)验证发卡行公钥证书 → 获得发卡行公钥
- 用发卡行公钥验证 SSAD 签名 → 确认数据未被篡改
SDA 的致命弱点:攻击者可以复制一张卡的完整静态数据(含签名)到另一张卡上,终端无法区分。因此 PBOC 3.0 已经不推荐借记卡单独使用 SDA。
DDA — 动态数据认证
DDA 通过挑战-响应机制验证卡片持有私钥:
- 终端生成随机数,发 INTERNAL AUTHENTICATE 给卡片
- 卡片用 ICC 私钥对"随机数 + 卡片数据"签名,返回签名值
- 终端用卡片 ICC 公钥(从 ICC 公钥证书 Tag 9F46 中还原)验签
因为私钥不能从一张卡复制到另一张卡(安全芯片保护),所以 DDA 能有效防止伪卡。
CDA — 复合动态数据认证
CDA 是 DDA 的增强版:将 DDA 的签名操作与 GENERATE AC(生成应用密文)合并。卡片在生成 ARQC 的同时完成动态签名。这样做的好处是:连 ARQC 也被签名保护了——防止中间人篡改交易数据。
CDA 是 EMV 4.0+ 和 PBOC 3.0 推荐的最强脱机认证方式。
核心数据对象速查
| Tag | 名称 | 长度 | 说明 |
|---|---|---|---|
5A | PAN(主账号) | 8~19 bytes | 银行卡号,采用 Luhn 算法校验 |
5F24 | 应用失效日期 | 3 bytes | YYMMDD 格式 |
5F34 | PAN 序列号 | 1 byte | 区分同一 PAN 下的多张卡 |
82 | AIP(应用交互特征) | 2 bytes | 卡片支持的认证方式:SDA/DDA/CDA、持卡人验证方法 |
94 | AFL(应用文件定位器) | 可变 | 每个条目 4 字节:SFI + 首记录 + 末记录 + 脱机数据认证记录数 |
8C | CDOL1(卡片风险管理数据对象列表1) | 可变 | 卡片要求终端在 GENERATE AC 中包含的字段列表 |
8D | CDOL2 | 可变 | 卡片要求终端在 GENERATE AC(第二次)中包含的字段 |
9F26 | 应用密文 AC | 8 bytes | 卡片生成的 ARQC/TC/AAC |
9F27 | 密文信息数据 CID | 1 byte | 指示 AC 类型(ARQC=0x80, TC=0x40, AAC=0x00) |
9F36 | ATC(应用交易计数器) | 2 bytes | 每笔交易递增的唯一计数器,防重放 |
9F10 | 发卡行应用数据 IAD | 可变 | 包含 CVR(卡片验证结果)、发卡行认证码等信息 |
9F46 | ICC 公钥证书 | 可变 | 用于 DDA/CDA 认证 |
90 | 发卡行公钥证书 | 可变 | 用于 SDA 认证 |
9F6E | 第三方数据(如手机 NFC) | 可变 | Apple Pay/云闪付等附加数据 |
实战:解析一条 GPO 响应
以 PBOC 借记卡为例:
# GPO 命令
80 A8 00 00 02 83 00 00
# GPO 响应
77 0E 82 02 58 00 94 08 18 01 02 01 20 01 02 01 90 00
用 TLV 解析器拆解:
77 0E → 响应模板,长度 14 字节
82 02 58 00 → AIP = 0x5800
0x5800 = 0101 1000 0000 0000
bit 15 = 1 → SDA 支持
bit 14 = 0 → DDA 不支持
bit 13 = 1 → 持卡人验证支持
bit 12 = 1 → 终端风险管理
bit 8 = 1 → CDA 不支持
94 08 18 01 02 01 20 01 02 01 → AFL
条目1: 18 01 02 01 → SFI=0x18/8=3, 记录1~2, 脱机认证需1条
条目2: 20 01 02 01 → SFI=0x20/8=4, 记录1~2, 脱机认证需1条
为什么 SFI 要除以 8?SFI 字段的高 5 位是真正的 SFI 值,低 3 位恒为 0。所以 0x18 >> 3 = 3。对,就是这么奇怪——这是为了在一个字节里同时编码 SFI 和访问模式。
PBOC vs EMV:中国版的差异
| 项目 | EMV 4.3 | PBOC 3.0 |
|---|---|---|
| 国密支持 | 不支持 | 可选择 SM2/SM3/SM4 替代 RSA/SHA-1/AES |
| 脱机认证 | SDA/DDA/CDA | 同 EMV + 可选国密增强 |
| 电子现金 | Visa/MS 各自扩展 | 银联电子现金(联机/脱机双模式) |
| 非接交易 | qVSDC (Visa) / PayPass (MC) | 银联闪付(QuickPass),支持脱机/联机 |
| 可选应用 | 信用卡/借记卡/预付费 | 借记卡为主 + 社保一卡通 + 金融IC卡 |