支付
支付令牌化
支付令牌化是指用一个引用令牌替换银行卡详细信息,这样商家就可以反复对存储的凭证进行收费,而无需自己持有银行卡号。
这使得循环账单成为可能,同时避免了每个商家都成为PCI范围内的银行卡保管库。令牌在其发行上下文之外是无意义的,这就是其安全特性。
同样的特性也是商业特性。由平台或应用供应商发行的令牌通常不能被其他人使用,因此谁持有它,谁就掌握了你的收款能力。在你的订阅用户群足够大到足以让其变得重要之前,务必以书面形式确保存储凭证的可移植性。
正在被替换的是什么,以及令牌的真实含义
受保护的对象是主账号 — 即PAN,银行卡正面的长串数字 — 以及有效期和输入时的安全码。这三个值是持卡人数据,持有它们会将企业拖入PCI DSS昂贵的合规范围。
令牌用一个与PAN没有数学关系的值来替换PAN。这是与加密的区别,而且这并非吹毛求疵:密文可以被任何获得密钥的人逆转,而令牌只能由持有映射关系的保管库解析。窃取令牌数据库并不能获得任何东西,除非同时攻破保管库,而保管库是一个独立控制的独立系统。
令牌有两种形式,它们经常被混淆。格式保留令牌看起来像银行卡号 — 长度相同,通过相同的校验和 — 因此它们可以通过为传输PAN而构建的系统。不透明令牌是任意标识符,即现代API中常见的`tok_`-和`pm_`-样式字符串,它们不能在任何地方伪装成银行卡。
更重要的混淆是关于单次使用和多次使用。客户端支付字段交给你的服务器的值通常是单次使用令牌:它的存在是为了将一次银行卡输入从浏览器传输到支付处理方,而无需触及你的基础设施,并且在首次使用后即失效。你为未来账单存储的值则是一个完全不同的对象 — 一个持久的保管库引用,它是特意创建的,可以存活下来以便再次收费。将前者视为后者,是团队在首次续订时发现他们从未保存任何东西的原因。
三种令牌,它们不可互换
这个词涵盖了几种不同的安排,它们在谁持有映射关系上有所不同,而这一个事实决定了关于可移植性、弹性以及银行卡重新发行时会发生的一切。
网关或PSP保管库令牌是常见情况,也是限制最多的:映射关系存在于一个提供商的数据库中,在其之外毫无意义。独立的令牌服务提供商形式相同,但保管库由不同的实体管理,选择它正是为了让保管库不属于你可能想要离开的那个方。网络令牌,在其自己的词条中有所描述,由银行卡网络发行,是这三种令牌中唯一由网络本身维护的。
| 类型 | 谁持有映射关系 | 银行卡重新发行后是否有效 | 其他支付处理方是否可用 |
|---|---|---|---|
| 单次使用结账令牌 | 支付处理方,短暂持有 | 不适用 — 使用后即失效 | 否 |
| 网关或PSP保管库令牌 | 支付服务提供商 | 否,除非有账户更新服务 | 否 — 需要进行保管库转移 |
| 独立的令牌服务提供商 | 你直接签约的保管库供应商 | 否,除非有账户更新服务 | 是 — 这正是使用它的原因 |
| 网络令牌 | 银行卡网络 | 是,自动 | 取决于令牌请求方的安排 |
它如何减少PCI范围,以及哪些范围不会消失
PCI DSS范围遵循持卡人数据。存储、处理或传输PAN的系统都在范围内;只持有令牌的系统则不在范围内,因为令牌不是持卡人数据。因此,令牌化首先是一种范围缩减技术。
这种范围缩减只有在银行卡号确实从未到达你的服务器时才能实现。这就是托管字段、来自支付处理方的iframe、客户端令牌化和完全重定向都旨在达到的目标。如果集成方案是将银行卡信息发送到你的后端并在那里进行令牌化,那么它只是将存储移出了范围,而处理和传输仍牢牢地在范围内,这比架构图所暗示的节省要小得多。
仍然在范围内的,是支付页面本身。你仍然控制加载支付字段的页面,注入到该页面中的脚本可以在支付处理方看到银行卡信息之前读取它。PCI DSS v4直接解决了这个问题,提出了关于支付页面脚本管理和页面防篡改检测的要求 — 6.4.3和11.6.1。令牌化并不能免除这些责任。
坦率地说,令牌化将商家从证明银行卡保管库的安全性转移到证明结账页面的完整性。这是一个更好的权衡,但这并不意味着没有任何义务。
可移植性陷阱:网关令牌无法转移
使令牌安全的特性是它在其发行上下文之外是无意义的。这个特性在攻击者和你的下一个支付服务提供商之间没有区别。
因此,迁移存储凭证簿需要进行保管库到保管库的转移:失去客户的提供商在符合PCI规范的条件下将银行卡数据导出给获得客户的提供商,后者再对其进行令牌化。这是一个成熟的程序,双方都可以执行,但它需要一个公司(其商业利益在于阻止转移发生)的合作。另一种选择是要求每个活跃订阅用户重新输入银行卡信息,其中相当一部分人根本不会这样做 — 这不是你可以挽回的流失,而是你造成的流失。
需要确保的条款是,在请求时,在规定期限内,以规定费用,将存储凭证导出到指定的替代提供商的权利。在拥有订阅用户群之前进行谈判是免费的,但一旦用户群形成,就几乎不可能获得。
为循环账单保管凭证
仅凭令牌不足以再次向客户收费。使后续收费有效的是与之并存的同意记录,而这份记录包含几个部分,一次天真的迁移会将其遗漏。
存储的凭证需要授权:客户同意了什么,何时同意的,他们接受的条款版本,以及他们同意的频率和金额。它需要交易类型 — 循环、分期或非计划 — 因为网络对它们的处理方式不同。它还需要原始客户发起的授权返回的网络交易标识符,后续由商家发起的收费必须引用该标识符,才能被识别为授权的延续,而不是针对银行卡的无关收费。
最后一个字段就是会丢失的那个。一次迁移如果只移动了令牌,但没有移动原始的网络交易标识符,会导致接收方处理商无法将续订作为有效的商户发起交易提交,结果是,在迁移后的第一个账单周期,授权率会下降,原因是在项目计划中无人预料到的。
除了凭证本身,值得保留您被允许用于显示和预测的信息:卡品牌、后四位数字和有效期。这些信息让客户能够识别文件中的是哪张卡,也让您能够识别在下次续订前会过期的凭证,并在扣款失败前联系这些客户。
常见问题
- 什么是支付令牌化?
- 支付令牌化用一个替代值(即令牌)替换卡号,该令牌与卡号没有数学关系。一个数据保险库(vault)保存着两者之间的映射关系。商户只存储令牌,并在再次向客户收费时提交它,这样,卡数据永远不会存储在商户的系统中,同时重复计费仍然有效。
- 令牌化和加密有什么区别?
- 加密将卡号转换为密文,任何持有密钥的人都可以将其逆转,因此保护随数据移动,并依赖于密钥管理。令牌化则替换为一个不相关的值,并将映射关系保存在一个单独的数据保险库中,因此,被盗的令牌数据库本身不会泄露任何信息。加密保护传输中的数据;令牌化则将其完全从您的系统中移除。
- 支付令牌化能减少PCI范围吗?
- 是的,如果卡号从未到达您的服务器。只存储令牌的系统不在PCI范围之内,因为令牌不是持卡人数据,这就是为什么存在托管字段、iframe和客户端令牌化的原因。范围并没有完全消失:支付页面仍然属于您,并且PCI DSS v4的6.4.3和11.6.1要求涵盖了该页面上的脚本管理和篡改检测。
- 支付令牌可以转移到其他提供商吗?
- 不能直接转移。网关令牌在其发行的数据保险库之外是无意义的,因此迁移需要进行数据保险库到数据保险库的转移,其中当前提供商在符合PCI的条件下将底层卡数据导出给新的提供商。双方都可以这样做,但失去客户的提供商没有商业动机,因此,导出权应在您签署合同之前就写入合同中。
- 支付令牌化与网络令牌相同吗?
- 网络令牌是一种支付令牌,由 Visa、Mastercard 或 American Express 而非支付提供商发行。它是唯一一种在卡片重新发行后仍然有效,并且唯一一种可以转移到其他处理商的令牌。网关数据保险库令牌是更常见的类型,但不具备这两种特性。
- 除了令牌,您还需要什么来收取订阅费用?
- 您需要同意记录:客户同意了什么、何时同意、接受的条款版本、交易类型,以及原始客户发起授权返回的网络交易标识符。后续由商户发起的扣款会引用该标识符,以便被识别为授权的延续。迁移令牌时如果没有它,通常会在迁移后的第一个周期内导致授权率下降。