EMV Tag详解:完整EMV标签数据对象参考手册
目录
一、EMV Tag概述
EMV Tag(EMV标签)是EMV规范(Europay、Mastercard、Visa联合制定的智能卡支付标准)中定义的数据对象标识符。每个EMV Tag代表一个特定的支付数据元素——从最常见的卡号(PAN)到复杂的公钥证书,全部使用EMV TLV(Tag-Length-Value)格式编码。
EMV标签定义在以下EMV规范文档中:
- EMV Book 3(Application Specification):定义了与应用交互相关的Tag,如AIP、AFL、CDOL1/2、CVM列表等
- EMV Book 4(Cardholder, Attendant, and Acquirer Interface Requirements):定义了持卡人/收银员/收单行接口相关Tag
前置知识
阅读本文前,建议先了解TLV编码格式(参见TLV格式详解)和APDU命令(参见APDU命令大全)。EMV标签数据通过APDU的READ RECORD命令从卡片读取,返回BER-TLV编码的字节序列。
二、EMV Tag的TLV编码格式
EMV标签采用BER-TLV编码(Basic Encoding Rules - Tag Length Value),每个EMV数据对象由三部分组成:
EMV BER-TLV 数据对象 = Tag + Length + Value
Tag: 1~2字节,唯一标识数据元素的语义类型
Length: 1~N字节,指示Value字段的字节数
Value: 实际数据内容(Primitive)或嵌套子TLV(Constructed)
EMV Tag的编码规则(与标准BER-TLV一致):
Tag首字节:
b8-b7: Class (01=Application, 10=Context-specific)
b6: Data Object 类型 (0=Primitive原始值, 1=Constructed包含子TLV)
b5-b1: Tag Number
# 单字节Tag示例
Tag 0x5A = 01 0 11010 → Application Class, Primitive, Tag Number=26
→ 语义:Application Primary Account Number (PAN),主账号
# 双字节Tag示例
Tag 0x9F 0x33 = 100 1 11111 + 0 0110011
→ Context-specific Class, Constructed, Tag Number=51
→ 语义:Terminal Capabilities,终端功能
三、EMV Tag编号体系与分类
EMV标签按首字节分为几个编号区间:
| Tag区间 | 类别 | Class | 典型用途 |
|---|---|---|---|
42 | 发卡行公钥指数 | Application | Issuer Public Key Exponent |
4F | ADF名称(AID) | Application | Application Dedicated File Name |
50 | 应用标签 | Application | Application Label(应用名称,如"Visa Credit") |
56 | 磁条数据 | Application | Track 1 Data(磁道1数据) |
57 | 磁条数据 | Application | Track 2 Equivalent Data(磁道2等效数据) |
5A | PAN(主账号) | Application | Application Primary Account Number (PAN) |
5F20~5F3A | 持卡人/卡片基本数据 | Application | 姓名(5F20)、有效期(5F24)、生效日期(5F25)、国家代码(5F28)、币种(5F2A)、服务码(5F30) |
6F | FCI模板 | Application | File Control Information Template |
70 | 记录模板 | Context | READ RECORD返回的模板容器 |
71 | 发卡脚本模板 | Context | Issuer Script Template |
77 | 响应消息模板 | Context | Response Message Template (GPO返回格式) |
80 | 响应消息模板2 | Context | Response Message Template Format 2 |
82 | AIP(应用交互特征) | Context | Application Interchange Profile |
84 | 专用文件名称 | Context | Dedicated File (DF) Name |
87 | 应用优先级标识 | Context | Application Priority Indicator |
88 | SFI | Context | Short File Identifier |
8A | 授权响应码 | Context | Authorisation Response Code |
8C~8F | CDOL/发卡行认证数据 | Context | Card Risk Management Data |
90 | 发卡行公钥证书 | Context | Issuer Public Key Certificate |
91 | 发卡行认证数据 | Context | Issuer Authentication Data |
92 | 发卡行公钥剩余 | Context | Issuer Public Key Remainder |
93 | 签名静态应用数据 | Context | Signed Static Application Data |
94 | AFL(应用文件定位器) | Context | Application File Locator |
95 | 终端验证结果 | Context | Terminal Verification Results (TVR) |
97 | 交易证书数据 | Context | Transaction Certificate Data Object |
98 | 交易证书哈希 | Context | TC Hash Value |
99 | 交易PIN数据 | Context | Transaction PIN Data |
9A | 交易日期 | Context | Transaction Date (YYMMDD) |
9B | 交易状态信息 | Context | Transaction Status Information (TSI) |
9C | 交易类型 | Context | Transaction Type (00=购买, 01=取现, 20=退款...) |
9F01~9F7F | EMV扩展标签区 | Context | 发卡行数据、终端数据、交易数据等(最多标签定义的区域) |
A5 | FCI专有模板 | Context | FCI Proprietary Template |
BF0C | FCI发卡行自定义数据 | Context | FCI Issuer Discretionary Data |
四、卡片数据标签(5Fxx / 5A)
以下是EMV卡片数据标签——这些Tag携带卡片本身的基本信息:
| Tag | 名称 | 格式 | 长度 | 说明 |
|---|---|---|---|---|
5A | Application PAN (PAN) | cn (压缩数字) | 0~10字节(最多19位PAN) | 主账号/卡号。EMV最重要的标签之一。变长、压缩BCD编码 |
5F20 | Cardholder Name | an (字母数字) | 2~26字节 | 持卡人姓名。ASCII编码,格式如"DOE/JOHN MR " |
5F24 | Application Expiration Date | n (数字) | 3字节 | 应用有效期。YYMMDD格式,如251231 |
5F25 | Application Effective Date | n | 3字节 | 应用生效日期。YYMMDD格式 |
5F28 | Issuer Country Code | n | 2字节 | 发卡行国家代码。ISO 3166数字代码。0156=中国,0840=美国 |
5F2A | Transaction Currency Code | n | 2字节 | 交易币种代码。ISO 4217。0156=CNY,0840=USD,0978=EUR |
5F2D | Language Preference | an | 2~8字节 | 语言偏好。如"zh""en""ja"按优先级排列 |
5F30 | Service Code | n | 1~3字节 | 服务码。定义卡片的交易类型限制。第一个数字=1表示国际卡+集成电路 |
5F34 | Application PAN Sequence Number | n | 1字节 | PAN序列号。同卡号多张卡时区分用(如主卡/附属卡) |
5F35 | CVM List | 变长 | 变长 | 持卡人验证方法列表,定义PIN/签名等验证方式及顺序 |
5F36 | Transaction Currency Exponent | n | 1字节 | 币种指数。定义金额小数位(如CNY通常为2位小数) |
5F37 | Application Reference Data (ARPC) | b | 变长 | 发卡行认证响应码 |
5F50 | Issuer URL | an | 变长 | 发卡行网址URL |
5F53 | Consecutive Transaction Limit (International) | b | 4字节 | 国际交易连续限额 |
5F55 | Announcement URL | an | 变长 | 发卡公告/服务URL |
五、发卡行数据标签(9Fxx系列)
发卡行数据标签——这些标签携带发卡行写入卡片的个人化数据:
| Tag | 名称 | 说明 |
|---|---|---|
9F10 | Issuer Application Data (IAD) | 发卡行应用数据。发卡行自定义格式的关键数据,在GENERATE AC时返回 |
9F11 | Issuer Code Table Index | 发卡行代码表索引 |
9F12 | Application Preferred Name | 应用首选名称(如"Visa Credit") |
9F14 | Lower Consecutive Offline Limit | 连续脱机交易下限 |
9F15 | Merchant Category Code | 商户类别码(MCC) |
9F16 | Merchant Identifier | 商户标识 |
9F1A | Terminal Country Code | 终端国家代码。ISO 3166 |
9F1B | Terminal Identification | 终端标识号 |
9F1C | Terminal Serial Number | 终端序列号 |
9F1D | Terminal Risk Management Data | 终端风控数据 |
9F20 | Track 2 Discretionary Data | 磁道2自定义数据 |
9F21 | Transaction Time | 交易时间。HHMMSS格式 |
9F26 | Application Cryptogram (AC) | 应用密文。GENERATE AC返回的核心认证数据(TC/AAC/ARQC) |
9F27 | Cryptogram Information Data (CID) | 密文信息数据。指示密文类型(TC/AAC/ARQC)和生成原因 |
9F32 | Issuer Public Key Exponent | 发卡行公钥指数 |
9F33 | Terminal Capabilities | 终端功能。位图编码,指示终端支持的认证方法、CVM方法等 |
9F34 | CVM Results | 持卡人验证结果。记录执行的CVM方法和结果 |
9F35 | Terminal Type | 终端类型。如22=POS终端、14=电子现金终端 |
9F36 | Application Transaction Counter (ATC) | 应用交易计数器。每次交易后递增的2字节计数器,防重放攻击 |
9F37 | Unpredictable Number | 不可预测数。终端生成的4字节随机数 |
9F38 | Processing Options Data Object List (PDOL) | 处理选项数据对象列表。GPO命令输入 |
9F39 | POS Entry Mode | POS输入方式。指示卡片如何被读取(插卡/挥卡/手输) |
9F40 | Additional Terminal Capabilities | 附加终端功能。9F33的扩展 |
9F41 | Sequence Counter | 交易序列号计数器 |
9F42 | Application Currency Code | 应用币种代码 |
9F44 | Application Currency Exponent | 应用币种指数 |
9F45 | Data Authentication Code | 数据认证码 |
9F46 | ICC Public Key Certificate | ICC公钥证书。DDA/CDA认证的核心数据 |
9F47 | ICC Public Key Exponent | ICC公钥指数 |
9F48 | ICC Public Key Remainder | ICC公钥剩余部分 |
9F49 | Dynamic Data Authentication Data Object List (DDOL) | 动态数据认证DOL |
9F4A | Static Data Authentication Tag List | 静态数据认证标签列表 |
9F4B | Signed Dynamic Application Data | 签名动态应用数据 |
9F4D | Log Entry | 日志条目 |
9F4E | Merchant Name and Location | 商户名称和地点 |
9F4F | Log Format | 日志格式定义 |
六、终端数据标签(9Fxx终端类)
终端侧生成的EMV标签,在GENERATE AC命令中作为CDOL数据发送给卡片:
| Tag | 名称 | 长度 | 说明 |
|---|---|---|---|
9F02 | Amount, Authorised (Numeric) | 6字节 | 授权金额。压缩BCD,如 000000001000 = 10.00元 |
9F03 | Amount, Other (Numeric) | 6字节 | 其他金额(如小费) |
9F09 | Application Version Number (Terminal) | 2字节 | 终端应用版本号 |
9F1A | Terminal Country Code | 2字节 | 终端国家代码 |
9F35 | Terminal Type | 1字节 | 终端类型。如0x22=POS在线、0x14=电子现金 |
9F37 | Unpredictable Number | 4字节 | 不可预测数。终端随机数,防重放 |
9F39 | POS Entry Mode | 2字节 | POS输入方式。接触/非接触/手输PAN等 |
9F41 | Transaction Sequence Counter | 2~4字节 | 交易序列计数器 |
9F53 | Consecutive Transaction Limit (International) | 4字节 | 国际连续交易限额 |
9F66 | Terminal Transaction Qualifiers (TTQ) | 4字节 | 终端交易限定符。位图指示终端对CVM/CDCVM等的支持 |
七、交易数据标签(9Fxx交易类)
交易过程中生成或使用的EMV标签:
| Tag | 名称 | 说明 |
|---|---|---|
9A | Transaction Date | 交易日期。YYMMDD格式 |
9B | Transaction Status Information (TSI) | 交易状态信息。位图,记录脱机SDA/DDA/CDA/CDCVM等是否已执行 |
9C | Transaction Type | 交易类型。00=购买、01=取现、20=退款、28=余额查询 |
5F2A | Transaction Currency Code | 交易币种。ISO 4217 |
9F02 | Amount, Authorised | 授权金额 |
9F03 | Amount, Other | 其他金额 |
9F1E | Interface Device (IFD) Serial Number | 读卡器序列号 |
9F21 | Transaction Time | 交易时间。HHMMSS格式 |
9F53 | Consecutive Transaction Limit | 连续交易限额(国际/国内) |
八、证书与认证标签
EMV认证体系中使用的证书和密钥相关标签:
| Tag | 名称 | 说明 |
|---|---|---|
90 | Issuer Public Key Certificate | 发卡行公钥证书。由CA(如Visa/MC)签发的发卡行RSA公钥证书 |
91 | Issuer Authentication Data | 发卡行认证数据 |
92 | Issuer Public Key Remainder | 发卡行公钥剩余。RSA公钥模数超出证书容量的下半部分 |
93 | Signed Static Application Data (SSAD) | 签名静态应用数据。SDA认证的核心——发卡行用私钥签名的关键静态数据 |
9F32 | Issuer Public Key Exponent | 发卡行公钥指数。通常为3或65537 |
9F46 | ICC Public Key Certificate | ICC公钥证书。DDA认证时,由发卡行签发的卡片公私钥对证书 |
9F47 | ICC Public Key Exponent | ICC公钥指数 |
9F48 | ICC Public Key Remainder | ICC公钥剩余 |
9F4B | Signed Dynamic Application Data (SDAD) | 签名动态应用数据。DDA/CDA认证的核心——卡片用ICC私钥签名的动态交易数据 |
EMV三种脱机认证方式
- SDA(Static Data Authentication):仅验证静态数据(93-签名静态应用数据)。已被逐步淘汰。
- DDA(Dynamic Data Authentication):卡片生成公私钥对(9F46-ICC公钥证书),对动态数据签名(9F4B-SDAD)。终端验证签名。
- CDA(Combined DDA/AC Generation):DDA与GENERATE AC合并,在一个签名中同时完成动态认证和交易密文生成。最安全。
九、AIP与AFL标签详解
AIP和AFL是EMV交易流程中最关键的两个标签,均在GET PROCESSING OPTIONS(GPO)响应中返回。
AIP — Application Interchange Profile(Tag 82)
AIP(应用交互特征)是一个2字节的位图,指示卡片支持的EMV功能集:
AIP 字节1 (EMV Book 3, Annex C.1):
b8=1: SDA supported
b7=1: DDA supported
b6=1: Cardholder verification supported
b5=1: Terminal risk management required
b4=1: Issuer authentication using EXTERNAL AUTHENTICATE
b3=1: CDA supported
b2=1: Reserved
AIP 字节2:
b8=1: EMV mode contact supported
AFL — Application File Locator(Tag 94)
AFL(应用文件定位器)指示终端需要从卡片读取哪些记录文件。它是EMV交易数据获取的"地图"。AFL由多个4字节条目组成:
AFL 条目结构(每条4字节):
Byte 1: SFI (短文件标识符,bit7-3)
Byte 2: 第一条记录号
Byte 3: 最后一条记录号
Byte 4: 参与脱机数据认证的记录数
# 示例 AFL: 08 01 01 00 10 01 01 00
# 条目1: SFI=1, 读记录1, 最后记录1, 0条参与脱机认证
# 条目2: SFI=2, 读记录1, 最后记录1, 0条参与脱机认证
十、DOL数据对象列表
DOL(Data Object List)是EMV规范中定义的一种特殊数据结构,它的Value由一系列Tag + Length对(无Value)组成,告诉对方"我需要你用这些Tag构建数据发给我"。
| DOL名称 | 存储位置 | 用途 |
|---|---|---|
| PDOL (Processing Options DOL) | SELECT返回的FCI中,Tag 9F38 | 卡片告诉终端:执行GPO时需要提供这些终端数据 |
| CDOL1 (Card Risk Management DOL 1) | 卡片数据中,Tag 8C | 卡片告诉终端:第一次GENERATE AC时需要提供的数据 |
| CDOL2 (Card Risk Management DOL 2) | 卡片数据中,Tag 8D | 卡片告诉终端:第二次GENERATE AC(在线授权后)需要的数据 |
| DDOL (Dynamic DOL) | 卡片数据中,Tag 9F49 | DDA认证时需要签名的动态数据列表 |
| TDOL (Transaction DOL) | 卡片数据中,Tag 97 | 用于生成交易证书(TC)哈希的数据列表 |
# CDOL1 示例解析
Tag 8C = CDOL1
Length = 18 (24字节)
Value = 以下串接的Tag+Length对:
9F02 06 → Amount Authorised (6字节)
9F03 06 → Amount Other (6字节)
9F1A 02 → Terminal Country Code (2字节)
95 05 → TVR (5字节)
5F2A 02 → Transaction Currency Code (2字节)
9A 03 → Transaction Date (3字节)
9C 01 → Transaction Type (1字节)
9F37 04 → Unpredictable Number (4字节)
十一、CVM持卡人验证方法标签
CVM(Cardholder Verification Method,持卡人验证方法)定义在Tag 5F35(CVM List)中。每个CVM条目描述一种验证方法及其条件。
CVM List (Tag 5F35) 结构:
每个条目由3字节组成:
Byte 1 (高4位=CVM条件码, 低4位=CVM类型码):
CVM条件码: 0=总是, 1=如果未有人值守现金, 2=如果非现金, 3=如果终端支持, 4=手动现金
CVM类型码: 1=明文PIN(ICC验证), 2=加密PIN(联机), 3=明文PIN+签名,
4=加密PIN+签名, 5=签名, 6=无需CVM
Byte 2 (条件码): CVM失败时的处理方式
Byte 3 (CVM金额): CVM阈值金额(可选)
十二、EMV标签速查总表
以下按功能分组列出EMV标签快速查找表:
| 分组 | Tag列表 | 用途 |
|---|---|---|
| 卡片识别 | 5A, 5F20, 5F24, 5F25, 5F28, 5F30, 5F34, 50 | 卡号PAN、持卡人姓名、有效期、服务码、应用名称 |
| 应用选择 | 4F, 50, 87, 9F12, 84 | AID、应用标签、优先级、DF名称 |
| 交易处理 | 9F02, 9F03, 9A, 9C, 9F21, 5F2A, 9F1A | 金额、交易日期/时间/类型、币种、国家 |
| GPO相关 | 82, 94, 9F38 | AIP、AFL、PDOL |
| 认证数据 | 9F26, 9F27, 9F10, 9F36, 9F37 | 应用密文、CID、IAD、ATC、不可预测数 |
| 脱机认证 | 90, 92, 93, 9F32, 9F46, 9F47, 9F48, 9F4B | 发卡行证书、ICC证书、SDA/DDA/CDA相关 |
| 终端能力 | 9F33, 9F35, 9F39, 9F40, 9F66 | 终端功能、终端类型、POS输入方式 |
| 终端验证 | 95, 9B, 9F1B, 8A | TVR、TSI、授权响应码 |
| CVM | 5F35, 5F34, 9F34 | CVM列表、PIN结果 |
| DOL | 9F38, 8C, 8D, 9F49, 97 | PDOL、CDOL1、CDOL2、DDOL、TDOL |
| 磁条数据 | 56, 57, 5F20, 5F24 | Track1/Track2等效数据、持卡人姓名、有效期 |
| 风险管理 | 9F14, 9F15, 9F1D, 9F53, 8F | 脱机交易限额、商户类别、风控数据 |
| 模板容器 | 6F, 70, 71, 72, 77, 80, A5, BF0C | 各类Constructed模板(其Value包含子TLV) |
十三、EMV TLV数据解析实例
以下是一个完整的EMV GPO响应(GET PROCESSING OPTIONS)的TLV解析实例:
# 原始GPO响应字节(Tag 77模板)
77 0E
82 02 19 00 ← AIP = 1900
94 08 08 01 01 00 10 01 01 00 ← AFL
# 解析:
# 外层: Tag=77 (Response Message Template), Len=14字节, Constructed
# 子TLV1: Tag=82 (AIP), Len=2, Value=19 00
# AIP=0x1900: SDA支持, CVM支持, 终端风控
# 子TLV2: Tag=94 (AFL), Len=8, Value=08 01 01 00 10 01 01 00
# AFL条目1: SFI=1 (0x08>>3=1), 第1条, 第1条, 0参与认证
# AFL条目2: SFI=2 (0x10>>3=2), 第1条, 第1条, 0参与认证
继续按AFL读取记录后获得的数据:
# SFI=1, 记录1 的内容 (Tag 70 模板)
70 5D
57 13 62 34 56 78 90 12 34 56 78 D2 51 22 31 00 00 00 00 00 0F
5A 08 62 34 56 78 90 12 34 56
5F20 1A 44 4F 45 2F 4A 4F 48 4E 20 4D 52 20 20 20 20 20 20 20 20 20 20 20 20 20
5F24 03 26 12 31
5F25 03 22 12 31
5F28 02 08 40
5F30 01 02
5F34 01 01
5F35 01 00
9F07 02 FF 00
# 解析:
# Tag=57 (Track 2 Equivalent Data): 卡号/有效期/服务码 磁道2等效数据
# PAN=6234567890123456, 分隔符D, 有效期=2512, 服务码=231, PVV=0000000000
# Tag=5A (PAN): 压缩BCD = 6234567890123456
# Tag=5F20 (持卡人姓名): "DOE/JOHN MR "
# Tag=5F24 (有效期): 2026年12月31日
# Tag=5F25 (生效日期): 2022年12月31日
# Tag=5F28 (发卡行国家): 0840=美国
# Tag=5F30 (服务码): 02
# Tag=5F34 (PAN序列号): 01
# Tag=5F35 (CVM列表): 无需CVM (CDCVM)
# Tag=9F07 (AID): FF 00 (应用无关标识)
学习路径总结
EMV Tag详解是智能卡知识体系的顶层应用。完整学习路径:ISO7816完整教程(协议基础)→ APDU命令大全(命令通信)→ TLV格式详解(数据编码)→ ASN.1完全教程(数据描述语言)→ EMV Tag详解(本文,支付应用实战)。