1. 程式人生 > >為什麼我們需要複雜的密碼

為什麼我們需要複雜的密碼


    前兩天我開啟郵箱一看,收到公司1331一封要求修改郵箱密碼的郵件。為什麼我們需要一個複雜的密碼呢?雖然我一直以來設定的密碼都很複雜,但是公司這次要求修改密碼的郵件激發起我的好奇心,我想試試究竟什麼樣的密碼才算安全?

    常見密碼破解方式有兩種,一種是字典式破解,一種是暴力破解。以前電腦處理器速度較慢,記憶體也很小,因此為了加快破解速度,黑客常用字典式破解。所謂字典式破解就是首先將常用的密碼、英文單詞、中文拼音等儲存在一個文字檔案裡,然後採用程式挨個測試,一旦通過則停止。常見的密碼有admin、1234、pass1234、password、888888、518518等等。例如有人將銀行卡密碼設為“888888”或者“999999”等所謂吉祥的數字組合,如果有人盜了你的銀行卡,去ATM機測試幾次,很快就能將您銀行卡里的金額全部轉走。另外一種是暴力破解。當字典式破解不成功後,黑客就會採用暴力破解。所謂暴力破解就是將數字、字母等各種進行窮舉,挨個測試。與字典式破解不同的是,暴力破解的資料量通常相當大。以8位純數字密碼為例,暴力破解的資料量達到108

0,即一億組密碼,而包含數字和字母組合的,暴力破解的資料量達到368,大約2.8萬億組密碼,而如果是區分大小寫字母的密碼組合則達到628組,大約218萬億組密碼。密碼每增加一位,密碼組合則曾幾何級數增長。

    最近在船上時間比較多,於是我用Ruby寫了一小段程式,模擬了一下密碼破解所需要的時間。我測試程式所用的筆記本處理器是Intel Core i5 2.4GHz,記憶體為8G 1600MHz。為了模擬真實的使用環境,我的測試方法是首先隨機生成一個純數字的8位數密碼,然後利用程式模擬暴力破解密碼。經過幾次測試,破解8位純數字密碼的平均速度為2分半鐘左右。所以您的密碼如果是由等於或低於8位的純數字組成,即便加上網路延時,破解時間也不會超過一個小時。

公司IT部門建議的密碼為:PaSs1234或p!ss1234或Pass!$#%。對於暴力破解來說第一個,即PaSs1234則共有2.8萬億組密碼,但是對於字典破解來說,可以嘗試pass和1234的組合,如Pass1234、Pass1234、PaSs1234很容易猜解。第二個密碼,p!ss1234,雖然只是將a換成感嘆號,但是因為這個p!ss不屬於單詞,而且“!”通常會與“~!@#¥%……&*”等一起列為特殊符號,所以這樣類似的密碼組合至少有408種,即256萬種組合,配合字典破解所需時間不會超過10分鐘。最後一種密碼,前面可以配合字典破解,後面4位用暴力破解,大約有2700萬組,破解難度就非常大,而且也需要一定的技巧。

那麼什麼樣的密碼才安全呢?當然是越長、越複雜越安全。但是太複雜、太長的密碼不僅難記,用起來也不方便。對於上網常用的密碼,因為網站採用了限制登入次數以及使用驗證碼的方式避免了暴力破解式的攻擊,所以您可以根據自己的情況,用數字、密碼、特殊字元等共同組成,如rNh#4915*。