2. EMV交易基础:标准、流程与协议

聊EMV侧信道攻击之前,咱们得先把地基打牢。EMV标准到底是什么?卡片和终端怎么“对话”的?这些搞不清楚,后面分析攻击面就像盲人摸象。

我个人习惯把EMV看作一套“游戏规则”。它规定了芯片卡怎么跟POS机、ATM机打交道。说白了,就是让不同厂商的卡和设备能互相听懂对方在说什么。

2.1 EMV标准简介

EMV是Europay、MasterCard、Visa三家公司的首字母缩写。现在由EMVCo组织维护。我当年刚接触这个标准时,第一反应是——这玩意儿也太厚了吧?

但核心其实就几点:

  • 芯片卡取代磁条卡:磁条卡太容易被复制了。芯片卡内置微处理器,能算能存,安全性高一个量级。
  • 动态认证:每次交易生成不同的认证数据。不像磁条卡,刷一次就把所有信息暴露了。
  • 脱机/联机双模式:没网络也能交易,有网络就走更严格的验证。

核心要点:EMV不是单一标准,而是一整套规范族。包括卡片规范、终端规范、应用规范等等。我们做安全分析的,最关注的是卡片与终端之间的交互协议——也就是APDU命令集。

2.2 交易流程:脱机 vs 联机

交易流程分两种模式。我刚开始做项目时,总以为联机模式更安全。后来踩过坑才发现,脱机模式才是侧信道攻击的“重灾区”。

2.2.1 脱机交易流程

脱机交易,就是卡片和终端自己“商量”着来,不找后台验证。流程大致如下:

  1. 应用选择:终端问卡片“你支持哪些应用?”卡片回答“我支持Visa、MasterCard...”
  2. 初始化应用处理:终端发GET PROCESSING OPTIONS命令,卡片返回交易所需的数据。
  3. 读应用数据:终端读取卡片上的静态数据(卡号、有效期等)。
  4. 脱机数据认证:这是关键步骤。卡片证明自己是真卡,不是伪造的。常见方式有SDA、DDA、CDA。
  5. 处理限制:检查卡片是否过期、是否超出使用限额等。
  6. 持卡人验证:输PIN或者签名。这里有个坑——脱机PIN验证时,PIN是在卡片内部比的,终端只负责传数据。
  7. 终端风险管理:终端自己判断这笔交易风险高不高。
  8. 交易行为分析:终端决定“这笔交易我批准了”还是“不行,得上报后台”。
  9. 卡片行为分析:卡片也做决定,返回“批准”或“拒绝”。
  10. 证书生成:如果交易批准,卡片生成一个应用认证密文(AC)。

避坑指南:我曾经在测试中发现,有些卡片在脱机认证阶段会泄露密钥信息。原因是卡片内部的随机数生成器不够随机。嗯,这个后面讲侧信道时会细说。

2.2.2 联机交易流程

联机交易就简单多了。终端把交易数据发给后台,后台验证通过就放行。流程:

  1. 前面1-7步跟脱机一样。
  2. 第8步,终端决定“必须联机”。
  3. 终端把交易数据打包,发给发卡行后台。
  4. 后台验证卡片、账户、PIN(如果是联机PIN)。
  5. 后台返回授权结果。
  6. 卡片生成联机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

下面这张图是我自己画的,把卡片和终端的交互逻辑串起来了。你看一眼就能明白整个流程:

EMV交易核心交互流程 芯片卡 终端/POS SELECT (应用列表) 返回支持的应用 GET PROCESSING OPTIONS 返回AIP + AFL READ RECORD (多次) 返回卡号、有效期等 脱机数据认证 (SDA/DDA/CDA) 持卡人验证 (脱机PIN/签名) 生成应用认证密文 (AC)

2.5 关键知识点总结

概念 说明 安全关注点
EMV标准 芯片卡交易规范,由EMVCo维护 标准本身有安全设计,但实现可能有漏洞
脱机交易 卡片和终端本地完成验证,不联后台 侧信道攻击的主要目标,因为本地计算可观测
联机交易 终端将数据发往后台验证 网络层面的攻击面,但侧信道机会较少
APDU协议 卡片与终端的通信协议 每条命令都可能泄露侧信道信息
脱机数据认证 卡片证明自己是真卡 认证过程中的密码运算最容易泄露密钥

重要提醒:别以为联机交易就绝对安全。我见过一个案例,攻击者在联机交易过程中,通过测量卡片功耗成功提取了密钥。联机只是把决策权交给了后台,但卡片内部的密码运算依然在本地执行。

好了,EMV交易基础就聊到这儿。记住这张交互图,后面讲侧信道攻击时,我们会反复回到这个流程里找漏洞点。


公众号:蓝海资料掘金营,微信deep3321