坚持使用MD5,有没有办法让它更安全?

时间:2013-01-15 23:53:08

标签: encryption passwords md5

我正在使用的网站现在使用第三方计费公司来处理用户注册,因此所有用户名和密码都输入到账单的网站中,然后记账者写下用户名,用户现在加密密码到我们服务器上的“成员”数据库。

问题在于,biller(以及我收集的许多人)使用MD5对密码进行加密,我已经反复阅读这些密码并不安全。但是,由于加密是在账单结束时处理的,并且他们只提供MD5,我想知道我能做些什么才能使密码更安全?

正如我写的那样,我在想,'如果记账员正在加密密码,那么我可能无法增加更多的安全性'因为招聘人员的一部分工作就是处理成员问题,例如丢失密码和其他问题。

那么......有没有办法为记账员在我们的数据库中存储的密码增加更多的安全性,或者我们只是抓住机会,我们都知道这是一个不安全的标准?我们在短期内坚持这个记账,更糟糕的是,我联系了另一位知名人士,他们也使用MD5。

非常感谢提前!

2 个答案:

答案 0 :(得分:0)

Md5在技术上是一种哈希算法,而不是加密算法。不同之处在于你无法解开一个散列字符串(理论上,md5很弱,因为这被证明是错误的)。如果您有适当的密钥,则可以撤消加密。

你最关心的是什么?您是否担心有人在您和您之间旅行时拦截密码,或者您是否担心有人打开数据库?

如果您担心有人闯入您的数据库并使用密码获取您的表,那么您肯定可以提高安全性。您可以使用具有自己私钥的现代算法对条目进行加密,然后对条目进行加密。在使用md5值之前拔出数据库时,不要将密钥与服务器一起存储并且不加密。

您也可以使用一些现代强散列算法来散列他们给你的md5值(并使用salt)。这意味着如果有人拿到你的表,他们将不得不取消哈希,然后取消md5。大概你会使用强哈希,第一步是不可能的。一如既往,要小心安全,因为你当然应该自己写一些东西,你会有错误!

答案 1 :(得分:0)

不幸的是,在这个阶段你可以做很多事情。很难知道您正试图减轻哪些威胁。如果您担心账单和您的机器之间的通信受到监控,那么SSL或SSH应该对此有所帮助。如果您担心攻击者侵入您的数据库并窃取密码,那么使用不同的方案存储密码将有所帮助。

您可以坚持使用MD5并添加盐。请检查你的账单是否正在腌制他们的密码,如果他们不是你真的需要摆脱它们。他们的数据库很容易被rainbow table查找。

  

彩虹表是用于反转加密散列函数的预先计算表,通常用于破解密码哈希值

您可以使用您收到的MD5并使用更好的密码哈希算法(假设您不需要保留原始MD5)。一个例子是bcrypt。请注意,SHA1,SHA-256等虽然更好的散列算法在密码散列方面不是很好。原因是SHA​​设计得很快。您希望密码散列相对较慢。对于合法用户来说,等待20毫秒进行正确的密码验证是没有时间的,但对于攻击者而言,彻底会降低他们强制密码的能力。

  

bcrypt是由Niels Provos和DavidMazières设计的密码的密钥派生函数,基于Blowfish密码,并于1999年在USENIX上发布。[1]除了结合使用盐来防止彩虹表攻击之外,bcrypt还是一种自适应功能:随着时间的推移,可以增加迭代次数以使其更慢,因此即使计算能力提高,它仍然可以抵抗暴力搜索攻击。

本质上,bcrypt有一个很好的散列算法,需要一个salt并允许你指定散列算法在其上运行的次数。例如,你可以开始100轮。在计算能力增加的两年时间内,您可以将其增加到150。