要去解釋如何選擇一個好的密碼,最好方式是去解釋如何破解它。通常的破解方式被認為是離線密碼猜測破解。在這個方案中,攻擊者從一些需要驗證的地方拿到加密的密碼檔案。他的目的是解密這個加密的密碼用來給自己驗證。他通過密碼測試驗證它們是否正確。電腦可以很快處理它們,而且可以同時破解解攻擊,如果密碼正確會立即得到確認。是的,有一種方式可以阻止這個攻擊,這也是為什麼ATM卡有4位PIN碼的原因。但是上面所說的方法仍然是正確的密碼破解方案。
有一些商業程式可以做密碼破解,主要是賣給警察局。還有一些黑客工具做同樣的事情。這些非常好用。
破解密碼的效率主要依賴兩個獨立的因素:能力和效率。
能力是簡單的計算機能力。計算機已經變得很快,它們每秒能測試很多密碼。一個程式宣稱每秒可以測試800萬個密碼。那些黑客可能連日在多臺機器上同時執行程式。在一個知名的案件中,他們的破解程式執行了幾個月。
效率是有能力去猜測密碼,而且有智慧。它不是按順序去執行8個字元的組合,例如:從”aaaaaaaa”到”zzzzzzzz”。這可能有2000億種可能,這其中大量的是沒希望的。聰明的密碼破解者會先嚐試常用密碼。
一個典型的密碼包含一個詞根,加上附加的東西。這個詞根不一定是字典裡的詞,但是它通常是能發音的東西。一個附加物通常是一個後輟(90%可能性)或前輟(10%可能性)。我見過一個破解程式從字典中的大約1000個通用密碼開始破解,例如”letmein”, “temp”, “123456”等如此這些字元。然後試著給它們加上100個通用的符加物:”1″, “4u”, “69”, “abc”, “!” 等等相似的字元。它破解了四分之一的密碼,儘管這些字元只有100000個組合。
黑客使用不同的字典:英語單詞,名字,外來詞,語音等等一類的東西來做為詞根;兩個數字,日期,單個符號和這一類的東西做為附加物。它們動行的字典能做多種複雜替換:”$” 替換成 “s”, “@” 替換成 “a”, “1” 替換成 “l” 和類似的。 這個密碼破解策略快速的破解了約三分之二的密碼。
現代密碼破解者從它們的字典中聯合不同的單片語成密碼。
這些字典包含一些能被記住的單詞,例如:”k1araj0hns0n,” “Sh1a-labe0uf,” “Apr!l221973,” “Qbesancon321,” “DG091101%,” “@Yourmom69,” “ilovetofunot,” “windermere2313,” “tmdmmj17,” 和 “BandGeek2014.”,同時也包含”all of the lights” (是的,很多站點允許空格。), “i hate hackers,” “allineedislove,” “ilovemySister31,” “iloveyousomuch,” “Philippians4:13,” “Philippians4:6-7,” and “qeadzcwrsfxv1331.” “gonefishing1125″。
這是為什麼經常引用XKCD scheme去生成密碼——字串給合單個單詞不是好的建議,比如“correcthorsebatterystaple”。密碼破解者知道這個花招。
攻擊者會提供他知道的任何密碼建立者的人個資訊給密碼破解者。一個好的密碼破解者將從地址簿中測試名字和地址,也會測試任何有意義的日期,和其它他知道的個人資訊。郵編通常是附加物。如果可以,猜解者會索引目標的硬碟並生成一個字典包含任何可見字元,包括刪除的檔案。如果你曾經儲存E-mail和密碼,這個處理會提取它。並且你的密碼會很快被破解。
去年,Ars Technica給三個專家16000條加密的檔案,讓他們儘可能多的去破解。贏的人破解了90%,最後一名破解了62%——這是幾小內完成的。2012年,2007年或更早,同樣的事情在發生。如果有任何新的新聞,肯定是比賽的獲勝者比人們想像的更容易更快的完成了破解。
幾乎能被記住的任何東西,都可以被破解。
還有一種有用的組合方式。回到2008年,我描述它為“施奈爾組合”:
如果你想讓你的密碼很難被破解,你應該選擇一些被破解方案漏掉的組合方式。我的建議是把一個句子轉換成密碼,比如“This little piggy went to market”可以變成”tlpWENT2m”。破解者的字典中應該是不會有9個字元的密碼。當然,請不要用我這個密碼,因為我已經公佈它了。請選擇你自己的句子——個人的。
這是一些例子:
WIw7,mstmsritt… = When I was seven, my sister threw my stuffed rabbit in the toilet.
Wow…doestcst = Wow, does that couch smell terrible.
Ltime@go-inag~faaa! = Long time ago in a galaxy not far away at all.
uTVM,TPw55:utvm,tpwstillsecure = Until this very moment, these passwords were still secure.
通過這個想法,你是否有一些啟示?把自己能記住的句子加上一些個人技巧組合成一個長的密碼。當然,這個站點已經能用非希臘字元和任意長度的密碼。
實際上比較好的方案是使用隨機密碼,它包含字母數字(如果站點支援可以帶有特殊符號),並且使用一個密碼管理工具去建立和儲存它,比如:Password Safe。這個工具包含了一個隨機的密碼生成功能。設定你的密碼長度(我的預設值是12位),它會生成一個密碼,例如:y.)v_|.7)7Bl, B3h4_[%}kgv) 和 QG6,FN4nFAm_。 這個程式支援減切和貼貼,所以你不用手工輸入它們。
選擇一個好密碼的注意事項:
1 不要重用你的密碼。儘管你選擇了一個安全的密碼,一些站點仍然會洩露它,因為一些站點並不專業。你給某人一個站點或應用的密碼,讓他去使用這個站點的應用,但他也能把這個密碼用在其它站點。
2 不要厭煩密碼定期更新。如果站點要求90天更新一次密碼,這是利大於弊的。除非你認為你的密碼可能被盜用了,不需要更改它。
3 謹慎填寫”安全問題”。
4 多一個建議:如果網站提供兩種驗證方式,請認真考慮使用它。這是非常有必要的安全提升。