• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 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加密算法的改進
    桂阳县| 美姑县| 锡林郭勒盟| 霍邱县| 云龙县| 鄂托克前旗| 仁布县| 沈阳市| 彰化市| 阜平县| 工布江达县| 隆德县| 信阳市| 枝江市| 海丰县| 柳河县| 濉溪县| 昌图县| 黑山县| 武夷山市| 台江县| 苏尼特右旗| 洞头县| 盘山县| 朝阳区| 巢湖市| 开鲁县| 庆云县| 五大连池市| 桂东县| 卢龙县| 嘉荫县| 武宁县| 若尔盖县| 北票市| 宁陕县| 冀州市| 昂仁县| 兴安盟| 育儿| 乌审旗|