密碼危機:深度學習正在加速密碼破解!
資訊保安專家們一直在探索“生成式對抗網路”(GAN)如何提高我們的線上安全性,並取得了令人鼓舞的結果。近日,新澤西州史蒂文斯理工學院和紐約理工學院的研究人員開發了使用GAN猜測密碼的方法。
該小組開發了一個實驗,通過其被稱為“PassGan”的密碼猜測技術來檢視洩露密碼的資料,並發現該軟體能夠從這些帳戶中猜出47%的密碼,比HashCat和Ripper這樣的競爭演算法要高得多。在這篇文章中,我們將詳細介紹下述內容:
這項技術所處的歷史背景
犯罪分子可以利用這項技術的哪些功能
這項技術如何運作
如果你是紅隊(攻擊方),如何運用該技術
作為使用者如何保護自身安全
作為藍隊(防守方)如何保護自身和企業安全
進入正題前,讓我們先來了解一下什麼是“密碼猜測”?這是一個相當模糊的術語,在本文語境中,它表示破解雜湊。那麼問題又來了,什麼是“密碼雜湊”(password hashes)呢?
什麼是密碼雜湊?
當發生諸如Dropbox、LinkedIn以及Ashley Madison等大型資料洩露時,其釋出的就是(通常情況下)電子郵件和密碼雜湊列表。所謂Hash——一般翻譯為“雜湊”,也可直接音譯為“雜湊”——就是把任意長度的輸入(叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來唯一的確定輸入值。
例如,假設我將明文密碼“12345”使用MD5演算法處理成一個類似“5f4dcc3b5aa765d61d8327deb882cf99”的字串,這就稱之為“雜湊值”。其具有不可逆的特點,也就是說,不能從這個雜湊值反推出明文密碼(也就是之前的123456)。
這一點在安全方面十分有用,因為這就意味著,像Adobe、LinkedIn或Google這樣的網站可以擁有數億個使用者帳戶,但不會儲存任何人的實際密碼。即使如此,他們仍然有能力在不知道密碼的情況下,檢查使用者是否知曉密碼。這一過程僅僅是通過儲存的密碼“雜湊值”而不是密碼本身來實現的。當用戶想要登入這些網站時,他們會發送自己的密碼,系統隨後會對這些密碼進行hash處理,並檢查得到的雜湊值是否與資料庫中和該電子郵件地址相關聯的雜湊值相匹配。
如此一來,就可以有效地放緩攻擊者破解的速度,但是並不能完全阻止他們。通過利用現代工具,攻擊者每秒可以猜測出數十萬至數億個密碼,具體取決於攻擊者試圖破解的雜湊演算法型別。這就使得攻擊者具有更多的時間和精力來檢查潛在的密碼,而不是耗費過多時間來猜測密碼。
PassGAN加入對抗戰鬥
攻擊者和安全專家正在進行一場永無休止的競賽,力圖找到更好、更快的方式來破解列表。目前,PassGAN技術就是實現這一過程最有力的“武器”。
PassGAN使用了一種稱為“生成對抗網路”(Generative Adversarial Network,簡稱GAN)的相對較新的技術,其生成的正確密碼猜測能夠比傳統方法多出18%-24%。所謂“生成對抗網路”是一類神經網路,通過輪流訓練判別器(Discriminator)和生成器(Generator),令其相互對抗,來從複雜概率分佈中取樣,例如生成圖片、文字、語音等。
先來說說第一個程式——“判別器”(Discriminator),它是一個深度卷積神經網路,簡言之就是一個可以在越來越抽象的層次上學習模式的系統,其作用是用於判別“生成器”所生成的資料是否接近於真實。它最終會返回一個介於0和1之間的數字,其中0表示不是密碼,1表示與密碼非常相似。
下一個程式是“生成器”,主要用於生成可以迷惑“判別器”的資料。它以隨機的文字串開始,通過“判別器”測試得到相應的分數。這第一次得到的分數一般會非常低,因為它只是一串隨機字元。
接下來,“生成器”就會對該字串進行修改,然後再去“判別器”處檢視修改後的字串得到的分數。如果分數升高,則保持該修改結果;如果不是,則撤銷該修改並繼續進行新的修改操作;不斷重複該過程,使得分達到給定的數值,以便提升自身計算能力。
簡單來說,“GAN”的基本思想是,生成器和判別器玩一場“道高一尺,魔高一丈”的遊戲:判別器要練就“火眼金睛”,儘量區分出真實的樣本(如真實的圖片)和由生成器生成的假樣本;生成器要學著“以假亂真”,生成出使判別器判別為真實的“假樣本”。競爭的理想狀態是雙方都不斷進步——判別器的眼睛越發“雪亮”,生成器的欺騙能力也不斷提高。
善意和惡意行為者如何使用PassGan
正如其他任何安全創新技術一樣,PassGan也可能會被惡意行為者濫用於攻擊存在密碼重用現象的系統,危害企業和系統安全。當然,密碼重用(Password reuse)對於普通使用者也會造成異常嚴重的危害。因此,為了保護自身免受安全威脅,使用者不能僅寄希望於密碼這一層防護上,還需要啟用多因子身份認證(MFA)。許多網站都已經提供了此項功能,希望大家能夠及時啟用。
當然,對於旨在加強組織安全性的“紅色團隊”而言,PassGAN也可以很好地幫助他們破解本地密碼,例如Windows SAM雜湊或linux / etc / shadow密碼雜湊等。
如果你是“紅隊”成員,並且對PassGAN工具感興趣,你可以前往https://github.com/brannondorsey/PassGAN尋找有關Brannon Dorsey釋出的PassGAN開源實現資源。
在PassGAN實驗中,研究人員探索了不同的神經網路配置、引數和訓練流程,以確定學習和過度擬合之間的適當平衡。具體來說,研究者的主要貢獻如下:
1. 顯示GAN可以生成高質量的密碼猜測。在實驗中,對於RockYou資料集來說,研究者能夠匹配真實使用者密碼組成的測試集5,919,936個密碼中的2,774,269(46.86%),而匹配LinkedIn資料集43,454,871個密碼中的4,996,980個(11.53%)。
2. 研究顯示,該技術可以與之前最先進的密碼生成規則一較高下。儘管這些規則是針對評估中使用的資料集進行了專門調整的,但是PassGAN的輸出質量與密碼生成規則相當(在HashCat中),或者比密碼生成規則更好(在John Ripper中)。
3. PassGAN可以用來補充密碼生成規則。在實驗中,研究人員成功地使用PassGAN生成了任何密碼規則都未能生成的密碼匹配。
4. 研究人員還指出,表現最好的密碼破解結果來自於PassGAN和HashCat的組合。通過將PassGAN和HashCat的輸出結合起來之後,發現比 HashCat自己匹配的密碼多出18%-24%。
5. 與密碼生成規則相反,PassGAN可以生成幾乎無限數量的密碼猜測。實驗表明,新的(唯一的)密碼猜測數量會隨著GAN產生的密碼總數穩步增加。這一點很重要,因為目前使用規則生成的唯一密碼的數量,最終會受到密碼資料集(用於例項化這些規則)大小的限制。
6. 通過標準的、基於變異的密碼規則集執行PassGAN的輸出,以獲得更大的覆蓋範圍也可能是有用的。
企業密碼最佳實踐
如果您負責管理企業,那麼建議您執行強密碼策略,用passphrase代替passwords。根據維基百科指出,兩者的區別在於Passphrase比普通的passwords更長。
近年來,很多專家開始傾向於認為,使用足夠長的Passphrase,可以擺脫以前密碼要求大小寫字母、數字、特殊符號等導致密碼難以記憶的情況。比如,使用“恰似一江春水向東流”首字母組成的密碼不僅十分好記,而且會比Password這種滿足各種要求,卻沒有卵用的密碼更好。
下面就以“*dJoeo30(#JS)3%$”密碼為例進行分析。
從熵的角度來看,這是一個非常好的密碼。因為它包含一切,具備16個字元,有大寫字母、小寫字母、符號和數字。以每個字元都存在95種可能性來計算,那麼這組密碼的就有95^16(即95的16次方)種可能,即便是每秒可以猜測1萬億次,可能也需要一萬億年的時間才能猜到。
就密碼強度而言,它確實是個好密碼,但是可惜沒人能記住它。因為我們的大腦很難記住對我們沒有任何意義的隨機字串。這也正是PassGAN能夠輕易破解如此多密碼的原因所在,因為人類可以很容易記住的密碼(如[email protected]$$word),一定也很容易猜測得出。
這就是我們主張使用passphrase的原因所在。我們可以使用具有很多熵的東西,但這樣產生的密碼並不是任意或隨機字元,而是有跡可循且便於記憶的內容。例如“這張專輯很好、天氣很冷”等很容易記住的東西。如果,我們假設攻擊者知道使用者正在使用一個英文單詞的密碼組合,那麼以人均20000個詞彙量來計算,我們就有20000^8(20000的8次方)種可能的組合,想要成功破解也非易事。
接下來,您就需要考慮使用者如何在企業中擁有給定的密碼。您是否應該期待前臺人員瞭解如何建立安全密碼?您是否應該期待企業中的每個人都配置強大的密碼?你給定使用者的密碼是否便於他們記憶,或者他們會不會寫在便籤紙上?這些問題都是值得關注和思考的!