【问题标题】:How to securely suggest passwords that are easy to remember?如何安全地建议易于记忆的密码?
【发布时间】:2013-10-24 16:56:03
【问题描述】:

我想为正在注册或更改密码的用户推荐自动生成的密码。如何解决这个问题?

首先,提供生成密码的原因是为了防止用户使用弱密码(例如monkey)。我可以(并且仍然会)对密码实施某些限制:它们必须同时包含小写和大写字母、数字和标点符号,并且必须足够长。执行这些规则仍然会导致糟糕的模式,例如简单地将所需字符附加到原始弱密码(例如Monkey3!)。还存在其他常见模式(例如m0nk3y)。

完全随机的密码(例如I1ZkFdt5OOX35RpB13v}lo90m%~zrY)很难记住。它们通常最终写在一张纸上。如果可以选择,用户在遇到这样的怪物时会回到自己的弱密码。

但是,简单的密码可以很强大,只要足够长 (yes, relevant xkcd)。我想生成这样的密码,以便在仍然强大的同时易于记忆:

MooseCoolSuggestionDude
RegisterAmericaFoolDinner

假设我有一个存储在某处的单词列表,该存储可能会受到损害。获得该列表的任何人都可以生成我提供给用户以用作密码的所有可能组合。所以这是一个潜在的安全风险。

我考虑了一些额外的随机化。如果我在生成的密码中添加随机数和标点符号,例如

Moose5CoolSuggestion-Dude
Register.America31FoolDinner

这是否可以作为一种安全的方式来提供令人难忘的自动生成密码?还有其他想法吗?

【问题讨论】:

标签: security passwords generator


【解决方案1】:

这只是一个想法,您可以在它之上构建(在 PHP 中):

<?php

function newRandPass() {
    $wordList = array('Moose','Cool','Suggestion',
                      'Dude','Register','America',
                      'Fool','Dinner','Hello');
    $passWords = array();
    for ($i = 0; $i < 3; $i++) {
        $passWords[] = $wordList[mt_rand(0, sizeof($wordList))];
    }
    return implode(mt_rand(1,999), $passWords);
}

echo newRandPass();

?>

输出:

Dinner455Hello455Moose
Suggestion495Register495Hello
Fool590Dude590Cool
Dude956Register956Hello

【讨论】:

  • 使用mt_rand 是不安全的。
【解决方案2】:

在我看来,这是一条死胡同,除非您正在创建一个专门用于生成密码的网站。简而言之,这与其说是发展问题,不如说是个人问题。

从安全的角度来看,我不喜欢这样,因为你有我密码的明文版本。我不在乎你要散列它,我只知道如果我选择一个,你有一个明文版本,你可以选择不散列它。我知道这确实总是一个问题,但这会让我感到更加不安。我不知道你为我选择的这个密码有多“随机”。也许每个人都得到相同的清单?如果我的帐户被锁定,我唯一希望我用来生成密码的网站可能是临时密码。

此外,为了让您与我共享此密码,您必须在我的屏幕上显示文本,从用户体验的角度来看,这可能是一件好事,也可能不是一件好事。如果您决定这样做,请注意我可能不希望公开显示我的密码,并且一些用户可能会在不知不觉中将他们的密码暴露给旁观者。默认隐藏。

我会选择涉及以下一些内容的解决方案:

  • 不要向用户提出对密码的疯狂要求。它不能生成很好的密码,而且从用户的角度来看是令人沮丧的。

  • 显示一些好的示例密码(只是不要让他们使用示例密码)

  • 设置multi-factor authentication

  • 以某种方式(参见下面的第一个 UX 链接)表明他们的密码有多强。

相关链接

【讨论】:

    【解决方案3】:

    为了补充@Gray 的出色答案,我坚信网站密码应该很难记住:http://www.troyhunt.com/2011/03/only-secure-password-is-one-you-cant.html

    【讨论】:

      【解决方案4】:

      我是https://passwordcreator.org/ 的作者,它具有您正在寻找的功能。除了带有多个单词的 XKCD 风格密码外,该网站还生成“假单词”和传统的随机数字和字母字符串。

      您可以在您的网站上嵌入iframe,以便在您的帐户创建页面上为您的用户提供密码建议。这是一个屏幕截图:

      这样做的代码是:

      <h3>Suggested Passwords:</h3>
      <iframe src="//passwordcreator.org/suggest.html#securitylevel=good"
      style="width:355px;height:193px;"></iframe>
      

      iframe 可以调整为小至 100x100 像素。在较小的宽度下,它只会生成由随机数字和字母组成的较短密码。当它更高时,它会显示更多密码。有五种密码强度级别可供选择:“差”、“低于标准”、“好”、“好”、“惊人”。

      密码是由 JavaScript 使用现代浏览器的安全随机数生成器功能生成的。密码永远不会通过网络传播,也不会被生成密码的用户客户端计算机以外的任何计算机看到。该站点支持 HTTPS 以提高安全性。

      【讨论】:

        猜你喜欢
        • 2010-12-06
        • 1970-01-01
        • 2010-11-18
        • 2011-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-02
        • 2018-05-13
        相关资源
        最近更新 更多