專利名稱:一種容錯的des算法加速器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路領(lǐng)域的一種算法加速器,尤其是一種帶有容錯功能的DES算法加速器。
背景技術(shù):
DES (Data Encryption Standard)算法由IBM公司開發(fā),并被美國國家標準局 (NIST)于1977年采納作為標準,此后,DES算法一度成為世界上最廣泛使用的密碼算法。 DES是一種對稱加密算法,加密和解密采用相同的密鑰。加密時把明文(PlainText)以64 位為單位分成塊,經(jīng)過16輪迭代,最終產(chǎn)生64位密文(CipherText),每輪迭代使用的48位子密鑰由初始的64位密鑰產(chǎn)生。在許多應(yīng)用中,如航天、金融、核反應(yīng)堆、交通管制、醫(yī)療等領(lǐng)域,如果計算機系統(tǒng)不能穩(wěn)定可靠地工作,可能造成巨大損失,甚至災(zāi)難性后果。以空間宇航應(yīng)用為例,在宇宙中,集成電路往往受到電磁輻射的影響,單個高能粒子射入半導(dǎo)體敏感區(qū),可能使器件邏輯狀態(tài)翻轉(zhuǎn),從而導(dǎo)致系統(tǒng)紊亂而發(fā)生事故,這便是單粒子翻轉(zhuǎn)(SEUs,Single Event Upsets)錯誤,這種錯誤如果不加以處理將帶來極其嚴重的后果。近年來,人們在追求計算機的高性能的同時,也把高可靠性放在了越來越重要的地位。容錯技術(shù)為計算機提供了這樣的能力當計算機的一個或多個關(guān)鍵部分發(fā)生故障時,能夠自行檢測和診斷,并采取相應(yīng)措施,保證計算機完成規(guī)定功能,或者犧牲部分性能保證計算機在可接受范圍內(nèi)繼續(xù)工作。 容錯技術(shù)是提高計算機系統(tǒng)可靠性的主要手段。各種容錯技術(shù)都可以歸結(jié)于冗余(redundancy)技術(shù)。幾種常見的冗余技術(shù)有硬件冗余,信息冗余,時間冗余,以及軟件冗余。通常硬件故障用前三種冗余進行加固,而軟件故障采用軟件冗余來加固。硬件冗余分為靜態(tài)冗余和動態(tài)冗余,最常用的冗余方式是三模冗余(TMR,Triple Modular Redundancy),它采用三個相同的模塊接受同一個輸入,產(chǎn)生的三個結(jié)果送至表決器(voter)進行表決。通常采用多數(shù)表決方式,即有兩個或兩個以上結(jié)果相同,則認定為正確結(jié)果。信息冗余最常見的形式是利用編碼技術(shù)進行檢錯和糾錯,即在數(shù)據(jù)位之外,增加一些冗余的校驗位,使原來不相關(guān)的數(shù)據(jù)位變得相關(guān),利用這種相關(guān)性可以在數(shù)據(jù)的處理、存儲、傳輸過程中實現(xiàn)檢錯和糾錯。常用的可靠性編碼有奇偶校驗碼、漢明碼、循環(huán)冗余碼、校驗和碼、伯格碼等?,F(xiàn)有的加速器設(shè)計中還未發(fā)現(xiàn)有利用FPGA芯片實現(xiàn)帶有容錯功能的DES算法加
速器ο
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問題在較高的吞吐量的前提下,設(shè)計一種帶有容錯功能的DES算法加速器,同時盡可能減小由于容錯功能帶來的硬件開銷。本發(fā)明的技術(shù)方案與現(xiàn)有的DES算法加速器不同,本發(fā)明采用三模冗余(TMR)和漢明糾錯碼的方法,實現(xiàn)一種對單粒子翻轉(zhuǎn)(SEUs)容錯的DES算法加速器。本發(fā)明包括讀入模塊、存儲模塊、DES加密運算模塊以及自動機控制模塊,數(shù)據(jù)的處理流程分為如下幾個步驟(一 )讀入模塊將密鑰讀入存儲模塊,在FPGA里存儲模塊可以用RAM來實現(xiàn);(二)DES加密運算模塊從存儲模塊中取得密鑰,進行加密運算;(三)在加密完成之后,DES加密運算模塊將加密得到的密文寫回至存儲模塊。以上三個步驟都是在自動機控制模塊的控制之下進行的,容錯功能的實現(xiàn)是在 DES加密運算模塊中。DES加密運算模塊包括初始模塊、16個輪函數(shù)模塊和輸出模塊,初始模塊包括明文初始置換IP模塊和密鑰初始置換PC-I模塊,輸出模塊主要完成IP—1操作得到密文,具體的數(shù)據(jù)處理流程分為如下幾個步驟(一)初始模塊與第1個輪函數(shù)模塊相連,它的輸入是64位明文以及64位的密鑰,把明文置換之后的結(jié)果分為左右兩個部分Ltl和Rtl,密鑰置換之后的結(jié)果分為左右兩個部分Ctl和Dtl,均送給第1個輪函數(shù)模塊進行處理。(二)16個輪函數(shù)模塊采用級聯(lián)的方式相連,每個輪函數(shù)模塊由明文處理模塊和密鑰調(diào)度模塊組成。明文處理模塊完成以下操作①E/P擴展,將32位的Rh擴展擴充為 48位;②將E/P擴展得到的48位序列與48位的子密鑰進行異或操作;③S盒運算,對異或的結(jié)果進行S盒運算操作,得到32位結(jié)果;④P盒置換;⑤上一輪的左半部分Lp1與P盒置換后的結(jié)果進行異或得到本輪的右半部分Ri,本輪的左半部分直接由上一輪的右半部分得到,即Li = Ri^Ri = Li^rf(Ri-LKi)。子密鑰生成模塊主要有兩個操作,即循環(huán)移位操作LS 以及壓縮置換PC-2,所得的Ci+1和Di+1送往下一輪。各個子密鑰的生成過程如下初始密鑰為64位,去除作為奇偶校驗位的第8、16、24、32、40、48、56、64位,剩下的56位作為有效密鑰。初始時,對密鑰做置換選擇PC-1,然后將得到的56位密鑰分為左半部分Ctl和右半部分 Dtl送往第1個輪函數(shù)模塊。之后的每一輪中,將左半部分(;和右半部分Di同時進行向左循環(huán)移位LS操作,移位位數(shù)為1位或者2位,移位之后的左右兩個部分Ci+1和Di+1分別送往下一輪子密鑰的生成過程。將循環(huán)移位后的兩個28位拼接為56位,再做一個密鑰選取即壓縮置換PC-2,即生成本輪的子密鑰K”(三)輸出模塊在DES加密運算模塊的最后,它與第16個輪函數(shù)模塊相連,通過 IF1置換操作得到密文(置換IP—1與IP互為逆置換)。本發(fā)明的容錯功能的實現(xiàn)是在DES加密運算模塊中,對IP、PC-I和IF1的容錯加固采用三模冗余的方式,即對輸入數(shù)據(jù)的每個位,都同時做三份運算,然后將結(jié)果用表決器進行表決。通常采用多數(shù)表決的方式,即有兩個或兩個以上結(jié)果相同,則認定為正確結(jié)果。 16個輪函數(shù)模塊中,對每一輪的結(jié)果寄存器采用漢明碼來實現(xiàn)檢錯糾錯。在寄存器的輸入端設(shè)置漢明編碼器,輸出端設(shè)置漢明解碼器,進行校驗和糾錯,之后該輸出作為下一輪運算的輸入進行后續(xù)運算。本發(fā)明的優(yōu)點在于用三模冗余和漢明檢錯糾錯碼的方式對DES算法進行了加固,使其具備了對單粒子翻轉(zhuǎn)(SEUs)容錯的能力,同時該設(shè)計方案具有較高的吞吐率。
4
圖1是現(xiàn)有的DES算法加速器結(jié)構(gòu)圖。圖2是現(xiàn)有的DES算法加速器單輪運算模塊的結(jié)構(gòu)圖。圖3是現(xiàn)有的DES算法加速器的S盒運算的結(jié)構(gòu)圖。圖4是本發(fā)明的總體結(jié)構(gòu)圖。圖5是本發(fā)明涉及的DES加密運算模塊的結(jié)構(gòu)圖。圖6是本發(fā)明涉及的初始模塊的結(jié)構(gòu)圖。圖7是本發(fā)明涉及的單輪運算模塊的結(jié)構(gòu)圖。圖8是本發(fā)明涉及的表決器的結(jié)構(gòu)圖。圖9是本發(fā)明涉及的輸出模塊的結(jié)構(gòu)圖。
具體實施例方式圖1為現(xiàn)有的DES算法加速器的結(jié)構(gòu)圖。現(xiàn)有的DES算法加速器模塊由初始模塊、 16個輪函數(shù)模塊和輸出模塊組成,初始模塊包括明文初始置換IP和密鑰初始置換PC-I,輸出模塊主要完成IF1操作得到密文。首先對初始模塊進行說明,IP操作是對64位的明文做一個置換,得到新的64位明文,分成32位的左右兩個部分Ltl和Rtl送給第1個輪函數(shù)模塊。PC-I操作是對64位密鑰, 去除作為奇偶校驗位的第8、16、24、32、40、48、56、64位,剩下的56位作為有效密鑰,并做一次置換得到新的56位密鑰,分成觀位的左右兩個部分Ctl和Dtl送給第1個輪函數(shù)模塊。16個輪函數(shù)模塊如圖2所示,之后進行介紹。以下對輸出模塊進行說明。輸出模塊將第16輪的32位的L16和R16拼接為64位,然后進行IF1操作,得到密文。IF1與IP互為逆操作,即對序列S有JpllPtS]] = IP[IF1 [S]] = S0圖2為現(xiàn)有的DES算法加速器單輪運算模塊的結(jié)構(gòu)圖。每個輪函數(shù)模塊由明文處理模塊和密鑰調(diào)度模塊組成。明文處理模塊完成以下操作①E/P擴展,將32位的Rp1擴展擴充為48位;②將E/P擴展得到的48位序列與48位的子密鑰進行異或操作,子密鑰由密鑰調(diào)度模塊生成;③S盒運算,對異或的結(jié)果進行S盒運算操作,得到32位結(jié)果,S盒運算在后面介紹;④P盒置換,把32位序列轉(zhuǎn)化為新的32位序列;⑤上一輪的左半部分Lp1 與P盒置換后的結(jié)果進行異或得到本輪的右半部分氏,本輪的左半部分直接由上一輪的右半部分得到,即Li = Ri^15Ri = I^1 KRp1,Ki)。以上① ④步稱為Feistel函數(shù),即圖1中所示的f函數(shù)。子密鑰生成模塊主要有兩個操作,即循環(huán)移位操作LS以及壓縮置換PC-2。 每一輪中,將左半部分(;和右半部分Di同時進行向左循環(huán)移位操作LS,移位位數(shù)為1位或者2位,移位之后的左右兩個部分Ci+1和Dw分別送往下一輪子密鑰的生成過程。將循環(huán)移位后的兩個觀位拼接為56位,再進行密鑰選取即壓縮置換PC-2,生成本輪的48位的子密鑰K”圖3為現(xiàn)有的DES算法加速器的S盒運算的結(jié)構(gòu)圖。S盒運算是DES算法的核心, 它是算法中唯一的非線性部分,是算法安全的關(guān)鍵。如圖3所示,8個S盒每個S盒輸入為 6位,輸出位4位,整體上S盒運算輸入為48位,輸出為32位。輸入的6位中的第1位和第 6位表示S盒查找表的行數(shù),中間四位表示S盒查找表的列數(shù),通過查找S盒中對應(yīng)的數(shù)值得到輸出的4位二進制數(shù)。圖4為本發(fā)明的總體結(jié)構(gòu)圖。本發(fā)明由讀入模塊、存儲模塊、DES加密運算模塊以及自動機控制模塊組成。讀入模塊將密鑰讀入存儲模塊,DES加密運算模塊從存儲模塊中取得數(shù)據(jù)進行加密運算,并將結(jié)果寫回至存儲模塊,以上動作都由自動機控制模塊進行控制。圖5本發(fā)明涉及的DES加密運算模塊的結(jié)構(gòu)圖。DES算法加速器模塊由初始模塊、 16個輪函數(shù)模塊和輸出模塊組成,初始模塊包括明文初始置換IP和密鑰初始置換PC-I,輸出模塊主要完成IP—1操作得到密文。與現(xiàn)有的DES算法加速器的主要不同之處在于,在初始模塊、16個輪函數(shù)模塊和輸出模塊都進行了容錯加固,初始模塊和輸出模塊采用的是三模冗余(TMR)的方式,16個輪函數(shù)模塊采用漢明碼進行檢錯糾錯。在DES加密運算模塊中每一輪的運算結(jié)果用寄存器暫存,實現(xiàn)了 DES加密運算的全流水,從而達到較高的吞吐率。用Xilinx Virtex 5系列的FPGA芯片設(shè)計實現(xiàn)該加密模塊,可以達到9Gbps的吞吐率。圖6為本發(fā)明涉及的初始模塊的結(jié)構(gòu)圖。該模塊與現(xiàn)有的DES算法加速器的初始模塊類似,所不同的是本發(fā)明涉及的初始模塊進行了容錯加固,即對IP和PC-I實現(xiàn)了三模冗余。如圖6所示,對64位的明文,同時做三份IP操作,然后將三份結(jié)果送往表決器 (voter)進行表決判斷,表決器的結(jié)果即為IP操作的結(jié)果,分為左右兩個部分Ltl和Rtl送給第1個輪函數(shù)模塊。類似的,對64位的密鑰,同時做三份PC-I操作,然后將三份結(jié)果送往表決器進行表決判斷,表決器的結(jié)果即為PC-I操作的結(jié)果,分為左右兩個部分Ctl和Dtl送給第1個輪函數(shù)模塊。表決器通常采用多數(shù)表決的方式,其相關(guān)內(nèi)容將在后面進行介紹。圖7為本發(fā)明涉及的單輪運算模塊的結(jié)構(gòu)圖。該模塊與現(xiàn)有的DES算法加速器單輪運算模塊類似,所不同的是本發(fā)明涉及的單輪運算模塊采用漢明碼進行檢錯糾錯,實現(xiàn)了寄存器對SEUs的容錯。在單輪運算模塊中,明文處理模塊的結(jié)果左半部分Li和右半部分Ri均為32位,密鑰處理模塊的結(jié)果左半部分Ci和右半部分Di均為觀位,它們都用寄存器暫存并作為輸入傳遞給下一個單輪運算模塊。在寄存器的輸入,進行漢明編碼,而在寄存器的輸出,即下一個單輪運算模塊的輸入進行漢明解碼。根絕漢明編碼理論,設(shè)數(shù)據(jù)位為k 位,檢驗位為r位,需滿足 -l彡k+r。因而,寄存器Li和氏的碼字為(38,32),寄存器Ci 和DiW碼字為(34,觀),它們的檢驗位均為6位。漢明編碼可以實現(xiàn)發(fā)現(xiàn)2位錯,糾正1位
講
T曰ο圖8為本發(fā)明涉及的表決器的結(jié)構(gòu)圖。本發(fā)明采用最為常用的多數(shù)表決方式,也即在三模冗余中,如果有兩個或者兩個以上相同,則認定為正確結(jié)果。表決器的結(jié)構(gòu)如圖8 所示,只使用簡單的與門和或門就能實現(xiàn)。對于結(jié)果A、B、C,表決器的輸出為Z = AB+BC+AC。圖9為本發(fā)明涉及的輸出模塊的結(jié)構(gòu)圖。與現(xiàn)有的DES算法加速器的輸出模塊類似,所不同的是本發(fā)明涉及的輸出模塊對IF1用三模冗余的方式進行了容錯加固。輸出模塊進行的操作時將第16輪的32位的L16和R16拼接為64位,然后同時做三份IP—1操作,將三份結(jié)果送往表決器進行表決判斷,表決器的結(jié)果即為IF1操作的結(jié)果,即64位的密文。
權(quán)利要求
1.一種容錯的DES算法加速器,其特征在于,該加速器為一種采用三模冗余(TMR)和漢明糾錯碼的方法,實現(xiàn)一種對單粒子翻轉(zhuǎn)(SEUs)容錯的DES算法加速器,包括讀入模塊、存儲模塊、DES加密運算模塊以及自動機控制模塊,數(shù)據(jù)的處理流程分為如下幾個步驟(一)讀入模塊將密鑰讀入存儲模塊,在FPGA里存儲模塊可以用RAM來實現(xiàn);(二)DES加密運算模塊從存儲模塊中取得密鑰,進行加密運算;(三)在加密完成之后,DES加密運算模塊將加密得到的密文寫回至存儲模塊。
2.根據(jù)權(quán)利要求1所述的一種容錯的DES算法加速器,其特征在于,數(shù)據(jù)的處理步驟在自動機控制模塊的控制之下進行,容錯功能的實現(xiàn)是在DES加密運算模塊中。
3.根據(jù)權(quán)利要求1所述的一種容錯的DES算法加速器,其特征在于,DES加密運算模塊包括初始模塊、16個輪函數(shù)模塊和輸出模塊,初始模塊包括明文初始置換IP模塊和密鑰初始置換PC-I模塊,輸出模塊主要完成IF1操作得到密文,具體的數(shù)據(jù)處理流程分為如下幾個步驟(一)初始模塊與第1個輪函數(shù)模塊相連,它的輸入是64位明文以及64位的密鑰,把明文置換之后的結(jié)果分為左右兩個部分Ltl和Rtl,密鑰置換之后的結(jié)果分為左右兩個部分Ctl 和Dtl,均送給第1個輪函數(shù)模塊進行處理;(二)16個輪函數(shù)模塊采用級聯(lián)的方式相連,每個輪函數(shù)模塊由明文處理模塊和密鑰調(diào)度模塊組成;(三)輸出模塊在DES加密運算模塊的最后,它與第16個輪函數(shù)模塊相連,通過IP—1置換操作得到密文。
4.根據(jù)權(quán)利要求1所述的一種容錯的DES算法加速器,其特征在于,容錯功能的實現(xiàn)是在DES加密運算模塊中,對IP、PC-1和IP—1的容錯加固采用三模冗余的方式,即對輸入數(shù)據(jù)的每個位,都同時做三份運算,然后將結(jié)果用表決器進行表決,采用多數(shù)表決的方式,即有兩個或兩個以上結(jié)果相同,則認定為正確結(jié)果,16個輪函數(shù)模塊中,對每一輪的結(jié)果寄存器采用漢明碼來實現(xiàn)檢錯糾錯,在寄存器的輸入端設(shè)置漢明編碼器,輸出端設(shè)置漢明解碼器, 進行校驗和糾錯,之后該輸出作為下一輪運算的輸入進行后續(xù)運算。
全文摘要
本發(fā)明公開了一種容錯的DES算法加速器。該加速器為一種采用三模冗余(TMR)和漢明糾錯碼的方法,實現(xiàn)一種對單粒子翻轉(zhuǎn)(SEUs)容錯的DES算法加速器,包括讀入模塊、存儲模塊、DES加密運算模塊以及自動機控制模塊。DES加密運算模塊中,采用三模冗余的方式對IP、PC-1和IP-1的容錯加固。16個輪函數(shù)模塊中,對每一輪的結(jié)果寄存器采用漢明碼來實現(xiàn)檢錯糾錯。在寄存器的輸入端設(shè)置漢明編碼器,輸出端設(shè)置漢明解碼器,進行校驗和糾錯,之后該輸出作為下一輪運算的輸入進行后續(xù)運算。
文檔編號H04L9/06GK102355348SQ201110177489
公開日2012年2月15日 申請日期2011年6月28日 優(yōu)先權(quán)日2011年6月28日
發(fā)明者倪時策, 呂啟, 李榮春, 竇勇, 胡綿江 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)