我最近為一個新帳戶生成了一個密碼,前三個字符為“ aa1”。
在用盡所有其他攻擊之後,破解者將開始強行強制使用。假設他們從“ a”開始,我的密碼“ aa1”的破解速度將比“ ba1”快,而其破解速度將比“ za1”快。
此密碼時間很長,所以這個問題比理論上更實際。 (當然,除非限制密碼長度,否則...)我對暴力破解和密碼的假設正確嗎?
我最近為一個新帳戶生成了一個密碼,前三個字符為“ aa1”。
在用盡所有其他攻擊之後,破解者將開始強行強制使用。假設他們從“ a”開始,我的密碼“ aa1”的破解速度將比“ ba1”快,而其破解速度將比“ za1”快。
此密碼時間很長,所以這個問題比理論上更實際。 (當然,除非限制密碼長度,否則...)我對暴力破解和密碼的假設正確嗎?
這似乎取決於攻擊者對密碼的暴力破解程度。但是,我的看法是,最後無所謂。
一個嚴重的攻擊者永遠不會從字母數字順序(從 aaaaaaaa
到 99999999
,除非他們知道他們可以在合理的時間內做到這一點。如果那將花費他們一千年的時間,為什麼知道他們必然要停止在 cccccccc
上,他們為什麼要使用該方法?但是,如果攻擊者知道他們可以在合理的時間內嘗試所有可能性,那麼您的密碼是在第一個組合中還是在最後一個組合中都沒有關係,因為最終他們無論如何都會在合理的時間內找到它。 )。
大多數密碼仍然很弱(例如,您的狗的名字,也許還有您的出生日期等),並且攻擊者不喜歡浪費太多時間,更不用說花幾年時間來破解密碼了。因此,攻擊者通常使用的是詞典和模式。他們將首先嘗試使用密碼,例如: pass123
, 123pass
, john90
, john91
, John92
, JOHN93
, 123456
, l1nux4dm1n
等。如果每次使用字典和模式的嘗試都失敗了,它們可能會繼續前進並假定密碼看起來像真正隨機的。嘗試所有可能需要多長時間?如果可以在合理的時間內完成操作,則他們可以嘗試所有操作(例如,從 aaaaaaaa
到 99999999
)。否則,如果攻擊者認為他們將永遠無法嘗試所有密碼,則他們可能會嘗試通過一些隨機猜測(隨機字符串,未排序)暴力破解密碼: 12hrisn589sjlf
, 9f2jcvew85hdye
, otnwc739vhe82b
等。如果攻擊者很幸運,他們遲早會找到密碼。但是,如果密碼太強以至於要花很多年才能猜出來,他們最好放棄或考慮其他攻擊方式(網絡釣魚,肩膀衝浪,鍵盤記錄程序等)
熵確實是最大的問題,熵取決於密碼生成過程中的隨機性。
讓我們以18個字符的密碼為例。我們將僅查看字母數字字符(62個可能的字符)。這給出了:
log2(62 ** 18)= 107
熵位
如果您決定始終將前3個字符轉換為Z,很難破解,那麼您實際上已經從密碼中刪除了3個隨機字符,留下了:
log2(62 ** 15)= 89
熵
這大約要弱1,000,000倍。當然,仍然都不可能絕對和完全進行暴力破解,因此,如果有人嘗試暴力破解您的密碼,我不會擔心。
但是,值得強調的是,強行破解這樣的密碼是不可能的(以防萬一我的鏈接不能說服您)。 line MD5 hash rig的頂端可以每秒嘗試2000億次哈希。它的速度非常快(這就是為什麼不應將MD5用於密碼的原因)。甚至您較弱的密碼(當您用 z
替換前三個字符時)也有7.6e26可能的組合。以每秒2000億個哈希值計算,如果密碼用MD5散列,則僅僅需120年 MILLION 年即可嘗試所有密碼。我認為您無需擔心。
aa
因此,以“較高”字符開頭是否會使某人更難於強行使用密碼更好?也許吧,也許不是。如果攻擊者碰巧是從字母的開頭開始的,那麼可以肯定的是,您的攻擊者將“更快地”破解(儘管這輩子還不是)。但是,不能保證嘗試暴力的人會按照特定順序進行操作。結果,無法猜測以 aa
開頭的密碼是否更容易破解。同樣,如果您使用較長的隨機密碼,則該密碼被黑的可能性實際上為零。所以我不用擔心。當談到密碼時,長度為王。
我認為柯克霍夫原理在這裡非常適用。從某種意義上講,這是安全性的核心“特網”。 Kerchkhoff原理背後的思想是,系統的安全性應該基於一個(只有一個)秘密/密鑰。這個想法是,需要更多的“零件”來保持系統的安全,某些零件洩漏的可能性和發生安全漏洞的可能性就越大。當我們談論密碼時,很清楚“密鑰”是什麼:密碼。具體來說,是長而隨機的。如上所述,這實際上就是您所需要的。通過在隨機密碼之上添加其他“規則”,您實際上只是在提供潛在的提示,從而使以您為目標的攻擊者更容易猜測密碼。
在用盡所有其他攻擊之後,破解者將開始暴力破解。
說誰?
只有兩種情況會出現暴力破解實際上是一件事。一種是攻擊者擁有密碼哈希,另一種則是攻擊者擁有控制登錄信息的軟件的控制權,因為任何未完全破壞的軟件都不會首先使他遭受暴力破解。
最常見的情況是攻擊者確實擁有密碼數據庫。他將使用開膛手約翰之類的破解軟件。在以“ aa”開頭之前,他將測試過數百萬個可能的密碼。在大多數情況下,此時他已經破解了數千個帳戶,因為它們的密碼是“ password”或“ 12345678”。或者-為了滿足虛擬的“密碼強度”檢查器-“ Pass123!”。
他可能不會打擾他的餅乾進入實際的暴力步驟,因為他有更好的選擇他的時間。而且您實際上不知道暴力破解實際上是否會從aa開始,因為很有可能不會。
您的真實問題是,當您制定關於哪些密碼被視為“錯誤”密碼的規則時,實際上是減少搜索空間。事實證明,密碼策略是有害的。瞧,JtR的作者甚至在他的Wiki上有有關此內容的頁面。當然,說服您的CISO採用其愚蠢的密碼策略的$$$顧問永遠不會閱讀該頁面,甚至可能甚至不知道JtR仍然存在。 :-)
因此,“ aa1”的安全性沒有比“ zz9”的安全性低。首先,因為暴力是最後一種武器,而不是第一把武器,其次,因為不能保證暴力軟件實際上是從a而不是z開始的。如果要寫一個,我不會從a開始。例如,我將隨機化字母並使用它。正是因為我認為人們可能會避免使用“ aaaaaaaa”作為密碼。
許多其他答案都集中在為什麼以'a'開頭的密碼不會比其他任何開頭字母的安全性都低的原因,因為您假設攻擊者是順序執行密碼還是並行執行密碼,或者是因為假設它們從“ a”開始,而熟練的攻擊者可能沒有。由於這些論點,在熟練的攻擊中,沒有一個起始字母比另一個字母安全。
但是,我認為,對於一個天真的攻擊者,以“ a”開頭的密碼的安全性稍差一些,原因是事實是,由於缺乏技能和經驗,他們更有可能按順序從“ a”開始這樣做。
但是,實際上,就像其他答案所說的那樣,這沒有什麼區別,因為在實踐中,足夠長的隨機生成的密碼可能在合理的時間內無法被強行使用,而避免使用字母“ a”只會縮小搜索空間。
當您進行暴力攻擊時,以“ a”開頭的密碼可能會更弱。如果使用“ z”變得流行,那麼“ a”和“ z”將是正確的,這會使評估風險更加複雜。
讓我們假設我們知道一個字符,在其他字符之前已經嘗試過。然後,攻擊者只需測試搜索空間的 1/26
。解決方案是延長密碼。
攻擊者可能會以短密碼開頭進行暴力搜索*,因此,較長的用戶可能會得到更好的保護。即使他不這樣做,他也需要在獲得密碼之前測試更多的密碼。
字典攻擊或混合攻擊可能會在嘗試“ b”之前先嘗試“ a”,“ aa”,“ aaaaaaaa”雖然。這是攻擊者和您之間的頭腦遊戲,因此,選擇隨機密碼短語是最好的方法,並且拒絕可能出現在單詞列表中的密碼是合理的(但是,無論如何,隨機長密碼都不太可能出現在單詞列表中)。
*
測試所有1-8個char密碼只需要測試以“ a”開頭的所有9個char密碼的大約兩倍的時間,因此,如果有的話,從較短的字符開始比較合理密碼短的可能性。
許多現有答案已經表明,僅避免使用a並不會帶來什麼好處,並且應用'修復”,實際上會使情況變得更糟。
但是,從概念上講,忽略攻擊者的完全工作方式也是錯誤的。因此,我提出了這個解決方案指導,該指導方針在理論上應該是可行的(但在實踐中可能會有些困難):
如果您的威脅模型定義了攻擊者更有可能攻擊某種模式,最好減少這種模式的出現
示例:
在這種情況下,使'a'的可能性降低1%
如果您已經(並跟踪)對您的真正威脅,則應該能夠稍微降低您的密碼被破解了。不幸的是,您將需要一家大型公司隨時了解其狀態,並且每次威脅模型發生變化時都需要重新生成密碼。例如,由於攻擊者還了解到您正在糾正上週的模式。
簡而言之,請意識到您在概念上是正確的,但是正確實施只是不切實際的
嚴格來說,是的,如果破解歸結為暴力破解,則更有可能在以“ z”開頭的密碼之前檢查以“ a”開頭的密碼。
了解密碼熵的重要一件事是必須計算密碼。攻擊者可能會使用的模型來破解密碼,而不是wrt。您用來生成模型的模型。例如,如果您生成了一個完全隨機的字母數字密碼,並且得到了“ passwordpassword123”,則它具有與任何其他相同長度的隨機密碼相同的“生成”熵。高“生成”熵並不是一個好的密碼,因為假設典型的字典攻擊,它的“破解”熵非常低。
正是出於這個原因,我們確實聽說過丟棄隨機生成的密碼。丟棄雖然減少了可用密碼的數量(從而降低了密碼安全性),但避免了生成非常容易破解的密碼。
如果您想對此做些什麼,除了增加密碼長度之外,您所能做的就是拒絕以'a'開頭的密碼。現在,您刪除了可能的密碼的1/26,攻擊者可以更快地破解平均密碼26/25倍。
...現在,最弱的密碼以'b'開頭。我們是否將其刪除並將“ c”設為新的最弱的第一個字符?
其他答案很好地解釋了為什麼沒關係,我只想指出,通過避免使用某些密碼來解決此問題是荒謬的。
要在此處補充許多好的答案,值得注意的是,即使在攻擊者使用蠻力攻擊的情況下(鑑於所討論的所有更好的選擇,這種攻擊也很少見),好的工具也不會進行順序蠻力力。
例如,《開膛手約翰》中的蠻力模式(上面@Tom提到)稱為增量模式,儘管它確實覆蓋了整個鍵空間,它使用基於頻率的模型以比順序AZ攻擊更有效的順序覆蓋鍵空間。
我還記得,還有一個名為PasswordsPro的舊工具,它可以進行順序蠻力操作,但是在字符串的末尾而不是開頭(aaaa,aaab,aaac等)。