計算機該如何暴力破解

    如果你是一個程序員,你要去暴力破解一個已知賬號的密碼,有兩個思路。爲簡化討論,我們假設密碼是6位數字。一種辦法是從000000開始每次加1,一直嘗試到999999,這被稱爲蠻力破解,也是很多人一開始就能想到的辦法。另一個辦法是將所有可能出現的密碼寫到一個文件,此文件被稱爲字典,然後程序一個個去讀,這被稱爲字典破解。哪個辦法好呢?

    是字典破解好,要想理解爲什麼字典破解好,需要先明白爲什麼蠻力破解不好。蠻力破解看起來很美,理論上不管密碼多複雜最終都會被程序“揪出來”,只要給我足夠的時間。但問題恰恰就出現在時間上。對於現在世界上任何一臺計算機來說,包括運算速度天下第一的天河二號在內,蠻力破解都不是一個好的解決問題的辦法。

    在計算機世界裏,解決問題的辦法被稱爲算法。衡量算法有兩個指標,時間複雜度和空間複雜度,說白了就是運行時間是多少和需要佔用多少內存。這裏我們只討論時間複雜度。前面的蠻力破解,其實就是在所有的可能的答案裏面一個個窮舉。在這裏小致提醒大家,按照窮舉法設計的算法都不是好的算法,因爲隨着算法輸入規模的增加,算法運行時間將會是指數級增加。對不起,這裏又出現一個專業詞彙叫“算法輸入規模”,簡單來說就是輸入數據的長度,在上面的例子中密碼是6位的,輸入規模就是6位長度。它的運行時間是多少呢?從000000到999999,共10的6次方個數,所以運行時間可以認爲是一百萬。那問題來了,如果密碼長度是7呢?一千萬。8呢?一個億。可以看到,密碼長度每增加一位,運行時間是指數級增長的。小目標是輕鬆達到了,但是電腦可快要累死了。對於一個算法,他可能面臨的輸入規模是不確定的,所以必須控制好輸入規模和運行時間的關係,指數級增長的運行時間對於任何一臺計算機來說都將是災難。關於指數級增長的威力,還有一個例子你肯定聽說過:印度人Sissa發明了國際象棋,國王爲了表示感謝答應能夠滿足他一個願望。充滿智慧的Sissa對國王說,請在棋盤的第一個格子裏放一粒稻穀,第二個格子裏放兩粒稻穀,第三個四粒,第四個八粒,然後依次類推,下一個格子裏面的稻穀數量是前面的兩倍,直到2的63次方個。結果這位國王成爲了也許是領教指數級增長威力的第一人。因爲滿足Sissa的請求一共需要18 446 744 073 709 551 615(2的64次方減去一)粒稻穀,能一口氣唸完我服你。這些稻穀足夠將印度國土覆蓋好幾層!

    黑客不會爲了破解一個密碼而採用第一個算法,因爲只要稍微增加密碼長度,等到下下輩子也不一定能破解出來。所以黑客會採用第二個辦法,字典破解。這個算法的時間複雜度是輸入規模的一個多項式,在這裏就是一個最簡單的一元一次方程,Y(算法運行時間)= X(數據字典的密碼數量),這樣的時間複雜度被稱爲多項式時間。在計算機世界裏,擁有多項式時間複雜度的算法才能認爲是有效的算法。如果小明是計算機專業的學生,但是隻能寫出第一個破解算法,那麼他的算法課最高不會超過59分。

    好了,到此爲止今天的課程就可以結束了,但是關於這兩個算法,還引申出來兩個問題,感興趣的同學可以繼續留下來聽,後面還有彩蛋。

1.有沒有就是要蠻力破解密碼的?

    蠻力破解雖然運行時間嚇人,但是也有好處,那就是隻要有充分的時間就肯定能找到答案。就好像沙漠裏面有一粒是金子,只要一粒粒數肯定是能找出來的。過去四十多年來,計算機的運行速度每18個月就翻一番,這同樣是指數級增長的運算能力。對於一些高價值的目標,灰色世界裏從未停止過對它們的攻擊。近年來美國技術標準局已經強烈建議把RSA(一種廣泛使用的加密技術)公鑰從1024位提高到2048位。而更讓人不安的是,量子計算機近些年已經取得大量進展,如果量子計算機發展成熟,RSA公鑰將被輕鬆破解。換句話說,信息安全最底層的根基正在動搖,新的更加安全的加密技術的出現已經刻不容緩。好在我們國家在這方面走在了世界前列,中科院潘建偉院士主導的量子加密技術正在穩步推進,前段時間還發射了一顆量子通信加密衛星。在這裏給大家一個友情提示,可以去關注下這方面的題材股,等待向阿爾法狗一樣的量子題材爆發。這就是彩蛋,拿走不謝。

2.我們該如何設置密碼?

    據可靠消息,國內的黑客已經建立起容量龐大的密碼字典,包含了14位長度內的任意字符和數字組成的密碼,這些字典甚至從網上都可以下載。所以,對於重要賬戶的密碼,密碼一定要仔細設置密碼,越沒有規律性越好,而且密碼不能保存在任何地方,除了你的大腦。這裏教各位一個設置沒有規律性且容易記住密碼的辦法,現想一句話,例如“我這個月要減肥五斤”,取每個字第一個字母就是一個看起來沒有規律性的密碼啦:wzgyyjfwj。要想安全,總要交出一些便利,它們是一對矛盾,沒辦法相容。

如果想和我愉快的玩耍,請關注公衆號致新(zhixin991),或者掃描二維碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章