在密码中添加字典单词会削弱密码吗?

信息安全 密码 真加密
2021-09-07 20:09:42

这听起来像是一个愚蠢的问题,但请听我说完。如果我通过 TrueCrypt 之类的程序加密我的财务信息和敏感数据,那么密码的强度将非常重要。

常见的建议是不要使用字典中的单词。我明白那个。但是,如果我在已经很强大的密码/密码短语之上使用常用词会发生什么?我的理论是它通过增加密码的长度来增加密码的复杂性。但我还记得一个 Windows 程序,它曾经通过在较大的密码中查找字典单词来破解 Windows 密码。所以我不确定在密码中添加常用词是在帮助还是有害。

密码 A : ,74{x4K79*ER2R[=}@PR

密码 B: ,74{x4K79*ER2R[=}@PRCorrectHorseBatteryStaple

两者哪个在理论上和现实世界中更强?

如果重要的话,假设我计划使用带有 Whirpool 散列的级联 AES-Twofish-Serpent 加密来加密我的数据。

先感谢您。

4个回答

用字典词制作密码是没有问题的;它是制作您可以实际记住的高熵密码的一种非常好的方法。我建议至少使用四个随机单词;我通常使用 6-10个 diceware来加密我的 ssh 密钥和加密的密码列表(如果在 ~7000 个单词字典中大约 80-128 位熵,或者在 ~100000 个单词字典中使用 100-166 位熵)。

如果您上面的密码实际上是从一组 80 个符号中随机生成的,并且长度为 21 个字符,那么它的熵约为 132 位。*

是的,众所周知,您不应该只使用一个字典单词(或两个或三个)而只进行少量修改(大写一两个字母;在末尾添加一个数字或随机字符),因为这会产生低熵密码。

您对密码的最大担忧是(a)密码重复使用(切勿与不同实体共享相同的密码),(b)密码被记录或强制退出(不要在可能被键盘记录的系统上使用密码),以及( c) 使用熵非常低的密码(例如,使用末尾带有一对数字的字典单词)。我建议使用密码管理系统,例如 keepassx,以加密形式在受信任的计算机之间共享,并为您使用的每个特定应用程序随机生成一个唯一的密码;并使用高熵密码加密该密码列表。

*题外话,这个特定的密码似乎不是随机生成的。我的猜测是在键盘上键入以生成它,因为数据中发生了两种非常不可能的模式:21 个字符中的 18 个(除了, Kx) 来自键盘的前两行(底部行的键应该出现了大约一半的时间),并且只有一个小写字母(应该出现了大约 1/3 的时间)。对于一个真正随机的密码,这些类型的罕见事件(或更糟;例如,零个小写字母;或从底部开始少于三个字符)应该分别仅发生 0.07% 的时间和 0.3% 的时间。当然,您必须稍微打折,因为有许多测试要应用(例如,只有键盘的左侧;等等)。如果攻击者可以利用它,生成非随机密码可能会显着降低熵。

第二个在理论上现实世界中都更强。长密码比短密码更安全,除非它全是字典单词。

fh438&^&*g8较弱,fh438&^&*g8AllSortsOfStuffAdded因为它们在更长的密码中有更多的可能性,因此猜测需要更长的时间。

如果只有字典单词,或者如果你用字典单词代替数字和符号,那么猜测会更容易。

向密码添加任何内容都不会使其变得更弱(除非系统足够愚蠢以截断密码——旧的 Unix 和 Windows 系统就是这样做的)。

密码的强度与“不可猜测”一样强,它以攻击者在击中“正确密码”之前必须尝试的次数来衡量。这被称为,熵加起来(因为它是一个对数刻度):如果你有一个熵为 20 位的密码(意思是:平均而言,攻击者会在半百万次尝试后找到它)和另一个熵为 25 位的密码(比另一个强 32 倍),那么两个密码的连接会产生一个具有 45 位熵的大密码。

当然,用另一个密码替换部分密码可能会削弱整个密码。但简单地附加,不,它不会。

添加字典单词确实使密码更强大,因为它增加了熵(随机性),但是如果您要创建一个该长度的随机密码,那么您也可以使用随机字符作为整个密码,因为这样更强大。