有没有人获得实践经验或参考实施符合PCI DSS安全标准的密钥管理方案的方案?
鉴于符合PCI DSS的公司数量,但显然有很多实现,但试图找到它们的细节是很困难的.当它归结为存储私有数据时,讨论通常会停止使用哪种加密算法.在此之后,通常会有关于正确存储私钥的声明,但没有讨论实际的方法,或者定期更改密钥或为应用程序提供密钥等.
具体而言,我对PCI DSS标准第3.5和3.6节的要求感兴趣.
3.5.2以尽可能少的位置和形式安全地存储加密密钥.
3.6.a验证用于加密持卡人数据的密钥是否存在密钥管理程序.注意:密钥管理的众多行业标准可从包括NIST在内的各种资源获得,可在http://csrc.nist.gov上找到.
3.6.4确认密钥管理程序的实施至少每年要求定期更改密钥.
我已经看过NIST Cryptographic出版物,正如PCI DSS要求文件所暗示的那样,但除了最近的加密密钥管理研讨会的注释之外,似乎没有太多真正可实现的方案或标准.
至于我想要做的事情不是:
所有这些都是有效的问题,但在这种情况下不是答案.我的要求的细节是一个不同的SO问题.Net设计模式,用于存储和检索敏感的每个用户数据,但这一切都归结为密钥管理,因此这个更精确的问题.
我的业务要求迫使我在短时间内存储客户的完整信用卡详细信息(编号,姓名,到期日期,CVV2).
理由:如果客户打电话订购产品并且他们的信用卡被当场拒绝,您很可能会失去销售.如果您了解他们的详细信息,感谢他们的交易,然后发现该卡被拒绝,您可以给他们打电话,他们更有可能找到另一种支付产品的方式.如果信用卡被接受,您可以清除订单中的详细信息.
我无法改变这一点.现有的系统以明文形式存储信用卡详细信息,而我正在构建的新系统中替换它,我显然不会复制这个!
那么,我的问题是如何在短时间内安全存储信用卡.我显然想要某种加密,但最好的方法是什么?
环境:C#,WinForms,SQL-Server.
可能重复:
存储信用卡详细信息
有许多网站存储信用卡信息.在我的一个应用程序中,我也需要将信用卡信息存储在数据库中.但我不知道如何存储它们.我找到了一个地方,我们可以将信用卡号码分成几部分,并在将它们存储到数据库之前加密它们.虽然这似乎是一个好主意,但我很好奇Paypal和amazon.com这样的知名网站是如何做到的.有谁知道他们如何存储信用卡信息?