使用神經網路破譯一般的加密演算法是否可行?

時間 2021-05-05 17:43:42

1樓:樸素的貝葉斯

能提這個問題說明了神經網路在「01判別、多類分類、單值回歸、多值生成」等場景下,在常見資料集上的能力已經達到或超越了人類的智慧型水平

從而使得人們誤以為它可以在"智慧型問答、邏輯推理、啟發計算、破譯破解"等領域攻克重要困難。

神經網路算是乙個複雜度為O(1)的函式,對於RSA這種基於大素數分解問題的加密演算法,只有在O(1)時間內成功將大數分解為兩個素數才能破譯出明文。

對於AES這種使用位運算和乘法的加密方法,就要逐個猜測導致兩個bit異或的輸入是01還是10,並且評估解密結果的通順性,才可能破譯出明文。

總而言之,加密演算法的中心思想就是:

通過密文推導所有可能的,解空間要設計得非常大

可行解在空間中盡可能地分布均勻,難以判斷哪種數字更可能是金鑰。

第一點的解空間本身就是無窮的。第二點所需的均勻分布,是密碼學研究人員通過數學設計在理論上保證的。所以加密結果往往展現了十分大的熵。

熵如此之高,靠邏輯推斷是搞不定的,這就像通過檢測海平面上溫度變化,來竊聽海底光纖傳輸內容。這種事神經網路搞不定。

所以目前的可行方案都是暴力遍歷,對於雜湊特徵,就上彩虹表,對於未知金鑰,就遍歷全部字串。神經網路從結構上只支援記憶,而不支援動態的迴圈遍歷。所以神經網路也無法用暴力法。

有人可能覺得,萬一加密演算法設計的不好,做不到分布均勻,且與輸入相關性極低,是不是可以用神經網路了。

第一,這種情況很常見,演算法設計的總有問題,所以總是更新換代(比如DES SHA0 SHA1 等等)。

第二,新演算法熵都很高,一旦遇到某種輸出概率高百分之一,都會立刻引起業界警覺,因為這說明演算法在理論上可能被攻破。這時候都還沒輪到黑客真正去利用這個概率差呢。

最後,如果我們回到神經網路本質:「乙個函式」,就會意識到,雖然這種結構可成為萬能近似圖靈機,但是是否存在乙個在O(1)時間內破譯密文的圖靈機呢

如果很難找到,甚至不存在,那就談不上用神經網路近似它了吧。

2樓:[已重置]

密碼的主要特徵之一是其變換具有類似混沌系統的性質,無論是明文還是金鑰的微小區域性變化都導致密文的全域性變化從而使得從密文獲取明文和金鑰資訊極其困難,這有點類似資訊黑洞。 由於加密演算法是公開的,那麼神經網路在前向加密網路上是無能為力的,在逆向解密網路上理論上可以通過學習獲得部分解密能力,類似於人類進行的密碼分析,但是由於密碼設計本身的類混沌特性,這種逆向的資訊獲取能力是很弱的,畢竟所能用於訓練的明文密文對的數目相對於系統狀態空間是可忽略的,而密碼的設計特性導致系統的泛化效能是極差的,這類似於最近影象判別網路使用隨機標定訓練的情況。所以,系統會嚴重的過擬合,或者嚴重欠擬合(這個按照Goodfellow對對抗樣本的研究可能是更有可能),所以這樣訓練的網路是沒有泛化能力的,也就無法完成對未知資料的解密。

用c 實現神經網路一般用什麼庫?

SMP66 2021年了,必須推薦一波後來出現的pytorch了。pytorch c api完全能滿足任意神經網路的設計,而且足夠簡單。比如我個人的開源分割專案就是基於pytorch cpp寫的。 Python的Theano每次執行都會先產生C程式碼再編譯執行.在Linux底下的話翻開資料夾 the...

一般來說,三層神經網路可以逼近任何乙個非線性函式 為什麼還需要深度神經網路

Guocheng Qian 該理論,1989年被George Cybenko提出。我想你應該是在Ian Goodfellow的deeplearningbook 6.4.1中看到的吧,其實他也解釋了你的問題 三層神經網路可以逼近任何乙個非線性函式為什麼還需要深度神經網路 A feedforward n...

神經網路是使用什麼如何處理帶L1正則化的損失函式的?

David 9 L0正則是更激進的正則 定向Dropout和L0正則,for.ai與Hinton老爺子的神經網路蒸餾 剪枝與量化新研究,稀疏化神經網路,控制引數間互資訊 2prime 似乎沒有人意識到用L1正則項在深度學習是保證不了稀疏的對於神經網路 這裡 是relu 我現在要在第二層 用l1正則項...