最佳+最强的数据库加密方法

时间:2011-11-19 16:36:16

标签: mysql database security encryption password-encryption

我将Paswords和个人数据存储在数据库中。加密这些保护值的最强方法是什么。

此外,在数据库中加密信用卡信息的最佳方法是什么?或者我应该使用其他东西存储信用卡信息,而不是mysql数据库??

感谢。

2 个答案:

答案 0 :(得分:11)

我认为在SQL中存储任何内容都很好,只需先加密即可。如果您需要以某种方式识别数据(例如使用DB条目的唯一键),请创建随机生成的字符串或安全散列,并将其存储在加密数据的旁边。

最好坚持使用经过试验和测试的东西。由于它是一个数据库(可能用于计费系统),因此快速检索会很好。因此,请远离非对称加密 - 如果您需要与对象密钥共享,则应该仅使用它来加密对称密钥。

AES的一些特殊强度(比如256位)应该没问题。我很高兴知道我们以这种方式获得的个人信息。

在存储用户密码方面,通常的做法是生成一个salt(随机字符串),然后使用安全散列算法(RIPEMD,SHA1,MD5)散列与此salt结合的用户密码。

这可以防止预先计算的字典破解者恢复密码,因为它也需要处理所有随机盐。

不加密密码,只对其进行哈希处理。没有必要能够以明文形式恢复密码,它只会通过这一个主密钥使您的系统容易受到攻击。不要使用用户可以选择的密钥加密用户数据,这会在密钥丢失时使数据无法恢复。提供用户在丢失密码时恢复帐户访问权限的常用方法。

如果您确实需要隐藏用户名,也许您应该问自己所使用的数据架构。一般而言,个人数据,尤其是账单数据不应存储在明显的视线中,只能由受信任方访问。这些受信任方需要查看用户名和信息的内容,因此加密可能是不必要的。

如果您要在开放的互联网上传输用户信息,请对其进行加密。

如果您担心数据库服务器上的用户信息的安全性,可以考虑与云或数据托管服务提供商合作,他们可以为您的服务器提供一些额外的物理安全性。

加密只是强大安全策略的一部分。特别关注建立安全环境以进行商业活动的人为因素。根据需要了解敏感资源的访问权限。如果丢失所有密钥,请确保安排备份或某些数据恢复方法。

答案 1 :(得分:1)

请注意,存储信用卡数据时,加密并不是您唯一需要担心的问题。还有严格的审计要求和许多其他问题(如果您不熟悉,请参阅PCI website。)

虽然您可能设法获得PCI合规性,但如果您不熟悉必要的安全措施,这样做可能会让您承担巨额责任。如果您的系统遭到破坏或发现您不合规,您将面临严重的罚款。

查看Authorize.net等付款服务提供商的替代解决方案。具体来说,他们的Customer Information Manager产品值得研究,因为他们会为您的服务器存储信用卡信息等安全数据。