知乎日報:鍵盤上甚至都就打不出來的密碼,還真的不一定更安全

  如果創造出現在鍵盤上沒有的字母,組成的密碼還會被破解嗎?

  結論:

  採用自定義的字符集作為密碼的明文,對提高系統抗破解的能力理論上會有提升,但效果不明顯,實際操作的時候對系統強度反而會可能削弱。

  歷史:

  類似的腦洞在歷史上曾經出現過:二戰時期,美軍在太平洋戰場上,啓用納瓦霍族人作為通訊員,利用他們獨特而罕見的方言,給通訊進行第二層加密。由於納瓦霍族的語言沒有外人能懂,因此即使通信內容被日本人截獲解密,也不會泄露。

  這個史實後來被吳宇森拍攝成電影《風語者》

  據説中越自衞反擊戰中也曾用温州話進行類似的加密防護。

  上圖是美劇《盲點》,我是從來沒聽説過什麼惡魔之語,不知道他們是從哪個唐人街的都市傳説聽來的。

  現實:

  既然過去的戰爭中多次採用類似的辦法進行通訊加密,那自定義“明文字符 / 語音集”是很有效的辦法嗎?很可惜,隨着密碼技術的進步,這種辦法被證明是低效且不安全的。

  自定義明文集或者自定義加密算法是加密理論和技術不成熟年代的產物,其中的核心思想是:如果我的明文集和加密算法攻擊者不知道,那麼破解難度就會非常大。

  這個假設有幾個問題:

  1.攻擊者不會永遠不知道,甚至可以説遲早會知道。

  2.即使攻擊者不知道,也不代表不能破解。

  3.做安全設計的時候如果假設攻擊者不知道,會導致整個設計出現更多的疏忽,此時一旦攻擊者真的知道了,破解起來就勢如破竹。

  之所以説攻擊者遲早會知道,是由於:我們不能保證攻擊者拿不到加密算法和明文集,我方可能有叛徒或內奸、傳送加密算法和字符集的時候可能被竊聽、包含加密算法和字符集的機器 / 軟件可能被竊取和破解等等。電影《模擬遊戲》中,圖靈用來破解德國加密算法的英格瑪樣機,和《獵殺 U-571》裏被美國海軍搶走的德軍密碼機,都是前車之鑑。

  那為什麼説攻擊者在事先不知道加密算法或者明文集的時候也可以進行破解呢?我們拿本題作為例子來試着説明下:假設題主確實發明了幾十個新字符用來作為密碼,這時候後台的加密算法仍然使用 MD5,那麼攻擊者需要知道新字符集才能破解密碼嗎?不需要,因為 MD5 明文和密文之間是多對一的關係,攻擊者不需要得到題主所設定的明文,只需要得到任意一個符合 MD5 散列的明文組(這被稱為等效明文),就可以登錄服務器,而多個等效明文組中肯定包括了至少一組常規字符的組合。這種情況下,其實加密強度並沒有增加(然而成本卻上升了很多倍)

  有人可能會説:採用私有的加密算法,就不會出現 MD5 密文撞擊的問題了。那麼你需要知道一個事實:設計開發一個從理論到實踐都足夠健壯的加密算法,是一件極具挑戰的工作,在 99.99% 的情況下,新設計的私有加密算法都會嚴重降低系統的安全性。

  過去的幾年中,由於採用了私有的算法或者協議,過於自信,反而在管理或者其他方面產生疏漏,結果出現重大安全事故的例子也是屢見不鮮。看過《風語者》電影的同學也一定還記得,最後尼古拉斯凱奇對於是不是應該履行自己的職責,殺掉可能被俘的納瓦霍通訊員,而產生了猶豫,差點造成納瓦霍語加密方法被日軍獲得。而在電影《模擬遊戲》裏,德軍也是因為對恩格瑪加密機的強度和私密性過於自信,在明文管理上出現了重大失誤,被盟軍牽着鼻子打。

  總結

  以上,隨着數學和計算機學的進步,在密碼領域,腦洞可以用於一時,長期來看還是經過充分數學論證和大量實際檢驗的辦法才是更可靠的辦法。

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 1512 字。

轉載請註明: 知乎日報:鍵盤上甚至都就打不出來的密碼,還真的不一定更安全 - 楠木軒