【问题标题】:Securely encrypting credit card data安全加密信用卡数据
【发布时间】:2019-10-14 15:59:43
【问题描述】:

我遇到了一种情况,我需要将信用卡持有人数据存储在我的数据库中,我正在寻找最安全的方法来处理这个问题。请注意,我完全了解 PCI-DSS,所以我的问题纯粹是关于加密方面的。

现在我决定使用 Curve25519 公钥加密(使用 libsodium),并且私钥安全地离线存储。假设我正确地实现了这一点。我想,当我只加密信用卡号和到期日时,这很容易被暴力破解,因为卡号的前 6 位和后 4 位数字以及到期日都是已知的,因为它们已经是纯文本某处的数据库。

假设我正在加密这个

1234561111118762|10|21|VISA

现在这个字符串中唯一的秘密是111111(6 位数字)。有人要花 10^6 次才能找出这个数字。

但是如果我像这样加密呢

1234561111118762|10|21|VISA|aVeryLongPsuedoRandomStringGeneratedUniquelyForEachEncryptedString

这会阻止暴力 10^6 场景吗?还是我错过了什么?

【问题讨论】:

  • 你需要问这个事实在你自己的脑海中应该是一个危险信号......
  • 我只是说。要么你故意忽视你在 PCI 合规性下的义务,要么你没有资格执行这些义务。
  • 我的问题是关于加密的。让我们不要离开这个主题。如果您除了对我的 PCI 合规性做出假设之外没有什么要补充的,那您就是在浪费时间。谢谢。

标签: encryption credit-card


【解决方案1】:

说到只是关于加密......

我假设“蛮力”是指获取公钥,加密并与您存储的密文进行比较。如果这是您的意思,那么答案取决于实现。

您需要确定实现是否是确定性的 - 如果是,那么是的,可以进行暴力破解和比较。如果不是(如您所料),那么这不是问题。

我希望 libsodium 已经解决了这个问题。

【讨论】:

  • 这很有帮助 :) 所以我可以放心地假设,只要使用(正确实施的)概率加密,就没有办法进行暴力破解并与存储的文本进行比较。
猜你喜欢
  • 2012-06-18
  • 2020-02-28
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 2013-04-12
  • 2010-12-29
相关资源
最近更新 更多