SQL Server 2008 + PCI 合规性?与 PCI 以及对称密钥有关!

发布于 2024-08-20 15:04:17 字数 276 浏览 1 评论 0原文

我以前从未处理过 PCI 合规性问题。我一直在阅读他们的文档,其中说我需要保护信用卡号、到期日期和持卡人姓名。永远不会存储安全代码。

在他们的文档中,它只是说“保护”。这是说我需要加密数据库中的这 3 列吗?我以为只有数字才是需要加密的数据。不管怎样,我都同意。

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

感谢您的帮助!

I've never had to deal with PCI compliance before. I've been reading their documentation and it says I need to protect the credit card number, expiration date and the card holder's name. No storage of security codes ever.

In their documentation, it just says protect. Is this saying I need to encrypt these 3 columns in my database? I thought only the number was the data that needed to be encrypted. Either way, I'm fine with.

If I need to encrypt all three columns, do I share one certificate and have 3 symmetric keys, or will I only need 1 of each, with that symmetric key being used on all 3 columns? The reason I ask is in the BoL documentation on encrypting a column, the key is named specifically after the column they are encrypting.

Thanks for all the help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒中人 2024-08-27 15:04:17

如果您存储 PAN(卡号),那么它绝对必须加密。

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

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

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

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

一点。最好与独立的 QSA(合格安全评估员)讨论,为了满足 PCI 合规性,您有时需要让他们参与。您的 QSA 将能够就此类问题为您提供指导,并且最终您应该遵循他/她的建议才能满足合规性。

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

不管怎样,祝你好运!

If you store the PAN (card number) then it absolutely must be encrypted.

If you store cardholder name, expiry date, issue number (and they can be linked to the PAN), then they should be encrypted, but (my understanding) is that its not absolutely necessary. PCI-DSS only states that at a minimum the PAN must be encrypted.

The CV2/AVS/CSC code cannot be stored post authorization, and ideally you'd want to prove that it isnt stored at all (eg - only kept in memory whilst performing authorization)

Regarding certificates/keys - you could just use one key for encryption of all card related data. Best practice is to not use keys for multiple purposes, so if you have other (non card related) data that is encrypted, then use a seperate key for that.

The most difficult part is one you havent really mentioned in detail - and thats key management. To meet PCI requirements the key must be stored on a seperate physical box to the database, and you need the ability to change the key at least annually. SQL 2008 supports this with Extensible Key Management (EKM)

All of these points are best discussed with an independant QSA (Qualified Security Assessor) who you will at some point need to involve regardless in order to meet PCI compliance. Your QSA will be able to guide you on questions such as this, and ultimately its his/her advice that you should follow in order to meet compliance.

Its worth mentioning that most people soon realise how much of a burden PCI compliance can be, and look to minimize that burden by using a 3rd party payment gateway. Most payment gateways will allow you to perform authorization/settlement and store the card details on their (already PCI compliant) servers. You then only need store a TokenId that references those payment details should you need to perform further charges/refunds on that card.

Good luck either way!

鲜血染红嫁衣 2024-08-27 15:04:17

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

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

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

我认为这强烈建议你不要

  1. 存储,除非你必须,
  2. 如果必须的话,如果可以的话存储一部分,
  3. 如果你存储任何东西,加密它。

From the specification: https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

Requirement 3: Protect stored cardholder data

Protection methods such as encryption, truncation, masking, and hashing are critical components of cardholder data protection. If an intruder
circumvents other network security controls and gains access to encrypted data, without the proper cryptographic keys, the data is unreadable and
unusable to that person. Other effective methods of protecting stored data should be considered as potential risk mitigation opportunities. For
example, methods for minimizing risk include not storing cardholder data unless absolutely necessary, truncating cardholder data if full PAN is not
needed, and not sending PAN in unencrypted e-mails.

I think this strongly suggests that you should

  1. not store unless you have to
  2. if you have to, store a part if you can
  3. if you store anything, encrypt it.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文