我只是在考虑密码,交错几个单词的字母是创建强密码的好方法吗? IE
word1 = "quick"
word2 = "brown"
word3 = "vixen"
所以
password = "qbvuriioxcwnknn"
看起来它对于字典攻击和暴力破解的抵抗能力很强。有没有一种方法是这个方法的弱点?
这绝对是信息安全堆栈交换的问题(正如 Thriggle 在评论中指出的那样),但无论如何,我都会提出一些想法。
如果你交错单词的字母,你会面临一些优点和缺点:
由于我发现密码中字母的概率是该系统最有趣的负面影响,因此我将进一步深入探讨这一点。
如果我知道您的密码使用三个相互交错的 5 个字母单词,那么我会从一本包含英语中所有 5 个字母单词的字典开始,并以以下之一开头的单词开头:
t o a w b c d s f m r h i y e g l n p u j k
(英语单词中最常见的第一个字母)从该子列表中,我会选择以:e t d s
(英语单词中最常见的最后一个字母)结尾的单词,然后组合和交错。毕竟,对于每组 3 个单词,只有 6 种可能的选项排列。
在最坏的情况下,我发现你使用了
zymes
,zamia
,zooid
。然而,即使您确实使用了最后一个可能的单词组合,与使用 15 个随机 Base64 字符相比,我仍然会在相对较短的时间内找到您的密码,因为 5 个字母的英语单词的组合只有 323,727,260,476(3237 亿)个( 使用相当完整的 12,478 个 5 字母英语单词列表)。另一方面,如果您只使用 15 个随机 Base64 字符,则会有 1.2 十亿种可能的组合 (1.2x10^28
)。
现在,所有这些都是假设的,我知道您正在使用三个 5 个字母的英语单词。如果我什么都不知道,并且仍然尝试字典后跟 15 个 base64 字符的组合,那么密码就完全没问题,因为我永远无法暴力破解它。然而,这里的关键弱点是,如果我知道你的密码模式,那么就会立即失去大量的安全性,因为该模式并不太复杂。所以这个密码方案是一个通过隐匿性实现安全的案例。 (这通常是不鼓励的。)