为什么一次性密码重置链接比一次性密码更安全?

信息安全 密码 电子邮件 一次性密码 重设密码
2021-09-01 12:09:49

最近我申请了一家公司的工作

适用于军事、航空航天、...的安全关键解决方案

在他们的网页上注册后,我收到一封电子邮件,其中包含我的用户名和明文一次性密码我的第一反应是惊恐于他们的无能,特别是考虑到安全应该是他们的核心竞争力,但再三考虑后,我意识到我是一个新用户,还没有什么危险。但后来我看到他们的密码重置功能实际上发送了一个明文一次性密码

这让我想到,以明文形式发送一次性密码真的有那么糟糕吗?尤其是当声称以安全为生的人这样做时?

我正在阅读这个高度赞成的答案,说您永远不应该通过电子邮件发送任何密码。相反,如果您的用户忘记了密码,您应该向他们发送一次性密码重置链接

但是一次性密码和一次性链接之间的根本区别是什么?

到目前为止,我找不到任何东西。我得到的最接近的两条线索是:

  1. 高度赞成的答案提到:

    通过 SSL 完成所有这些操作。

    也就是说,通过 SSL 发送一次性链接。我完全不明白这一点。您如何通过 SSL 向某人发送一次性重置链接(可能在电子邮件中)?

  2. 安德斯这个问题下有一条评论提到链接会过期,但一次性密码不会。但同样,我不买这个。如果您愿意,密码确实会过期。

此外,如果用户的用户名与他的电子邮件地址不同,那么一次性密码实际上比密码重置链接更安全。任何人都可以拦截链接、登录和窃取数据,但如果只有用户知道用户名,那么只有他可以使用一次性密码。

您知道处理信息安全的人们在听到同一句话中的密码明文两个词时的反应,对吧?如果一次性密码重置链接只是一次性用户名+密码,那么这种做法更应该被看不起,对吗?

总而言之:通过电子邮件以明文形式发送一次性密码是否意味着绝对无能?

3个回答

这可能很好 - 毕竟密码重置电子邮件包含一个“一次性密码”,尽管它实际上是一个秘密密钥并且基于一个长的伪随机序列,这对于暴力破解是不可行的。

此外,这也可能意味着存在针对合法用户的拒绝服务攻击:

  1. 攻击者访问网站,知道 Bob@example.com 是用户(例如通过用户名枚举漏洞)。
  2. 攻击者按下以重置 Bob 的密码。
  3. 新的临时安全密码发送到 Bob@exmaple.com
  4. Bob 目前无法访问他的电子邮件,现在无法登录系统。

密码重置链接没有此缺陷,但对相关系统而言可能很小。

如果发布了临时密码,明智的做法是生成一个具有至少 80 位熵的密码(当前 NIST 建议),并强制用户在登录时立即更改它,即使他们“强制浏览”到任何其他 URL您网站的经过身份验证的部分。即它应该将他们重定向回更改密码屏幕,直到他们这样做,它还应该确保他们选择不同的密码。

您现在遇到的另一个问题是,如果用户不立即使用临时密码。您的用户邮箱中有一个明文密码,这不是存储密码的最佳位置。您可能不得不以某种方式使此密码过期,从而导致您的应用程序更加复杂。拥有单独的密码重置链接可以简化事情,因为它只是链接本身过期的实例,而不是它们的主密码。

简而言之,拥有一个单独的密码重置机制会更容易和更安全,这种机制在用户确认他们实际上可以访问与帐户关联的邮箱之前不会触及用户的密码。

一次性密码和重置链接可以以它们在功能上等效的方式实现。但在实践中,一次性密码可能稍微安全一些。

考虑以下重置链接:

https://www.example.com/reset/a93f51cd-ae20-46f8-9575-3d9bfa088e5e

与一次性密码相比:

a93f51cd-ae20-46f8-9575-3d9bfa088e5e

重置链接的典型工作流程是:

  1. 点击链接。
  2. 您会看到一个屏幕来更改您的密码。
  3. 输入新密码,确认,保存。

一次性密码的典型工作流程是:

  1. 进入登录页面。
  2. 输入您的用户名和一次性密码。
  3. (在幕后,您的一次性密码现已失效。)您会看到一个屏幕来更改您的密码。
  4. 输入新密码,确认,保存。

正如您所指出的,一次性密码稍微更安全的原因是,使用一次性密码您仍然需要知道您的用户名,而通常重置链接不需要您输入用户名。此外,一旦您输入了一次性密码,它可能会立即失效并且无法再使用,而只要您不提交新密码,通常可以多次单击重置链接改变。

为了使它们功能相同,单击重置链接后,您必须立即使链接失效,并要求用户输入他们的用户名和新密码。请注意,在第一次单击后立即使重置链接失效的一个潜在缺点是,某些电子邮件和防病毒程序会跟踪链接以检查恶意内容,这可能会在您有机会单击它之前使链接失效。

我不知道为什么@Polynomial 提出了他的建议,但这是我对您的困惑的看法。

以明文形式发送一次性密码真的有那么糟糕吗?

我不相信。对于恶意用户滥用此功能,他们需要访问您的邮箱或您所说的用户名。尽管用户名可能并不总是适用。如果您收到密码重置链接,即使在这种情况下,攻击者也必须有权访问您的邮件。
我认为密码重置链接胜过一次性密码的领域是,当您实施一次性密码时,您需要执行以下操作:

  • 确保用户登录时立即更改密码。如果用户和恶意用户在密码重置之前同时进入网站怎么办?
  • 使用一次性密码限制/限制在密码重置时可以发出的无效请求的数量。如果攻击者尝试对密码重置功能进行暴力/字典攻击怎么办?如果您有一次性密码重置链接,则不必担心它们。

通过电子邮件以明文形式发送密码是否意味着绝对无能?

不。这只是一种不同的哲学。