【发布时间】: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 合规性做出假设之外没有什么要补充的,那您就是在浪费时间。谢谢。