根据 PCI DSS 截断如何安全?

信息安全 pci-dss 蛮力 贮存
2021-08-29 21:54:35

PCI 标准的第 3.3 节中,它说在显示 PAN 时,将可见性限制为 PAN 的前 6 位和后 4 位数字被认为是安全的。考虑到校验和要求,在 16 位 PAN 上进行一些快速数学运算,这仅留下 100,000 个卡号来蛮力获得我想要的那个。

如果还提供了哈希,这将非常容易破解,但是是什么阻止我用脚本向一些电子商务网站发送垃圾邮件,直到它告诉我我是对的?这也不应该花很长时间。我知道必须猜测 3 位数的安全码会让我猜到 1 亿次,但并不是每个人都使用这个密码。

我公司的数据库为我提供了姓名、地址、卡类型、截断的 PAN 以及卡/持有人的到期日期,这似乎是攻击的大量信息(至少是社会工程)。如果我正确阅读 PCI 标准,这也符合它。

我错过了什么?

我正在使用这个方便的表格(第 2 页)作为快速参考

3个回答

我认为在泄露多少额外信息的情况下更有意义,而不是暴力破解剩余数字是多么容易。

PAN 不完全是一个随机值,它由以下部分组成:

  • 六位数的发行人识别号 (IIN)(以前称为“银行识别号”(BIN)),其中第一位是主要行业标识符 (MII),
  • 可变长度(最多 12 位)个人帐户标识符
  • 使用 Luhn 算法计算的单个校验位

http://en.wikipedia.org/wiki/Bank_card_number

因此使用此信息:

我公司的数据库为我提供了姓名、地址、卡类型、截断的 PAN 以及卡/持有人的到期日期

您可能很容易将前 6 位数字缩小到相当小的可能性。

只剩下最后 4 位数字,其中一个是校验位,因此不包含任何额外的熵。

所以基本上你只给出了 3 个数字,即使所有 10 个数字都暴露了。

只剩下 100,000 个卡号来蛮力获得我想要的

我猜想执行这样的蛮力攻击将相当困难,因为大多数支付处理器会很快将您锁定在外。

PCI DSS 还说:

注意:如果恶意个人可以访问 PAN 的截断和散列版本,则重建原始 PAN 数据是一项相对微不足道的工作。如果实体环境中存在同一 PAN 的散列和截断版本,则应采取额外的控制措施,以确保散列和截断版本无法关联以重建原始 PAN。

这应该可以防止攻击者进行离线暴力攻击。

此外,这些是最低要求。它在原则 7 中指出:

要求 7:限制业务需要知道的对持卡人数据的访问

我想向客户显示所有 10 个允许的数字会超出“需要知道”的范围。可能需要最后 4 个来识别哪张卡是哪张卡,但大多数用户不需要知道前 6 个,除非可能会显示它是什么类型的卡。

最佳猜测,简短版本:

  1. 它植根于物理实践,并保留在数字实践中
  2. 没有它,它与暴力猜测没有显着不同

推理:

从历史上看,收据上会打印截断的数字,因为它们提供了足够的信息来识别退货或退款中的拒付。对于实体卡商家来说,他们可能没有电子商务商家那样复杂的数据库。如果收据上没有这些信息,就很难匹配交易。

记住,前6是IIN(又名BIN)号,所有这些都是 知的如果有人想暴力破解一张卡片,他们可以选择一个 BIN,然后他们就会从中知道卡片的品牌。暴力破解剩余的 10 个(没有截断的数据来提供最后 4 个)比剩余的 6 个(如果你有截断的数字)更难,但这并不是一个天壤之别。

换句话说……用数学术语来说,暴力破解一张完整的卡片相对简单,复杂度为 10^10(10 个数字,10 个位置,加上已知的 6 个 BIN)。将其降至 10^6 意义重大,但并不惊天动地;两者都比 26^8 的 8 位字母数字密码容易得多。但:

最后,暴力破解并不离线。您不能在真空中进行暴力破解,您必须通过商家、处理器和卡品牌来进行交易尝试。他们所有人都在一定程度上检查了暴力攻击。可以公平地说,这些卡品牌在分析和对暴力攻击做出反应的能力方面非常成熟。商家将不那么如此,但更简单的动机是他们会因为失败的授权尝试而被收费,因此暴力攻击会增加他们的费用。

要求加密或散列会更好吗?当然。但是,请参阅#1。如果没有完全打破传统做法,它们可能会持续存在。

免责声明:

基于知识的花絮和合理的逻辑,这个答案有很多猜测。我很想看到有人根据更全面的知识提出更好的答案。

其他帖子简明扼要地说,如果您通过身份验证尝试向处理器发送垃圾邮件,处理器应该迅速将您拒之门外,因此您是否会在这方面取得很大进展是值得怀疑的。

如果还提供哈希,这将非常容易破解

如果哈希是指哈希 PAN 的输出,那么它取决于所采用的算法。考虑一个使用基于时间的工作因子(bcrypt、scrypt、pbkdf2)的算法,其计算时间约为 0.5 秒。在 100k 个可能的输出中,假设需要 50k 次尝试才能匹配一个。大约需要 17 个小时来进行匹配。如果使用了适当的盐渍,您只能获得一张卡的密钥,并且必须重新开始下一张。