3

我以前从未处理过 PCI 合规性问题。我一直在阅读他们的文件,上面说我需要保护信用卡号、有效期和持卡人姓名。从未存储安全代码。

在他们的文档中,它只是说保护。这是说我需要加密数据库中的这 3 列吗?我认为只有数字是需要加密的数据。无论哪种方式,我都很好。

如果我需要加密所有三列,我是否共享一个证书并拥有 3 个对称密钥,或者我只需要一个,并且在所有 3 列上都使用该对称密钥?我问的原因是在加密列的 BoL 文档中,密钥是专门以他们正在加密的列命名的。

感谢所有的帮助!

4

2 回答 2

10

如果您存储 PAN(卡号),则绝对必须对其进行加密。

如果您存储持卡人姓名、到期日期、发行号(并且它们可以链接到 PAN),那么它们应该被加密,但(我的理解)这不是绝对必要的。PCI-DSS 仅规定至少必须对 PAN 进行加密。

CV2/AVS/CSC 代码无法在授权后存储,理想情况下您想证明它根本没有存储(例如 - 仅在执行授权时保存在内存中)

关于证书/密钥 - 您可以只使用一个密钥来加密所有与卡相关的数据。最佳实践是不要将密钥用于多种用途,因此如果您有其他(与卡无关的)数据已加密,请为此使用单独的密钥。

最困难的部分是您没有真正详细提及的部分——那就是密钥管理。为了满足 PCI 要求,密钥必须存储在数据库的单独物理盒中,并且您需要能够至少每年更改一次密钥。SQL 2008 通过可扩展密钥管理 (EKM)支持这一点

最好与独立的 QSA(合格的安全评估员)讨论所有这些要点,为了满足 PCI 合规性,您在某些时候需要参与其中。您的 QSA 将能够就此类问题为您提供指导,并最终指导您遵循他/她的建议以达到合规要求。

值得一提的是,大多数人很快就会意识到 PCI 合规性的负担有多大,并希望通过使用 3rd 方支付网关来最大程度地减少这种负担。大多数支付网关将允许您执行授权/结算并将卡详细信息存储在其(已经符合 PCI 的)服务器上。然后,如果您需要在该卡上执行进一步的费用/退款,您只需要存储一个引用这些付款详细信息的 TokenId。

祝你好运!

于 2010-02-10T14:22:42.560 回答
2

来自规范:https ://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

要求 3:保护存储的持卡人数据

加密、截断、屏蔽和散列等保护方法是持卡人数据保护的关键组成部分。如果入侵者绕过其他网络安全控制并获得对加密数据的访问权,而没有适当的加密密钥,则该数据对该人来说是不可读且无法使用的。其他保护存储数据的有效方法应被视为潜在的风险缓解机会。例如,最小化风险的方法包括:除非绝对必要,否则不存储持卡人数据,如果不需要完整的 PAN,则截断持卡人数据,以及不在未加密的电子邮件中发送 PAN。

我认为这强烈建议你应该

  1. 除非必须,否则不要存储
  2. 如果必须的话,如果可以的话,存储一个零件
  3. 如果您存储任何内容,请对其进行加密。
于 2010-02-09T20:07:06.513 回答