1

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

问题是计费者(以及我收集的许多人)使用我一遍又一遍地阅读的 MD5 加密密码是不安全的。但是,由于加密是在账单端处理的,而且他们只提供 MD5,我想知道我是否可以做些什么来使密码更安全?

在我写这篇文章的时候,我在想,“如果记账员正在加密密码,我可能无法增加更多的安全性”,因为记账员的部分工作是处理会员问题,例如丢失密码和其他问题。

那么......有没有办法为计费者存储在我们数据库中的密码增加更多安全性,还是我们只是利用我们都知道的不安全标准来冒险?我们在短期内被这个计费器困住了,更糟糕的是,我联系了另一个非常有名的计费器,他们也使用 MD5。

提前谢谢了!

4

2 回答 2

0

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

你最大的担忧是什么?您是否担心有人在您和计费者之间传输密码时截获密码,或者您是否担心有人打开数据库?

如果您担心有人闯入您的数据库并使用密码获取您的表,那么您绝对可以提高安全性。您可以使用现代算法和您自己的私钥对条目进行加密,然后再将它们持久化。在使用 md5 值之前,在拉出数据库时不要将密钥存储在服务器上并取消加密。

您也可以使用一些现代强哈希算法对他们给您的 md5 值(并使用盐)进行哈希处理。这意味着如果有人拿到你的表,他们将不得不取消哈希你的哈希,然后取消哈希 md5。大概您会使用强哈希,而第一步是不可能的。与往常一样,请注意安全性,因为您肯定应该自己编写一些东西,否则您会遇到错误!

于 2013-01-16T00:03:57.137 回答
0

不幸的是,在这个阶段,您对计费器无能为力。很难知道您正在尝试缓解哪些威胁。如果您担心计费器和您的机器之间的通信被监控,那么 SSL 或 SSH 应该会有所帮助。如果您担心攻击者会侵入您的数据库并窃取密码,那么使用不同的方案来存储密码会有所帮助。

您可以坚持使用 MD5 并添加盐。请检查您的账单是否正在对他们的密码进行盐渍化,如果不是,您真的需要摆脱它们。他们的数据库将容易受到彩虹表查找的影响。

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

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

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

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

于 2013-01-16T00:13:48.553 回答