• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于seq2seq模型的深度學習密碼破譯方法*

      2019-10-09 05:22:50孫曉麗宋曉祥
      通信技術 2019年9期
      關鍵詞:明文解碼器加密算法

      孫曉麗,郭 艷,李 寧,宋曉祥

      (中國人民解放軍陸軍工程大學,江蘇 南京 210007)

      0 引 言

      古希臘時期,人們嘗試使用簡單的加密方法對信息進行加密,以此來防止信息被竊取。隨著時代的進步與發(fā)展,人們對個人信息的保密問題變得越來越重視。密碼學以密碼通信的研究為目的,通過對傳輸信息進行加密,防止第三方對信息的竊取[1]。密碼技術的多樣性為信息加密和信息安全提供了多樣選擇。密碼技術因其能夠在潛在威脅的環(huán)境中保證通信的安全獲得了更多關注,廣泛應用于軍事通信保密、數(shù)據(jù)加密以及信息保密等方面。

      明文和密文是一組存在復雜映射關系的數(shù)據(jù)對,密碼破譯是要找到密文所對應的明文。神經(jīng)網(wǎng)絡的出現(xiàn)為密碼理論提供了全新的思路,促成了神經(jīng)密碼學的發(fā)展[1],同時神經(jīng)網(wǎng)絡也成為保密通信的一種新的實現(xiàn)途徑。傳統(tǒng)密碼破譯技術基于窮舉法、字典法等,需要大規(guī)模完全數(shù)據(jù)庫進行嘗試實現(xiàn),需要耗費大量的時間,效率低下。而基于神經(jīng)網(wǎng)絡實現(xiàn)密碼破譯,規(guī)避了傳統(tǒng)密碼破譯方式的弊端。利用神經(jīng)網(wǎng)絡解決密碼破譯問題的關鍵在于尋找一種合適的神經(jīng)網(wǎng)絡。

      文獻[2-3]使用簡單BP神經(jīng)網(wǎng)絡分別對橢圓曲線密碼和公鑰密碼進行破譯。文獻[4]提出了一種新的神經(jīng)網(wǎng)絡結構——生成式對抗網(wǎng)絡(GAN)。文獻[5]在此基礎上提出了一種新的模型——PassGAN,并將此網(wǎng)絡應用于密碼猜測的問題上,改變了利用傳統(tǒng)破譯工具進行字典學習破譯的弊端。文獻[6]受CycleGAN的啟發(fā),提出了一種新的網(wǎng)絡——CipherGAN,并對vigerene密碼進行破譯,取得了較好效果。以上幾種算法都證明所提模型在字符級密碼破譯方面有優(yōu)異效果,但GAN模型的超參數(shù)對模型效果有較大影響。因此,需要找到一個合適的網(wǎng)絡,使其能夠高效、穩(wěn)定地實現(xiàn)密碼破譯。

      明文和密文是一組存在復雜映射關系的數(shù)據(jù)對,通過對其學習得到映射關系,與序列處理問題類似,因此可以使用合適的序列處理模型[7-11]解決密碼破譯問題。

      基于此,本文采用一種基于深度學習的密碼破譯方法。首先,文章采用詞嵌入的編碼方式對輸入數(shù)據(jù)進行編碼,從而將明文和密文轉化為可學習的存在某種內在關系的數(shù)據(jù)對,使其在確定數(shù)據(jù)輸入形式的同時,保留序列之間的相關信息。其次,充分利用seq2seq(sequence to sequence)模型[12]實現(xiàn)多對多的特點進行網(wǎng)絡學習,成功解決了明文密文長度匹配的問題。最后,使用多表置換密碼的不同加密算法驗證了模型的性能。仿真結果表明,無論哪種加密方式,所用模型都具有很好的破譯效果,破譯的準確率高達99%。本文所提的破譯方法對研究其他密碼破譯問題具有重要的參考意義。

      1 相關知識

      1.1 seq2seq模型

      seq2seq模型是一類端到端的算法框架,即序列到序列的轉換模型框架,在機器翻譯、自動應答等應用場景上經(jīng)常出現(xiàn)。

      Seq2Seq由編碼器-解碼器[13](Encoder-Decoder)框架實現(xiàn)。Seq2seq模型包含3部分——編碼器、解碼器和固定長度的語義向量(Context Vector),如圖1所示。從圖1可以看到,編碼是將源序列轉化為一個長度固定的語義向量,而解碼的過程是將語義向量轉化為目標序列。其中,語義向量中間語義編碼是編碼器最后一個時間步的狀態(tài),以此作為整個句子的語義向量。

      圖1 seq2seq結構

      Seq2seq模型可以解決一對多、多對多的問題,將其應用于密碼破譯中,即無論明文密文的長度是否相等,理論上都可以實現(xiàn)密碼的破譯,有利于將模型推廣到其他加密算法。

      1.2 詞嵌入

      數(shù)據(jù)以何種形式輸入網(wǎng)絡,成為網(wǎng)絡設計的又一問題。因此,結合現(xiàn)有的編碼形式,摒棄獨熱碼(One-hot)編碼方式,選擇詞嵌入(Word Embedding)[13]的方式處理數(shù)據(jù)。在數(shù)據(jù)量較大的情況下,使用One-hot編碼會造成較大的空間浪費,且One-hot編碼會導致序列相關信息的缺失。詞嵌入的方式可以通過網(wǎng)絡學習詞嵌入矩陣存儲數(shù)據(jù)的相關信息,能夠更多地保留源序列的特征值。訓練網(wǎng)絡的過程中,每個嵌入的向量都會更新。使用詞嵌入進行編碼,可以發(fā)現(xiàn)很多字符與字符之間的相似性,且能夠可視化字符之間的關系。相較下,選擇詞嵌入的方式處理數(shù)據(jù)更貼近需求。詞嵌入能夠把一個維數(shù)為所有詞的數(shù)量的高維空間嵌入到一個維數(shù)低得多的連續(xù)向量空間中,每個單詞或詞組被映射為實數(shù)域上的向量。結構如圖2所示。

      圖2 詞嵌入關系

      1.3 多表置換密碼

      維吉尼亞密碼(Vigenere)是使用一系列凱撒密碼組成密碼字母表的加密算法,屬于多表密碼的一種簡單形式。

      自動密鑰密碼(Autokey Cipher)也是多表替換密碼,與維吉尼亞密碼密碼類似,但使用不同的方法生成密鑰。通常來說,它比維吉尼亞密碼更安全。自動密鑰密碼主要有2種:關鍵詞自動密鑰密碼和原文自動密鑰密碼。

      Enigma是通過enigma機產(chǎn)生的一種多表替換密碼,明文密文之間的相互轉換需要對應相同的轉子初始位置。相較于vigenere和autokey,enigma的生成過程更復雜。enigma是一種復式置換密碼。

      本文選擇3種安全程度不同的置換密碼進行實驗,以此證明所用模型的正確性。

      2 模 型

      本文采用基于seq2seq的算法解決密碼破譯問題,通過對現(xiàn)有明文密文對的分析,學習明文密文對之間復雜的映射關系,從而實現(xiàn)對密文的破譯。本文中,編碼器與解碼器均采用傳統(tǒng)的遞歸神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)實現(xiàn),具體采用GRU神經(jīng)單元搭建模型的架構。

      模型的編碼器和解碼器的運算過程分別表示為:

      其中,f和g都是激活函數(shù),其中g函數(shù)一般為softmax函數(shù)。

      Seq2seq模型能夠很好地解決一對多、多對多的問題,能夠很好地適應明文密文的長度。模型結構如圖3所示。

      圖3 模型結構

      由結構圖圖3可以看出,需要對現(xiàn)有密文進行處理,采用詞嵌入的方式對其進行編碼處理,并在訓練過程中對其進行更新,從而得到合適的詞嵌入矩陣。

      本文所用模型的seq2seq算法過程如下:

      輸入:已知的密文

      輸出:產(chǎn)生的明文

      1.對密文進行編碼,編碼方式為詞嵌入;

      2.編碼后的數(shù)據(jù)輸入編碼器,得到語義向量C;

      3.對語義向量進行解碼,經(jīng)過softmax層輸出得到解碼后的明文;

      4.使用負最大似然求loss,并求出訓練過程的準確率;

      5.loss.backward()。

      seq2seq算法描述了seq2seq模型的訓練過程。在此過程中,語義向量C通常為編碼器最后一個隱藏節(jié)點或者多個隱藏節(jié)點的加權和。本文實驗中,采用最后一個隱藏節(jié)點作為語義向量C。解碼器在t時刻的隱藏狀態(tài)h(t)由t-1時刻的隱藏狀態(tài)h(t-1)、輸出y(t-1)以及語義向量C共同決定。在解碼器的輸出端增加softmax層,輸出采用輸出概率最大的方式,有效提高了準確率。

      3 實驗結果

      實驗中,編碼器與解碼器中的神經(jīng)網(wǎng)絡單元都選用GRU,激勵函數(shù)選用線性整流(Rectified Linear Unit,ReLu)函數(shù)。本文在NVIDIA TITAN X上進行實驗。

      在訓練網(wǎng)絡的過程中,選擇了一種有條件的teacher-forcing訓練模式,即達到一定條件后,使用真實的目標輸出作為下一個輸入,而不是直接使用解碼器猜測的結果作為下一個輸入。使用teacherforcing能夠使得模型收斂更快,且有限定條件的使用teacher-forcing能夠避免不穩(wěn)定情況的出現(xiàn),從而達到更好的效果。

      在訓練過程中需要記錄訓練的準確率,對準確率的計算方式定義如下:

      其中,δi表示第i組輸出的明文是否與目標值一致,即使僅有一位不相同也不能將其視為一致。若一致記為1,而num_testset表示測試集的大小。

      3.1 確定節(jié)點數(shù)

      由于實驗所用的訓練數(shù)據(jù)較多,本實驗中設定批量大小為512。在隱藏節(jié)點選取問題上,需要通過大量實驗確定其個數(shù),實驗結果如圖4所示,以autokey密碼為例進行實驗確定節(jié)點數(shù)。

      由圖4可以看出,在不同節(jié)點數(shù)情況下,準確率隨迭代次數(shù)的增加而升高,當準確率達到一定程度時,保持穩(wěn)定;隨著節(jié)點數(shù)的增加,網(wǎng)絡的收斂速度越來越快,網(wǎng)絡的穩(wěn)定性越來越高;低節(jié)點數(shù)時,訓練過程存在較多波動;隨著節(jié)點數(shù)的增加,網(wǎng)絡的訓練越來越穩(wěn)定。在選定節(jié)點數(shù)時,應綜合考慮準確率、穩(wěn)定性以及收斂速度。因此,從仿真結果可以明顯看出,當節(jié)點數(shù)為512時,網(wǎng)絡的穩(wěn)定性和收斂速度均為最優(yōu),但是其準確率相較節(jié)點數(shù)位256時偏低。綜合考慮,選定節(jié)點數(shù)為256最合適。

      3.2 密碼破譯效果實驗

      確定節(jié)點數(shù)后,對模型進行訓練。訓練過程中,在不同加密算法下,準確率、誤差函數(shù)隨迭代次數(shù)的變化圖如圖5、圖6和圖7所示。

      圖5 Autokey數(shù)據(jù)集節(jié)點數(shù)為256時準確率、誤差與迭代步數(shù)的關系

      圖6 Vigenere數(shù)據(jù)集節(jié)點數(shù)為256時準確率、誤差與迭代步數(shù)的關系

      圖7 Enigma數(shù)據(jù)集節(jié)點數(shù)為256時準確率、誤差與迭代步數(shù)的關系

      由圖5、圖6和圖7可以看出,在不同加密算法的情況下,模型的準確率和誤差函數(shù)的變化是同步的。準確率隨迭代次數(shù)的增加而升高,誤差函數(shù)的變化則與之相反;訓練過程中,模型具有很高的穩(wěn)定性;訓練過程的準確率高達100%。

      表1為在不同加密算法的情況下,測試階段的破譯準確率。在訓練好的、對訓練數(shù)據(jù)的破譯率高達100%的模型下,對未知明文的密文進行破譯。

      表1 三種加密算法破譯準確率

      由表1可以明顯看出,針對3種不同的加密算法,該模型能夠很好地實現(xiàn)破譯功能,準確率高達99%,說明seq2seq模型在字符級密碼破譯方面有較為優(yōu)異的效果。

      4 結 語

      信息的安全問題受到越來越多的關注,信息的加解密問題成為當今研究的熱點。相較于傳統(tǒng)的密碼破譯方法,基于深度學習的密碼破譯方法更高效,且一個合適的模型可以推廣到更多的加密算法上。因此,本文采用一種基于seq2seq模型的深度學習密碼破譯方法,首次將seq2seq模型應用于密碼破譯問題,將密碼破譯問題轉換為序列處理問題。模型中,采用詞嵌入的方式對數(shù)據(jù)進行處理,摒棄one-hot編碼浪費信息、占用大空間的弊端,充分利用密文之間的相互關系。以3種不同的多表置換密碼對模型進行檢驗,仿真結果顯示,該模型在3種多表置換密碼的破譯問題中準確率高達99%,證明在字符級密碼破譯方面具有較為優(yōu)異的效果。

      但是,本文采用較為簡單的加密算法對模型進行檢驗,為了更好地證明其在字符級密碼破譯方面的效果,下一步需要對復雜的字符級加密算法進行檢驗,并對其在字符級加密算法中進行推廣。

      猜你喜歡
      明文解碼器加密算法
      科學解碼器(一)
      科學解碼器(二)
      科學解碼器(三)
      線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍蜻蜓解碼器
      奇怪的處罰
      奇怪的處罰
      基于小波變換和混沌映射的圖像加密算法
      四部委明文反對垃圾焚燒低價競爭
      Hill加密算法的改進
      桑植县| 鹿泉市| 建始县| 镇远县| 克什克腾旗| 滦南县| 凤台县| 徐闻县| 于都县| 乐都县| 衢州市| 翁源县| 房产| 岢岚县| 资兴市| 望江县| 岚皋县| 松桃| 宁乡县| 大城县| 海门市| 潜山县| 威信县| 天津市| 海淀区| 涟水县| 年辖:市辖区| 余庆县| 日喀则市| 萨迦县| 四川省| 崇明县| 达孜县| 蓝山县| 阿克陶县| 丰城市| 察雅县| 斗六市| 彭州市| 宜黄县| 敦煌市|