1
  1. 我想要一个安全的登录过程,其中登录数据被加密。
  2. 防止登录表单的重放攻击。
  3. 同时,我希望密码被加密,没有人可以解密它们。

1.我可以对表单数据进行MD5。

对于 2. 我可以生成一个随机数并将其与客户端密码一起散列。

对于 3. 我可以使用存储在 DB 中的 salt 并在 DB 中仅保存 MD5(password|salt)

现在问题来了,对于 1 和 2,我将发送 MD5(password|nonce) 到服务器,但我无法授权它,因为我没有用于检查的原始密码。

我可以同时归档 1,2,3 吗?

4

2 回答 2

2

对于 1. 和 2. 使用 HTTPS (SSL)。它可以防止主动和被动攻击,重放,保持密码机密。

对于 3,使用专门的密码哈希和每个用户的盐。标准选择是 scrypt、bcrypt 和 PBKDF2。对细节做一些研究,我们在这里和安全方面有很多相关的问题。东南。

于 2012-12-07T13:38:30.183 回答
-2

对于传输安全,请使用 SSL/TLS。对于重放保护,请使用 CSRF 令牌。对于安全密码存储,使用类似这样的键控哈希。

编辑:提出的方案并非不安全,您可以在 security.se 的这篇文章中了解更多关于这个想法的信息

于 2012-12-07T11:39:10.973 回答