【发布时间】:2011-06-24 12:46:12
【问题描述】:
因此,就像任何有能力的 Web 开发商店一样,我们在接触信用卡时戴上棉手套,并使用 Braintree SecureVault 来存储它们,这样我们就不会遇到 PCI 合规性问题。
但是,现在我们希望为我们的服务提供免费试用,这在很大程度上依赖于能够保证给定信用卡仅用于免费试用一次。理想情况下,我们将能够对信用卡号本身进行哈希处理以保证唯一性。问题在于有效信用卡号码的集合很小,因此很容易暴力破解信用卡号码。就我所见,加盐策略是没有用的,因为如果有人可以访问哈希数据库,他们很可能也有代码,因此也有加盐算法。
迄今为止最好的两个想法是:
A) 将哈希值隔离在一组中,与其计费信息无关。因此,如果哈希是暴力破解的,那么它们所拥有的只是一个在某个时间点使用过的信用卡号码列表,没有个人信息,也不知道它是否仍然有效。这里的主要弱点是我们确实有 last-4 的记录,这可能会在某种程度上用于匹配它们。
B) 没有全数的散列并处理误报和误报。名称、last-4 和过期时间的散列应该是相当独特的。误报就像中了彩票,我们可以在客户支持处处理。修改名称可能会导致漏报,我们不清楚我们对名称匹配的准确性有什么保证(我的理解可能受到网关和商家帐户的影响),因此这可能会打开一个漏洞。
想法?建议?久经考验的智慧?
【问题讨论】:
-
为什么您不能也使用 Brainfree Secure Vault 来进行试用?
-
不保证唯一性,即多个帐户可以使用同一张信用卡,从业务角度来看,这基本上是整个想法的下沉,因为我们有真正的负债。虽然这对于他们的 API 来说肯定是一项有趣的服务。
标签: hash credit-card pci-dss