我有一个无线路由器,我想要一个复杂但又容易记住的密码。
我想到这个想法,采用 MD5、SHA-1、SHA-256 或任何常用英语单词(例如“超级用户”)的哈希值,并使用该哈希值作为 WPA2 密钥。
例如,假设我选择的词是“超级用户”。如果我选择 SHA-1 有我的哈希值,那么我会将我的 WPA2 密钥设置为8e67bb26b358e2ed20fe552ed6fb832f397a507d
。
这是一种安全的做法吗?密钥中虽然使用了常见的英语单词,但密钥本身实际上是一个长而复杂的十六进制字符串。
答案1
除非你透露生成“长 WPA2”密钥的方法(你刚刚这样做了),否则它只是一个复杂的十六进制字符串,通常非常安全。另一方面,如果有人知道你使用的是“一个常见的英语单词”并使用该单词的哈希值作为密钥,那么任何人都可以快速从字典中重新生成哈希序列并将其用作彩虹桌很快破解你的密码。
如果你正在寻找一个“既难又容易记住的密码”,为什么不设计一个更长的密码呢?短语对你来说有意义,但别人却不容易猜到。这将使广泛使用的彩虹表变得毫无用处。以一个短语(即单词序列、句子等)开头,混合一个有意义的数字序列给你(避免使用生日、电话号码等),并以此方式生成“容易记住”的长密钥。
答案2
只要你不告诉任何人,它就和任何其他密钥一样安全。
最终,您的密钥将使用 0-9、af...,这实际上只提供 16 个可能的字符,而不仅仅是 az(提供 26 个)。因此,如果您认为自己很聪明并告诉某人“我正在使用 SHA-1”,那么您实际上会将他们的暴力组合减少相当多。
就我个人而言,我认为最好只使用混合大小写的普通长单词,然后再添加一些随机数字和符号。
答案3
只要没有人能弄清楚该方法,它就是安全的。这当然包括在办公室里吹嘘它,也包括在你可能留下的任何痕迹。例如,如果你要将随机用户连接到你的网络,你可能会使用某种客户端应用程序来生成哈希值。如果随机用户随后注意到echo "superuser" | sha1sum
日志中有一个,那么将两者加在一起并不难。
由于您必须在外部生成哈希,因此许多便利性都消失了。一般来说,我认为散列常用词可能是快速生成半随机密钥的可接受方法,但输入时仍必须复制或记住密钥,以免造成弱点。
我能想到的唯一其他好处是,如果密钥/短语/密码丢失,可以轻松重现。如果采取上述安全措施,我认为没有理由不使用散列词作为密钥。
答案4
这是一个真实世界的例子通过隐蔽性实现安全。您认为自己是安全的,或者就您而言,您比那些没有经过这个过程而直接输入密码的用户更安全。
真正的问题是虚假的安全感,如果你使用弱密码,例如 12345678,使用 SHA1 结果作为 WPA2 密码,将导致几乎不可能破解 WPA2 哈希。因此,用户通常不会担心有人能够破解它,但是一旦有人知道你隐藏的秘密,你的哈希就会被轻易破解。如果你正确选择了一个强密码,你就不必担心,即使你的秘密被泄露,破解一个好的密码所花费的时间也比攻击者等待的时间要多得多。
这就引出了我们的疑问,通过隐蔽性实现的安全性真的那么糟糕吗?在我看来,是的,这只是因为虚假的安全感,就像自动化低质量渗透测试工具在扫描后没有显示任何漏洞时,或者当防病毒软件说可执行文件是干净时,所带来的安全感一样。