我以前从未处理过PCI合规问题。我一直在阅读他们的文件,它说我需要保护信用卡号码,有效期和持卡人的姓名。没有存储安全代码。
在他们的文档中,它只是说保护。这是说我需要在我的数据库中加密这3列吗?我以为只有数字是需要加密的数据。无论哪种方式,我都很好。
如果我需要加密所有三列,我是否共享一个证书并拥有3个对称密钥,或者我只需要1个,并且所有3列都使用该对称密钥?我问的原因是在加密列的BoL文档中,密钥是在加密列之后专门命名的。
感谢您的帮助!
答案 0 :(得分:10)
如果您存储PAN(卡号),则绝对必须加密。
如果您存储持卡人姓名,到期日期,问题编号(并且他们可以链接到PAN),那么他们应加密,但(我的理解)是它不是绝对必要的。 PCI-DSS仅规定必须至少加密PAN。
CV2 / AVS / CSC代码无法在授权后存储,理想情况下您需要证明它根本不存储(例如 - 仅在执行授权时保存在内存中)
关于证书/密钥 - 您可以使用一个密钥来加密所有与卡相关的数据。最佳做法是不要将密钥用于多种用途,因此如果您有其他(非卡相关)数据加密,则使用单独的密钥。
最困难的部分是你没有详细提到的部分 - 那就是关键管理。为了满足PCI要求,密钥必须存储在数据库的单独物理盒中,并且您需要能够至少每年更改密钥。 SQL 2008通过Extensible Key Management (EKM)
支持此功能所有这些要点最好与独立的QSA(合格安全评估员)讨论,无论是为了满足PCI合规性,您都需要参与其中。您的QSA将能够引导您解决此类问题,并最终指导您应遵循的建议,以达到合规要求。
值得一提的是,大多数人很快意识到PCI合规性可能会带来多大的负担,并希望通过使用第三方支付网关来减轻这种负担。大多数支付网关将允许您执行授权/结算并将卡详细信息存储在其(已经兼容PCI)服务器上。然后,您只需要存储引用这些付款详细信息的TokenId,如果您需要对该卡进行进一步的收费/退款。
祝你好运!
答案 1 :(得分:2)
来自规范:https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml
要求3:保护存储的持卡人数据
加密,截断,屏蔽和散列等保护方法是持卡人数据保护的关键组成部分。如果是入侵者 绕过其他网络安全控制并获得对加密数据的访问,没有适当的加密密钥,数据是不可读的 对那个人无法使用其他保护存储数据的有效方法应被视为潜在的风险缓解机会。对于 例如,风险最小化的方法包括不存储持卡人数据,除非绝对必要,如果没有完全PAN,则截断持卡人数据 需要,而不是在未加密的电子邮件中发送PAN。
我认为这强烈暗示你应该