我正在研究密钥管理解决方案,以便符合PCI标准。我已经和竞技场上的一些供应商进行了交谈,虽然我喜欢他们的产品,但成本超出了我的预算。是否有人知道密钥管理的任何开源或低成本解决方案?我使用Windows / .NET环境,所以我更喜欢针对该环境的解决方案,但是我会有兴趣听到有关那里的任何内容。
由于
答案 0 :(得分:6)
查看KeyManager,它是OpenStack套件的关键管理组件。该应用程序可用作OpenStack之外的独立密钥管理解决方案。
作为OpenStack的一个组件,KeyManager正在积极开发,计划在六个月的周期内推出新功能。
答案 1 :(得分:5)
我意识到这是一个旧线程,但有几个选项:
然而,选项#2有许多优点,因为它允许您在完全符合PCI标准的情况下利用公共云(搜索“符合法规的云计算(RC3)”并点击IBM的链接 - 我只能在我的回答中发布了两个链接),更多关于如何利用在旧金山举行的RSA 2013上宣布此设备的公告。
我希望有所帮助。
答案 2 :(得分:4)
我们有与您相似的经历。我们需要一个符合PCI标准的密钥管理解决方案,而且我们看到的所有商业产品都太贵了。对于小客户而言,一些关键管理人员的成本高于我们的产品!
我们最终制作了一个基于软件的密钥管理器。我们制定了要求,离岸开发商对其进行编有一次他们正在寻找其他客户使用它。我不知道他们是否还在。
让我解释一下我们探索的选项。首先要记住的是,PCI合规性和安全性是不同的,您可以符合PCI标准并且不太安全。
选项0 - 为每个DB列分配一个密钥,并将密钥存储在DLL文件中。您的应用程序链接在DLL文件中以访问密钥以加密和解密数据。没有人知道钥匙。对于定期密钥替换,您使用新密钥创建一个新DLL,使用旧密钥解密所有数据并使用新密钥重新加密数据。然后使用带有新密钥的新DLL重新启动应用程序。 (请注意,如果您考虑恢复数据库备份,则需要保留旧密钥。)
我第一次听说选项0时,我很惊讶它是PCI兼容的。我们不使用选项0。
改进选项0的方法。
如果您的环境中有HSM,请使用HSM加密DLL文件中的密钥。当您的应用程序启动时,它将使用HSM解密密钥。如果您想要更高的安全性,请在每次需要时解密密钥。
密钥加密后,将它们存储在数据库表中是安全的。如果为每个键(旧的和新的)分配一个小整数键ID,则可以将key-id与加密数据一起存储。这使您可以进行增量密钥替换并避免停机。
在许多进程中将密钥置于清晰的内存中会增加您在内存扫描攻击中找到密钥的风险。您可以创建一个新进程,该进程是解密密钥的唯一进程。您的应用程序与此新进程进行对话以加密和解密数据。这个新工艺应该放在一个带有小“表面积”的盒子上以保护它。由于敏感数据现在通过网络传输,因此应加密此通信。 SSL是一个不错的选择。
答案 3 :(得分:4)
KLMS over KMIP是一款优秀且易于使用的密钥管理解决方案。 这是一个用Java编写的开源解决方案。请参阅以下链接以供参考。 http://www.ibm.com/developerworks/library/se-kmip4j/
名为stubInterface的包将包含在KMIP上使用KLMS所需的所有api。
KLMS :关键生命周期管理系统
KMIP :密钥管理互操作性协议
答案 4 :(得分:2)
我会在搜索结果中添加此列表,其他人可能会从扩展列表中受益。
我最近发现KeyWhiz似乎是alpha。
答案 5 :(得分:0)