VISA 证书验证是使用数字证书链验证 EMV 芯片卡真实性的过程。本指南解释 VISA 证书系统的工作原理,从 CA 公钥到发卡行证书验证。
什么是 VISA 证书验证?
VISA 证书验证是 EMV 芯片卡安全模型的一部分。当 VISA 卡(VSDC——VISA 智能借记/贷记卡)在终端使用时,终端必须验证卡片是真实的且未被篡改。这通过数字证书链完成。
证书链确保:
- 卡片由合法的发卡行发行
- 卡片的公钥是真实的
- 卡片上的数据未被修改
EMV 证书链
EMV 证书链有三个层级:
证书颁发机构(CA)公钥
└── 发卡行公钥证书
└── ICC 公钥证书(在卡上)
层级 1:CA 公钥
- 信任根
- 由支付网络(VISA、Mastercard 等)拥有
- 预加载在终端中
- 用于验证发卡行证书
层级 2:发卡行公钥证书
- 由 CA 颁发给发卡行(银行)
- 包含发卡行的公钥
- 由 CA 的私钥签名
层级 3:ICC 公钥证书
- 由发卡行颁发给单张卡
- 包含卡片(ICC)的公钥
- 由发卡行的私钥签名
VSDC CA 公钥
VSDC(VISA 智能借记/贷记卡)CA 公钥是 VISA EMV 证书系统的根密钥。
密钥属性
- 算法:RSA
- 密钥大小:1408、1728、1976 或 2048 位
- 指数:通常为 65537(0x010001)
- RID:注册应用提供商标识符(VISA:
A000000003)
密钥分发
CA 公钥通过以下方式分发到终端:
- 终端加载/密钥注入仪式
- 用于安全传输的 TR-31 密钥块
- 从支付网络直接加载
密钥索引(Index)
每个 CA 公钥都有一个索引(1-255)来标识它:
- 卡片存储所使用的 CA 密钥的索引
- 终端使用此索引选择正确的 CA 密钥
- 这使得无需重新发行所有终端即可进行密钥轮换
发卡行公钥证书
发卡行公钥证书由 CA 颁发给发卡行。它包含:
证书内容
- 发卡行公钥
- 发卡行标识符
- 证书过期日期
- 证书序列号
证书格式
证书是 RSA 数字签名:
证书 = RSA_Sign(CA_私钥, 证书数据)
其中证书数据包括:
- 证书头
- 发卡行公钥(模数和指数)
- 发卡行标识符
- 过期日期
验证过程
- 终端从卡上提取证书
- 终端检索 CA 公钥(使用 RID 和索引)
- 终端使用 CA 公钥解密证书:
解密结果 = RSA_Verify(CA_公钥, 证书) - 终端从解密数据中提取发卡行公钥
- 终端验证证书未过期
签名数据验证
签名数据是卡上由发卡行签名的附加数据:
目的
签名数据为以下内容提供完整性保护:
- 卡上的静态数据(PAN、有效期等)
- 应用数据
- 其他关键字段
验证过程
- 终端从卡上读取签名数据
- 终端使用发卡行的公钥(从证书中获取)进行验证:
有效 = RSA_Verify(发卡行公钥, 签名数据, 签名) - 如果验证成功,则数据是真实的
签名数据保护的内容
- 防止修改卡片数据
- 确保卡片未被克隆并使用不同数据
- 防止某些类型的欺诈
完整验证流程
步骤 1:选择应用
- 终端向卡片发送 SELECT 命令
- 卡片返回应用数据,包括:
- RID(VISA 为
A000000003) - CA 公钥索引
- 应用数据
- RID(VISA 为
步骤 2:检索 CA 公钥
- 终端使用 RID 和索引查找 CA 公钥
- 如果未找到密钥,交易可能以离线验证继续或被拒绝
步骤 3:读取发卡行证书
- 终端从卡上读取发卡行公钥证书
- 终端读取验证所需的附加数据
步骤 4:验证发卡行证书
- 终端使用 CA 公钥解密证书
- 终端提取发卡行公钥
- 终端验证证书过期日期
步骤 5:读取 ICC 证书
- 终端从卡上读取 ICC 公钥证书
- 终端读取 ICC PIN 加密公钥(如果存在)
步骤 6:验证 ICC 证书
- 终端使用发卡行公钥解密 ICC 证书
- 终端提取 ICC 公钥
- 终端验证证书过期日期
步骤 7:验证签名数据
- 终端从卡上读取签名数据和签名
- 终端使用发卡行公钥验证签名
- 如果所有验证成功,则卡片是真实的
证书验证中的 RSA 操作
证书验证涉及多个 RSA 操作:
RSA 验证
签名^e mod n = 哈希(数据)
其中:
e是公钥指数n是模数哈希通常是 SHA-1(传统)或 SHA-256
证书恢复
对于 EMV 证书,过程包括:
- 将证书提升到公钥指数的幂
- 应用解密算法
- 恢复签名数据
- 验证哈希
这在 HSM 中使用专门的 RSA 命令实现。
实际注意事项
终端实现
终端必须:
- 存储所有相关的 CA 公钥
- 实现完整的证书验证链
- 处理密钥索引查找
- 管理证书过期
HSM 支持
HSM 执行繁重的密码学操作:
- 用于证书恢复的 RSA 解密
- 哈希验证
- 密钥存储和管理
错误处理
如果证书验证失败:
- 交易应被拒绝
- 错误记录供调查
- 卡片可能被标记供审查
安全特性
信任链
证书链提供:
- 信任根(CA 密钥)
- 分层验证
- 各层级之间的密钥分离
防克隆
证书验证防止:
- 使用不同数据的卡片克隆
- 修改卡片数据
- 未授权的卡片发行
密钥轮换
系统支持密钥轮换:
- 可以分发新的 CA 密钥
- 可以逐步淘汰旧密钥
- 卡片携带所使用密钥的索引
常见问题
如果 CA 密钥泄露会怎样?
如果 CA 密钥泄露,由该密钥颁发的所有证书都可能无效。支付网络将颁发新的 CA 密钥并重新发行受影响的卡。
没有 HSM 可以验证证书吗?
虽然算法是已知的,但 HSM 提供:
- 安全的密钥存储
- 性能优化
- 符合支付网络要求
CA 密钥多久轮换一次?
CA 密钥是长期的(数年到数十年)。轮换提前计划并在整个支付生态系统中协调。
离线和在线验证有什么区别?
- 离线:终端在本地验证完整的证书链
- 在线:证书验证可能由发卡行的 HSM 在授权期间执行
亲自尝试
使用我们的 VISA 证书验证工具理解和练习 EMV 证书验证:
- VISA 证书验证工具 —— 验证 CA 公钥、发卡行证书、ICC 证书和签名数据
所有处理在您的浏览器本地完成——您的密钥不会离开您的设备。