我正在阅读关于密码安全的Ars article,并且它提到有些网站“在传输之前对密码进行哈希处理”?
现在,假设这不使用SSL连接(HTTPS),a。这实际上是安全的吗?如果你在一个安全的庄园里怎么做?
编辑1 :(基于前几个答案的一些想法)
℃。如果您在传输之前对密码进行哈希处理,那么如果您只在用户凭据数据库中存储密码的盐渍哈希版本,那么如何使用密码?
d。只是要检查,如果您使用的是HTTPS安全连接,那么这是否必要?
答案 0 :(得分:5)
只有在服务器发送不可重用的盐时(当然,如果您使用安全散列),这才是安全的。
否则,攻击者可以简单地嗅探用户哈希,然后重放哈希以用户身份登录。
请注意,登录很容易受到中间人攻击。
答案 1 :(得分:1)
我不会称之为安全,但总比没有好。如果您让服务器在每次用户登录时选择哈希盐,那么将防止重放。但是,在登录时,没有任何东西可以保护用户免受中间人攻击。
当用户登录时,您必须将生成的盐存储在服务器上。如果这是一个问题,您可以使用另一个(固定)盐哈希值,将结果用作校验和并添加两者将您的登录表单作为隐藏字段。
周围有一些JavaScript SHA-1 implementations应该可以解决问题。如果可以帮助,请不要使用MD5。
答案 2 :(得分:1)
您可以使用salted数据库哈希生成用于对称加密的密钥来保护此方案免受中间人攻击。
它会像这样工作:
此方案根据用户密码创建随机会话密钥 K 如果不知道用户的密码(或 H D ,必须保密),中间的人将无法派生 K ,因此无法冒充服务器。