我的密码应该针对多少位熵?

信息安全 密码
2021-08-23 14:20:55

我主要使用 2 个密码:1 是一个 4 字的全小写密码,长度为 18 个字母,我尽可能使用它。另一个基本上是 3 个单词和一个数字,第一个单词全大写,只有 14 个数字长。每当第一个密码由于长度或字符集限制而无效时,我都会使用它。这些词相当普遍(流行电视节目中的前 5000 个词)。

我已经使用http://rumkin.com/tools/password/passchk.php计算了两个密码的熵。两个密码的熵大约相等,为 68 位,给或取半位。我主要将这些密码用于与游戏相关的事务(MMO 帐户、桌面客户端、论坛)。除了 2 个空的贝宝账户和只读的预付信用卡对帐单外,我不会将这些密码用于财务数据。

我不知道这些熵数有多有效,但从这些参数来看,这些密码对于它们的预期目的是否足够安全?用于不同目的的密码熵的一般准则是什么?

2个回答

密码仪表不好。好吧,这有点简单,所以让我更详细地说明一下:像您使用的“密码计”应用程序是无意识和通用的;它衡量的是破解密码的努力,使用密码计量器作者想到的盲目和通用的策略。特别是,该密码计系统不知道您的密码是通过组合从短列表中随机抽取的单词生成的。但是,意图破解您的密码的攻击者会知道这一点并适应:您只是在公共论坛上写的,所以它已成为公共信息。

正确熵计算不适用于实际密码值,而是适用于生成密码的过程我们只是假设攻击者知道这个过程,并且知道除了实际的随机选择之外的所有内容。使用 5000 列表中的 4 个单词,您会在一组 5000 4中以统一的选择概率(这是一个重要假设)获得一个密码,因此这里的熵是 49.15 位(因为 2 49.15大约等于 5000 4)。使用 3 个字,您将获得 36.86 位。有关熵计算的更多信息,请参阅此答案

(在基于 Web 的“密码计”中输入密码的智慧也值得怀疑。您链接到的那个声称它会在 Javascript 中进行所有计算,并且您的密码不会离开您的浏览器,但您是否真的检查过Javascript源来确保它?)

就密码而言,36.86 位的熵相当不错。普通用户选择的密码的熵远低于此。如果散列未正确完成(例如,一些带有几次 SHA-1 调用的自制构造),则获得相应散列的攻击者破解这样的密码,但即便如此,其他用户也有可能首先失败。


但是,您做错了什么。它就在那里,在你的第一句话中:

我主要使用 2 个密码:1 是一个 4 字的全小写密码,长度为 18 个字母,我尽可能使用它

重点是我的;它显示了问题。您正在重复使用密码。那很不好。您不得重复使用密码。当您在N个站点上使用相同的密码时,会将您在所有站点上的帐户安全性降低到N个中最差的级别此外,当该网站被黑客入侵并且您的密码被盗,并且您的密码出现在通过 P2P 网络交换的登录名+密码列表中时,您将不知道哪个网站做错了。许多网站仍然存储明文密码(这是一种犯罪行为),因此必须假定任何广泛重复使用的密码已经泄露。

如果您使用特定于站点的密码,那么任何损害都将包含在特定的罪魁祸首中。当然,这意味着您身边有一些存储系统,例如KeePass或低技术的“passwords.txt”文件(您必须注意存储和使用它的位置,但可以通过良好的物理安全性进行管理),甚至是您保存在钱包中的打印清单。在实践中,为了防止损坏而分离密码对您的安全性来说比密码熵更重要。

测量密码的熵通常很棘手。例如,如果您遵循NIST 指南来测量人工生成密码的熵,那么您的两个密码的熵将约为 33 位。

我会说即使是 33 位,这对于预期目的来说也是可以的,但是,你做错了一件事:你永远不应该重用密码。我知道在当前的数字世界中这很难实现,但有一些工具可以提供帮助(例如KeePass1password)。尽早采用其中一种工具,它将在未来为您节省开支。