为什么这不是加密的一个巨大缺陷?

时间:2013-09-05 23:00:55

标签: security web-applications encryption passwords password-encryption

我根本不了解加密;在过去,我只是信任它,但如果我正在编写一个将上线的网络应用程序,我想我应该尝试更好地理解它。

这是我的问题:

假设我被要求输入我的密码以登录任何网站。然后必须将密码或其某些功能发送到服务器,以便服务器可以将其与存储在那里的加密密码进行比较。

密码是以纯文本形式发送的,在这种情况下(我认为)它是不安全的,因为有人可以拦截和读取它(这是一件坏事),或者它是以加密格式发送的,在这种情况下有人可以拦截它,即使他们无法读取密码,他们也可以通过将加密的字符串发送到网站来伪装成你,而这不会更好。同样,如果黑客获得数据库的副本,他只能发送加密密码并获得权限。这也是一件坏事。

1 个答案:

答案 0 :(得分:4)

您需要阅读

  • HTTPS / SSL
  • 密码哈希

您提到的问题已被考虑并得到解决。

  

密码以纯文本格式发送

不是。它通过HTTPS发送,意味着加密。

  

或者它以加密格式发送,在这种情况下有人可以拦截它,即使他们无法读取密码,他们也可以通过将加密的字符串发送到网站来伪装成你。

没有。 HTTPS会话不能像这样被劫持。双方之间正在协商共享密钥,您不能只是拦截和重放。服务器发出的挑战是中间人无法令人信服地回复。

请注意,这取决于公钥基础结构,这意味着可信证书链。如果有人可以伪造SSL证书(或让你接受自签名证书),你就不能确定你在和谁说话。然后,中间人是可能的。

  

同样,如果黑客获得了数据库的副本,他就能够发送加密密码并获得权限。

是的,如果黑客获得了数据库的副本,那就是一个问题。

发送加密密码却毫无用处。密码检查通过发送“原始”密码(通过加密连接),然后将其与存储在数据库中的哈希进行比较来工作。

如果他拿到数据库,黑客会做什么就是尝试在本地暴力破解(猜测)密码,如果他很幸运,他就可以以用户身份登录。幸运的是,如果密码很长且随机,并且它们已经适当地进行了散列和腌制,这个过程仍然需要很长时间。不再足够长,完全不会破解,但仍然足够长,你可以更改密码。