來說說 AI 破解密碼的其中一種方式:用 GAN 來猜密碼


「聽說 AI 可以拿來猜密碼欸。」
「Cliche。」
「欸不是啊兄臺,聽說密碼也可以用 GAN 來碰撞欸。」
「唉,果然,年輕人不講武德。可是小等一下,GAN 不是用來產生圖片的嗎?」

「什麼啦,這個 GAN 不是只有你說的那樣好嗎。GAN 是 Generative Adversarial Networks,又叫生成對抗網路,可以產生東西,產出來的結果可以讓該網路無法判斷該產出結果的真偽。除了產生圖片以外,它也可以用來產生立體模型,還可以像這邊一樣,產生字串來猜密碼。」

「酷哦。可是那跟彩虹表有什麼不一樣呢?」
「額,就是,彩虹表是直接依照一些規律(比如說,特定字符的使用習慣)來做成一個索引表,藉由它來比對出那些密碼。至於這個 PassGAN 呢,他會先自己產出一些比對用的字串來猜。

簡而言之就是,可以拿它產生出來的字串以假亂真,就像那些外洩的密碼那樣。比如說,有一組從 LinkedIn 上外洩的密碼叫做 Pa$$W0rd,那這個 PassGAN 同樣也可以產出一個 Pa$$W0rd 來,就像原本的那樣。」

「那,剛剛說的這個 PassGAN 是什麼呢?聽起來好神祕啊。」
「PassGAN 嗎……等等,你聽過 CNN、RNN 跟 LSTM 嗎?」
「嗯。」
「好,那 PassGAN 就是個把 CNN 變成了 RNN ,並且還要用 LSTM 做 GAN 的東東。你可以把它想成有兩個 RNN 模型會互相利用,用來產生那個以假亂真的密碼字串這樣。

在他們的架構裡面,有兩種東西,一個是產生器,簡稱為 G,而另一個是辨識器,簡稱為 D,大概像是這樣。
圖一  PassGAN 的結構

每一個 GAN 有兩個 D,一個用來辨識真的密碼,一個則用來辨識假的。在它衍生出的 rPassD2CGAN 模型中,兩個 D 會交錯使用。
圖二 rPassD2CGAN 的兩個辨識器

但這樣可能會造成訓練結果比較不穩定。所以作者表示,如果我們把兩個識別器統統都打包好的話,則可以提升效能。
圖三 打包好的新的識別器

技術細節上來說,使用的 cost 算法則是非 IPM 的方法。這整個模型可以被應用在物聯網智慧裝置的密碼破解上。」

「這樣啊。那它也像彩虹表攻擊那樣需要一個字典嗎?」
「訓練時大概要吧。不過總之就是要讓 D2 分辨不出哪個是假的密碼就對惹。」

「诶這樣我有個問題。」
「請說。」
「這東西不就是訓練一個 GAN 來玩 password cracking 嗎?」
「嗯……算是吧。可是你難道不覺得,這種東東放在黑產裡面滿好玩的嗎?不講武德欸。訓練好可以直接撞出密碼,根本水。」
「好,那我要卡資料來源。」
「我找找……是 Sensors 上面發的,這篇:S Nam, S Jeon, H Kim and J Moon (2020). Recurrent GANs Password Cracker For IoT Password Security Enhancement. 20(11), 3106。」
「噫,你知道的太多了。」


撰文:郭彥伶


原始文章:Nam, Sungyup, et al. "Recurrent gans password cracker for iot password security enhancement." Sensors 20.11 (2020): 3106.

留言