2. EMV交易基础:标准、流程与协议
聊EMV侧信道攻击之前,咱们得先把地基打牢。EMV标准到底是什么?卡片和终端怎么“对话”的?这些搞不清楚,后面分析攻击面就像盲人摸象。
我个人习惯把EMV看作一套“游戏规则”。它规定了芯片卡怎么跟POS机、ATM机打交道。说白了,就是让不同厂商的卡和设备能互相听懂对方在说什么。
2.1 EMV标准简介
EMV是Europay、MasterCard、Visa三家公司的首字母缩写。现在由EMVCo组织维护。我当年刚接触这个标准时,第一反应是——这玩意儿也太厚了吧?
但核心其实就几点:
- 芯片卡取代磁条卡:磁条卡太容易被复制了。芯片卡内置微处理器,能算能存,安全性高一个量级。
- 动态认证:每次交易生成不同的认证数据。不像磁条卡,刷一次就把所有信息暴露了。
- 脱机/联机双模式:没网络也能交易,有网络就走更严格的验证。
核心要点:EMV不是单一标准,而是一整套规范族。包括卡片规范、终端规范、应用规范等等。我们做安全分析的,最关注的是卡片与终端之间的交互协议——也就是APDU命令集。
2.2 交易流程:脱机 vs 联机
交易流程分两种模式。我刚开始做项目时,总以为联机模式更安全。后来踩过坑才发现,脱机模式才是侧信道攻击的“重灾区”。
2.2.1 脱机交易流程
脱机交易,就是卡片和终端自己“商量”着来,不找后台验证。流程大致如下:
- 应用选择:终端问卡片“你支持哪些应用?”卡片回答“我支持Visa、MasterCard...”
- 初始化应用处理:终端发GET PROCESSING OPTIONS命令,卡片返回交易所需的数据。
- 读应用数据:终端读取卡片上的静态数据(卡号、有效期等)。
- 脱机数据认证:这是关键步骤。卡片证明自己是真卡,不是伪造的。常见方式有SDA、DDA、CDA。
- 处理限制:检查卡片是否过期、是否超出使用限额等。
- 持卡人验证:输PIN或者签名。这里有个坑——脱机PIN验证时,PIN是在卡片内部比的,终端只负责传数据。
- 终端风险管理:终端自己判断这笔交易风险高不高。
- 交易行为分析:终端决定“这笔交易我批准了”还是“不行,得上报后台”。
- 卡片行为分析:卡片也做决定,返回“批准”或“拒绝”。
- 证书生成:如果交易批准,卡片生成一个应用认证密文(AC)。
避坑指南:我曾经在测试中发现,有些卡片在脱机认证阶段会泄露密钥信息。原因是卡片内部的随机数生成器不够随机。嗯,这个后面讲侧信道时会细说。
2.2.2 联机交易流程
联机交易就简单多了。终端把交易数据发给后台,后台验证通过就放行。流程:
- 前面1-7步跟脱机一样。
- 第8步,终端决定“必须联机”。
- 终端把交易数据打包,发给发卡行后台。
- 后台验证卡片、账户、PIN(如果是联机PIN)。
- 后台返回授权结果。
- 卡片生成联机AC。
联机模式的好处是后台能实时风控。坏处是——没网就完蛋。所以脱机模式在偏远地区、地铁闸机这些场景还是必须的。
2.3 卡片与终端的交互协议
卡片和终端怎么通信?靠APDU命令。APDU全称是Application Protocol Data Unit。结构很简单:
// 命令APDU结构
CLA INS P1 P2 Lc Data Le
// 响应APDU结构
Data SW1 SW2
举个例子,终端发“读记录”命令:
CLA = 0x00 // 命令类别
INS = 0xB2 // READ RECORD
P1 = 0x01 // 记录号
P2 = 0x0C // 参考控制参数
Lc = 0x00 // 无命令数据
Le = 0x00 // 期望响应长度
卡片返回:
Data = [卡号、有效期等]
SW1 = 0x90
SW2 = 0x00 // 处理成功
你想想看,整个交易过程就是几十条这样的APDU命令来回传递。每条命令都可能成为侧信道攻击的切入点。
2.4 核心交互流程SVG
下面这张图是我自己画的,把卡片和终端的交互逻辑串起来了。你看一眼就能明白整个流程:
2.5 关键知识点总结
| 概念 | 说明 | 安全关注点 |
|---|---|---|
| EMV标准 | 芯片卡交易规范,由EMVCo维护 | 标准本身有安全设计,但实现可能有漏洞 |
| 脱机交易 | 卡片和终端本地完成验证,不联后台 | 侧信道攻击的主要目标,因为本地计算可观测 |
| 联机交易 | 终端将数据发往后台验证 | 网络层面的攻击面,但侧信道机会较少 |
| APDU协议 | 卡片与终端的通信协议 | 每条命令都可能泄露侧信道信息 |
| 脱机数据认证 | 卡片证明自己是真卡 | 认证过程中的密码运算最容易泄露密钥 |
重要提醒:别以为联机交易就绝对安全。我见过一个案例,攻击者在联机交易过程中,通过测量卡片功耗成功提取了密钥。联机只是把决策权交给了后台,但卡片内部的密码运算依然在本地执行。
好了,EMV交易基础就聊到这儿。记住这张交互图,后面讲侧信道攻击时,我们会反复回到这个流程里找漏洞点。
公众号:蓝海资料掘金营,微信deep3321