2011-11-19 41 views
6

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

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

谢谢。

+7

永远不要存储信用卡信息。 –

+3

@ShaktiSingh那么像Amazon和Like这样的公司如何存储它们呢? –

+2

阅读:http://stackoverflow.com/questions/3002189/best-practices-to-store-creditcard-information-into-database –

回答

11

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

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

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

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

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

不要对密码进行加密,只对它们进行哈希处理。没有必要能够以明文方式恢复密码,它只会通过这一个主密钥使系统变得脆弱。不要使用用户可以选择的密钥对用户数据进行加密,这会在密钥丢失的情况下使数据无法恢复。为用户在丢失密码的情况下恢复对其帐户的访问提供常用方法。

如果你真的需要隐藏用户名,也许你应该问自己关于你正在使用的数据架构。一般来说,个人数据,尤其是账单数据不应该存储在明显的位置,只能由可信方访问。这些可信任方将需要查看用户名和信息的内容,因此加密可能是不必要的。

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

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

加密只是强健安全策略的一部分。特别关注建立一个安全的环境来进行你的商业活动的人为因素。在需要了解基础的情况下提供对敏感资源的访问。如果所有密钥都丢失,请确保您安排备份或某些数据恢复方式。

+1

+1尼斯彻底的回答 –

+0

[nope](http://stackoverflow.com/users/1283048/nope)的评论:“'所以远离非对称加密 - 你应该只用来加密对称密钥if你需要与他人分享。“ - 没有任何意义 - 为什么有人会加密除TLS以外的KEYS?当然,非对称加密有其(很多)用途 - 实际上,应该避免使用对称加密方法,因为它们在设计中易受攻击,如果传输流未加密;知道具有非对称加密的公共密钥不会授予解密能力。“ –

+0

@PeterO。它确实是有道理的......缓慢的,不对称的公钥加密方法被用来加密对称密钥的交换。快速的对称密钥加密又被用于加密数据流。 – spamsink

1

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

虽然您可以设法达到PCI合规性,但如果您不熟悉必要的安全措施,则可以承担巨大责任。如果您的系统遭到违反或您被发现违规,您将面临严重罚款。

检查支付提供商,例如Authorize.net寻找替代解决方案。具体而言,他们的Customer Information Manager产品值得研究,因为他们会在您的服务器上存储安全数据,例如信用卡信息。

相关问题