關于密碼規則的分析和一些建議
經過20年的努力,我們已經把所有人成功馴化成:
使用人類難以記憶而電腦容易猜到的密碼。
我們當然可以對“correct horse battery staple”這樣的密碼策略是否有效提出質疑,不過,這里的點主要還是說跟密碼長度有關系。
講真,密碼長度確實重要!我竟然在一篇博文里爆粗說道,如今這個時代,鑒于云計算的發展水平和基于GPU的哈希運算能力,任何不超過8個字符的密碼跟不設密碼真的差別不大,非常危險!
那么,我們或許有了一個規則,那就是:密碼不能太短。長密碼比短密碼可能會安全得多。是這樣嗎?
下面這個4字符的密碼怎么樣?
下面這個8字符的密碼又怎么樣?
或者,這種7個字符的密碼呢——阿拉伯文、中文、泰文、韓文、克林貢文、Wingdings字體、表情符各取一個字符?
如果你把上面那4個Unicode的表情符,粘貼到你最常用的登錄框里——現在就去試一試——你可能會被驚到!你會發現,其實不止4個字符哦……
親,我們的老朋友Unicode又來搗蛋了!瞧瞧這個:
事實證明,即使像“密碼必須要有合理的長度”這樣的簡單規則,也未必就這么簡單。尤其是,如果我們不像腦子里只有ASCII字符的老美那樣思考問題。
話說回來,那些看起來不錯的長密碼呢?它們就一定安全嗎?
aaaaaaaaaaaaaaaaaaa0123456789012345689passwordpasswordusernamepassword
當然不是!你最近接觸過用戶嗎?
? ? ? ? 他們孜孜不倦地摧殘著我開發的軟件,簡直無孔不入。是的,沒錯,我知道你們極客非常清楚“熵”的概念(注:熵的本質是一個系統“內在的混亂程度”)。但是,在一個Unicode和表情符的世界里,把你們對熵的熱愛表達成下述稀奇古怪、糟糕透頂的密碼規則,真是憑空想象出來的一個巨大錯誤!
必須包含大寫字母
必須包含小寫字母
必須包含一個數字
必須包含一個特殊字符
在我們開發Discourse.org的時候,我發現,登錄框是非常復雜的一塊代碼,盡管它的界面看起來很簡單。我們采用的主要密碼規則也是最簡單的,就只有長度要求。從最初的開發到現在,我們已經把密碼的最小長度要求從8字符提升到10字符。如果你有幸成為管理員或版主,我們還決定密碼長度最少必須15個字符。
我同時也主張,拿用戶的密碼跟10萬個最常用的密碼進行比對。如果你看一看2016年被曝光的1000萬個密碼,你會發現用得最多的前25個密碼是:
123456123456789qwerty1234567811111112345678901234567password123123987654321qwertyuiopmynoob12332166666618atcskd2w77777771q2w3e4r6543215555553rjs1la7qegoogle1q2w3e4r5t123qwezxcvbnm1q2w3e
縱然這份數據泄漏了一些ASCII中心主義。我想,數字在任何文化里都是相同的,但我難以相信普通的中國人會選擇“password”、“qwertyuiop”或“mynoob”作為密碼。因此,上面這份清單必然還會因地區而異。
(一個有趣的想法是,在長密碼里去檢索匹配常用的較短密碼,不過,我覺得這會產生太多的誤報。)
如果你再次檢視這份數據,不難得出一個支持密碼長度的結論。請注意,在最常用的25個密碼中,只有5個超過10字符。因此,如果我們要求密碼長度至少是10,就已經把上黑榜的幾率降低了80%。我最早是在為Discourse.org做調研時意識到這一點的,那時我收集了數百萬個泄漏出來的密碼,然后把這份清單過濾到只剩下滿足我們新的最低要求(10個字符或更長)的那些密碼,真的是寥寥無幾了!
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%