我在研究一个认证系统。现在,在这个系统中,用户登录并向服务器发送散列密码。这足够了吗?还是我必须重新破解密码?
所以基本上这个密码是=>散列=>网络=>散列=>数据库
那么密码=>哈希=>网络=>数据库更安全吗?或者哈希已经散列的密码是浪费时间和空间?
还是应该是密码=>网络=>哈希=>数据库?
作为一种额外的好处,未来可能的扩展是让用户登录到远程服务器上,在远程服务器上必须保存和使用信用,以便将来与服务器进行交互,从而产生这样的结果?
密码=>网络=> database1= >网络=> database2
这是否意味着要有2到3次?
发布于 2015-08-11 08:41:24
在将密码发送到服务器之前,没有额外的安全性,因为现在这个散列将成为密码。更重要的是通过加密通道(SSL/TLS)发送密码,以防止密码以明文形式发送,并被网络上的其他人读取。
要存储密码,您应该散列+加盐,再次防止密码被存储在明文中。如果哈希是在客户端完成的,并且您存储了这个哈希,它仍然像以明文形式存储密码一样,因为这个散列现在是密码。
因此,在存储密码之前,请始终在服务器上散列(+salt)密码。
发布于 2015-08-11 08:43:05
这取决于攻击的类型。
如果攻击是中间人类型的,那么如果在到达服务器之前再次对其进行散列,那就没有意义了,因为第一个哈希已经在其途中泄漏了。
如果攻击发生在服务器端,那么最好保留password => hash => network => hash => database
,因为这会使野蛮的过程更加耗时。
如果攻击发生在客户端本身(例如,客户端机器上安装了一些键盘记录器),那么所有这些进程都将是浪费。
这些天,只有哈希密码是不可靠的。您应该查看salting
的过程,以使其更加可靠和安全。
https://security.stackexchange.com/questions/96521
复制相似问题