HSM KitHSM Kit
中文

Mastercard 动态 CVC3:EMV 验证与 ATC

Payment Security# Mastercard# CVC3# EMV# 动态 CVV
Last Updated: 2026年5月21日5 min readBy HSM Kit Team
Need to calculate this now?
Use our free online Mastercard CVC3 计算器 tool.

Mastercard 动态 CVC3 是一种每笔交易都会变化的卡验证值,比静态 CVV 码提供更强的安全性。本指南解释 CVC3 在 EMV 非接触和芯片交易中的工作原理。

什么是动态 CVC3?

动态 CVC3(卡验证码 3)是 Mastercard 的动态卡验证实现。与印刷在卡上的静态 CVV 不同,CVC3 使用存储在卡片芯片中的密钥为每笔交易重新生成。

这使得被盗的 CVC3 值对未来交易毫无用处——相比静态 CVV/CVC,这是显著的安全改进。

EMV 动态验证工作原理

EMV 芯片卡使用挑战-响应机制进行动态验证:

  1. 终端发送挑战:POS 终端生成不可预测数(UN)
  2. 卡片计算响应:芯片使用其密钥、ATC 和 UN 生成 CVC3
  3. 终端转发结果:CVC3 包含在授权消息中
  4. 发卡行验证:发卡行的 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(不含校验位)
  • 有效期
  • 服务码

实际交易流程

非接触支付

  1. 客户在非接触读卡器上拍卡
  2. 终端生成不可预测数
  3. 终端向卡片发送 GET PROCESSING OPTIONS 命令
  4. 卡片递增 ATC
  5. 终端发送包含 UN 的 COMPUTE CVC3 命令
  6. 卡片使用 ATC、UN 和磁道 2 数据计算 CVC3
  7. 卡片返回 CVC3 和 ATC
  8. 终端在授权消息中包含 CVC3、ATC 和 UN
  9. 收单方转发到 Mastercard 网络
  10. 发卡行 HSM 验证 CVC3

芯片(接触)支付

接触芯片交易的过程类似,但:

  • 终端通过芯片接触接口通信
  • 可能涉及额外的 EMV 命令
  • CVC3 可能是更大密文(ARQC)的一部分

安全分析

为什么 CVC3 是安全的

  1. 动态:每笔交易都会变化
  2. 密钥依赖:需要卡片的密钥才能计算
  3. 多因素:结合 ATC、UN 和卡片数据
  4. 防重放:被盗的 CVC3 值无法重复使用

局限性

  1. 仅卡端:安全性取决于芯片密钥未被提取
  2. ATC 耗尽:65,536 笔交易后,卡片可能需要更换
  3. 终端信任:不可预测数必须真正不可预测

CVC3 与其他验证方法对比

方法动态?位数卡类型用例
CVV13磁条持卡交易
CVV23印刷无卡交易
CVC35芯片/非接触动态验证
iCVV3芯片静态芯片验证

亲自尝试

使用我们的 Mastercard CVC3 工具理解和验证动态卡验证:

所有计算在您的浏览器中运行——您的卡片密钥不会离开您的设备。

Related Tool
Mastercard CVC3 计算器