【问题标题】:Why isn't this a huge flaw in encryption? [closed]为什么这不是加密中的一个巨大缺陷? [关闭]
【发布时间】:2013-09-09 22:26:22
【问题描述】:

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

这是我的问题:

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

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

【问题讨论】:

  • 这就是我们有 https 的原因。
  • 真的...阅读 SSL / TLS。
  • 关于salt
  • 这个问题似乎跑题了,因为它是关于安全网络协议的

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


【解决方案1】:

你需要阅读

  • HTTPS/SSL
  • 密码散列

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

密码以纯文本形式发送

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

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

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

请注意,这取决于公钥基础设施,即受信任的证书链。如果有人可以伪造 SSL 证书(或让您接受自签名证书),您无法确定与谁交谈。然后,中间人是可能的。

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

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

然而,发送加密密码是没有用的。密码检查通过发送“原始”密码(通过加密连接),然后将其与存储在数据库中的哈希值进行比较。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2015-02-18
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多