Mastercard 动态 CVC3 是一种每笔交易都会变化的卡验证值,比静态 CVV 码提供更强的安全性。本指南解释 CVC3 在 EMV 非接触和芯片交易中的工作原理。
什么是动态 CVC3?
动态 CVC3(卡验证码 3)是 Mastercard 的动态卡验证实现。与印刷在卡上的静态 CVV 不同,CVC3 使用存储在卡片芯片中的密钥为每笔交易重新生成。
这使得被盗的 CVC3 值对未来交易毫无用处——相比静态 CVV/CVC,这是显著的安全改进。
EMV 动态验证工作原理
EMV 芯片卡使用挑战-响应机制进行动态验证:
- 终端发送挑战:POS 终端生成不可预测数(UN)
- 卡片计算响应:芯片使用其密钥、ATC 和 UN 生成 CVC3
- 终端转发结果:CVC3 包含在授权消息中
- 发卡行验证:发卡行的 HSM 使用相同输入重新计算 CVC3 并进行比较
关键组件
- 应用交易计数器(ATC):芯片中的计数器,每笔交易递增。它确保即使其他输入相同,每笔交易也会产生不同的 CVC3。
- 不可预测数(UN):由终端生成的随机或伪随机值,用于防止重放攻击。
- 卡片密钥:从发卡行主密钥(IMK)派生的密钥,每张卡唯一。
CVC3 计算过程
输入
- ATC:2 字节计数器(0x0000 到 0xFFFF)
- 不可预测数:由终端生成的 4 字节
- 磁道 2 数据:包含 PAN、有效期和服务码
- 卡片密钥:使用 PAN 从 IMK 派生
算法步骤
步骤 1:派生卡片密钥
卡特定密钥从发卡行主密钥派生:
卡片密钥 = DerivedKey(IMK, PAN)
这使用标准 EMV 密钥派生方法,通常涉及以 PAN 作为多样化数据进行 3DES 加密。
步骤 2:构造数据块
连接 ATC、不可预测数和相关磁道 2 数据:
数据块 = ATC || UN || 磁道2数据
磁道 2 数据通常包括 PAN(不含校验位)、有效期和服务码。
步骤 3:计算 CVC3
使用卡片密钥加密数据块:
CVC3 = Encrypt(卡片密钥, 数据块)
结果通过十进制化处理以提取数字 CVC3 值(非接触通常为 5 位)。
步骤 4:截断为 5 位
CVC3 被截断为 5 位十进制数字,用于包含在交易消息中。
ATC(应用交易计数器)
ATC 是动态 CVC3 的关键组件:
- 大小:2 字节(16 位),允许 65,536 个唯一值
- 递增:每笔交易增加 1
- 持久性:存储在芯片的非易失性存储器中
- 溢出:当 ATC 达到 0xFFFF 时,卡片可能被阻止
ATC 的安全作用
ATC 确保即使:
- 同一张卡在同一终端使用
- 终端生成相同的不可预测数(不太可能)
- 存在相同的磁道 2 数据
...CVC3 仍然会不同,因为 ATC 已经改变。
不可预测数
不可预测数(UN)增加了另一层随机性:
- 由 POS 终端生成
- 必须不可预测以防止预计算攻击
- 通常为 4 字节(32 位)
- 包含在授权消息中供发卡行验证
UN 生成
良好的 UN 生成使用:
- 终端中的密码学随机数生成器
- 硬件 RNG
- 时间戳和随机种子的组合
磁道数据在 CVC3 中的作用
等效磁道 2 数据提供卡特定信息:
磁道 2 数据 = PAN || 分隔符 || 有效期 || 服务码 || 自由数据
对于 CVC3 计算,通常仅使用此数据的部分:
- PAN(不含校验位)
- 有效期
- 服务码
实际交易流程
非接触支付
- 客户在非接触读卡器上拍卡
- 终端生成不可预测数
- 终端向卡片发送 GET PROCESSING OPTIONS 命令
- 卡片递增 ATC
- 终端发送包含 UN 的 COMPUTE CVC3 命令
- 卡片使用 ATC、UN 和磁道 2 数据计算 CVC3
- 卡片返回 CVC3 和 ATC
- 终端在授权消息中包含 CVC3、ATC 和 UN
- 收单方转发到 Mastercard 网络
- 发卡行 HSM 验证 CVC3
芯片(接触)支付
接触芯片交易的过程类似,但:
- 终端通过芯片接触接口通信
- 可能涉及额外的 EMV 命令
- CVC3 可能是更大密文(ARQC)的一部分
安全分析
为什么 CVC3 是安全的
- 动态:每笔交易都会变化
- 密钥依赖:需要卡片的密钥才能计算
- 多因素:结合 ATC、UN 和卡片数据
- 防重放:被盗的 CVC3 值无法重复使用
局限性
- 仅卡端:安全性取决于芯片密钥未被提取
- ATC 耗尽:65,536 笔交易后,卡片可能需要更换
- 终端信任:不可预测数必须真正不可预测
CVC3 与其他验证方法对比
| 方法 | 动态? | 位数 | 卡类型 | 用例 |
|---|---|---|---|---|
| CVV1 | 否 | 3 | 磁条 | 持卡交易 |
| CVV2 | 否 | 3 | 印刷 | 无卡交易 |
| CVC3 | 是 | 5 | 芯片/非接触 | 动态验证 |
| iCVV | 否 | 3 | 芯片 | 静态芯片验证 |
亲自尝试
使用我们的 Mastercard CVC3 工具理解和验证动态卡验证:
- Mastercard CVC3 计算器 —— 使用 ATC、不可预测数和磁道 2 数据计算 CVC3 值
所有计算在您的浏览器中运行——您的卡片密钥不会离开您的设备。