PCI DSS 相关要求:存储限制、加密要求、令牌化作为替代方案
做支付系统的人,一定绕不开 PCI DSS。这套标准说白了就是告诉你怎么安全地处理卡号数据。我这些年经手过好几个合规项目,最大的感受是:很多人光知道「要加密、要脱敏」,但到底哪些数据能存、存了该怎么保护,界限其实很模糊。今天我们就把这几个关键点拆开聊。
存储限制——能存什么,不能存什么
PCI DSS 对存储的限制非常明确。它的核心逻辑是:只要不是业务必须,就别存。具体来说,有下面几条红线。
严格禁止存储的数据:
- 完整的磁道数据(磁道 1、磁道 2、磁道 3)
- 卡片验证码(CVV2/CVC2/CID)
- PIN 或 PIN 块
允许存储的数据,也要做脱敏处理。比如 PAN(主账号)可以存,但必须通过截断(只保留前六后四)、哈希或令牌化来保护。截断后的 PAN 不能超过 12 位,而且不能是完整 PAN 的可逆形式。
个人经验:几年前我参与过一个电商平台的迁移项目。开发团队把完整 PAN 存在日志里方便排查问题,结果审计时直接亮红灯。后来我们加了 log scrubbing 工具,把日志里的 PAN 自动替换成令牌。嗯,这个坑踩过一次就不会再犯了。
另外还要注意:存储的 PAN 必须与业务必要性对应。PCI DSS 要求定期审查存储的数据,清理掉不需要的历史记录。我建议每次版本迭代都做一次数据盘点,把不必要的 PAN 痕迹清掉。
加密要求——传输和静态都不能裸奔
加密分两块:传输中的加密(in transit)和存储中的加密(at rest)。
传输层的要求比较直接——所有包含 PAN 的网络通信必须用强加密协议,比如 TLS 1.2 或更高。我记得有一次看到某个网关还在用 SSL 3.0,直接被卡在合规门口。现在一般建议至少 TLS 1.2,银行侧很多已经开始要求 TLS 1.3。
存储加密则更灵活一些。PAN 存储时可以用磁盘级加密、列级加密或者应用层加密。密钥管理是关键中的关键——你必须把加密密钥和加密数据分开存放,并且使用硬件安全模块(HSM)或密钥管理系统(KMS)。
| 状态 | 要求 | 常用实现 |
|---|---|---|
| 传输中(In Transit) | 使用强加密协议保护所有公开网络通信 | TLS 1.2+,证书双向认证 |
| 存储时(At Rest) | 使用 FIPS 140-2 认可的算法加密 PAN | AES-256,密钥由 HSM 管理 |
| 处理时(In Use) | PCI DSS 未直接要求,但最佳实践建议隔离 | 安全内存、TEE 环境 |
注意:加密 ≠ 自动合规。加密密钥如果和密文存在同一台服务器上,那等于没加密。我曾经见过有人把密钥硬编码在配置文件里——这种操作比不加密还危险。
令牌化作为替代方案——降低合规范围的利器
令牌化(Tokenization)说白了就是用一串无意义的令牌代替 PAN,让系统不再接触原始卡号。它跟加密有个本质区别:加密是可逆的(有密钥就能解密),而令牌化通常不可逆——想要还原 PAN,必须通过令牌服务发起授权查询。
为什么令牌化能成为替代方案?因为 PCI DSS 的合规范围是「持卡人数据环境」(CDE)。一旦你用了令牌化,大部分系统只需要存储令牌,令牌本身不在 PCI DSS 的合规范围内。这样你就能把合规边界压缩到很小的令牌化网关或服务上。
下面这张图能帮你直观理解令牌化的位置和作用。
看到没?令牌化服务自身是 CDE 的核心,但下游系统(商户数据库、商户前端)只接触令牌,这些系统可以完全脱离 CDE 的审计范围。你想想看,这能省下多少合规工作量?我有个客户就是用这个思路,把原本需要几百台服务器的合规环境压缩到了两个机柜的令牌化网关。
令牌化与加密的对比
| 维度 | 加密 | 令牌化 |
|---|---|---|
| 可逆性 | 可逆(密钥解密) | 通常不可逆(需通过服务查询) |
| 合规范围 | 整个加密/解密环境仍在 CDE 内 | 只有令牌化服务在 CDE 内 |
| 性能开销 | 加解密需要计算资源 | 令牌生成/查询延迟低于毫秒级 |
| 适用场景 | 需要还原原始 PAN 做对账、退款等 | 只需唯一标识,无需原始 PAN 的场景 |
选型建议:如果你的系统需要反复使用原始 PAN(比如循环扣款、历史交易查询),加密可能更直接。如果只是做收单、支付转发、风控标识,令牌化能帮你把合规成本砍掉一大半。
几个容易踩的坑
- 令牌不代表完全豁免——如果你用令牌反查出 PAN 的能力太容易(比如令牌生成算法太弱),PCI 审计一样会认为你等于在存储 PAN。
- 存储限制依然适用于令牌化系统本身——令牌服务内部必须按 PCI DSS 要求保护映射表,包括加密、访问控制、日志审计。
- 误以为令牌可以随便丢——令牌虽然不是 PAN,但它直接关联到支付业务。如果丢失可能导致重放攻击或身份混淆。
避坑指南:我曾经看到一个项目,把用户的令牌直接当作权限 暴露给前端——这等于把钥匙挂在门上。令牌可以暴露给后端服务,但不能传到浏览器或客户端里。切记。
好了,关于 PCI DSS 存储限制、加密和令牌化替代方案,就聊这么多。这几个点是支付安全的基石,后面我们还会反复用到这些概念。记住一个原则:能少存就少存,能令牌化就不存明文,能加密就不裸奔。