專利名稱:基于容錯的idea全流水硬件加密方法
技術領域:
本發明涉及一種可容錯的全流水的高吞吐率IDEA分組密碼算法的FPGA實現方案和IDEA運算器件。
背景技術:
IDEA算法是由Xue jia Lai和James Massey于1990年提出的一種分組密碼算法。 它開始被叫做 PES (Proposed Encryption Mandard,推薦加密標準)。在 Biham 和 Shamir 演示了差分密碼分析之后,第二年設計者為抗此攻擊,增加了密碼算法的強度,把新的算法稱之為 IPES (Improved Proposed Encryption Mandard,改進型推薦加密標準)。IPES 在 1992年又更名為 IDEAanternational Data Encryption Algorithm,國際數據加密算法)。 它是目前已公開的最好和最安全的分組密碼算法。IDEA算法是一個分組長度為64位的分組密碼算法,密鑰長度為1 位,分為八輪進行迭代計算。容錯技術主要通過冗余技術來實現,硬件容錯主要實現方式有三種硬件冗余、信息冗余、時間冗余。最常用的冗余方式是三模冗余,它采用三個相同的模塊接受同一個輸入,產生的三個結果送至表決器進行表決。通常采用多數表決方式,即有兩個或兩個以上結果相同,則認定為正確結果。信息冗余最常見的形式是利用編碼技術進行檢錯和糾錯,增加校驗位使原來不相關的數據位變得相關,利用這種相關性可以在數據的處理、存儲、傳輸過程中實現檢錯和糾錯。IDEA分組加密算法在信息安全諸多方面都得到廣泛的應用。而隨著FPGA技術的發展和成熟,在FPGA上實現加密算法不僅能提高計算速度,而且可以帶來密碼安全性的全面提升。IDEA算法由于其多輪數的分組計算特點,計算規模龐大,其硬件的容錯設計需要消耗大量的硬件資源,在吞吐率方面也會造成一定的影響,因此具有容錯功能的IDEA高吞吐率硬件實現方法比較罕見,現有的加速器設計中還未發現有利用FPGA芯片實現帶有容錯功能的IDEA算法加速器。
發明內容
本發明旨在設計一種具有容錯能力且具有超高吞吐率的IDEA硬件加密方法。在對IDEA加密算法進行了算法分析的基礎上,提供了一種全流水的硬件運算結構,可以檢測并糾正單粒子翻轉(SEU)錯誤,檢測雙粒子翻轉錯誤。本發明主要包括兩個步驟首先是對IDEA加密過程的8輪107級計算進行流水全展開,其中每一級可以在一個時鐘周期內完成。然后,在根據SEU可能發生的位置進行海明碼容錯加固。具體來說,在每次計算結果產生時對結果進行海明碼編碼;在每次計算需要操作數時,對寄存器中已編碼的數據進行海明碼解碼,從而使得數據在寄存器傳輸過程中具有容錯能力。其次,對運算部件進行三模冗余加固,即將運算的結構單元復制三份,同時進行計算,采用多數表決的方式進行仲裁,將多數相同的結果作為最后的計算結果。這點是確保數據在計算過程中具有容錯能力。
3
本發明的優點在于IDEA運算過程不需要復雜的控制邏輯,整個流水線中僅利用一個使能信號來確定數據有效性,極大地簡化了控制邏輯。設計采用數據驅動的方式進行計算,將控制邏輯的出錯的幾率降到最低,并極大地提高了算法的吞吐率。根據本發明,每一輪運算都實現高度容錯的IDEA加密。8輪107級流水線最高可以達到平均一個節拍處理完一個64bit文本的吞吐率。在xlinx ISE 10. 1平臺下布線所得頻率為202MHz,吞吐率為 13Gbps。
圖1本發明中系統總體結構2 —般的IDEA算法輪循計算流程3 —般的IDEA算法模乘運算的計算流程4本發明中IDEA算法加速器的流水線示意5本發明中IDEA算法加速器容錯流水線設計6本發明中表決器的設計圖
具體實施例方式附圖2中的主要有三種運算部件,分別是異或、模216力卩、模216+1乘。其中圓加符號代表16位異或運算,即將兩個16位的數據進行按位異或運算。方加符號代表模216加運算,將兩個16位數據進行相加,而后對計算結果進行16位取模,得到最終的計算結果。而圓點符號代表了模216+1乘運算。模乘運算流程將在后面具體介紹。附圖2中X代表待加密的明文和中間密文,而Y代表加密后的密文,Z代表加密用的密鑰。字母右下角的數字代表其分組。例如Y1就代表密文的第一組,因為每組是16位, 所以即為密文的前16位比特。首先,對一般的IDEA加密硬件實現的結構進行簡要說明。參照圖1,一般的IDEA硬件加密實現結構主要由讀入、輸出、迭代計算模塊、最后轉換計算模塊和控制模塊組成。其中讀入模塊負責與控制端的主機內存進行交互,取得待加密的明文和加密所使用的密鑰。如果待加密的原始數據沒有進行過分塊處理,這一模塊還可以對數據進行分塊。其分塊方式為,以64bit為單位分組對待加密的文本進行處理,每一個分組又被劃分為4個16bit的子分組。迭代計算模塊則進行IDEA加密的輪運算操作, 經過八輪的迭代計算,將最后的中間密文送入到最后轉換計算模塊,計算出最后的密文,再將結果傳遞給輸出模塊進行輸出。控制器模塊負責協調各功能模塊之間的數據傳遞、狀態控制等方面。參照圖2,對一般的IDEA輪詢加密結構進行說明。在一般的IDEA硬件加密設計中,負責進行加密輪運算的單元是被循環利用的,一塊數據在該單元里循環8次之后才能得到最后轉換前的中間密文,然后經過轉換之后得到最后的密文。如圖2,64位數據分組成 4個16位子分組X1; &,X3, X4。這4個子分組成為算法的第一輪的輸入,總共由八輪。在每一輪中,這4個子分組相互間相異或、相加、相乘,且與6個16位子密鑰相異或、相加、相乘。在輪與輪之間,第二和第三個子分組交換。最后在輸出變換中4個子分組與4個子密鑰進行運算。在每一輪的末尾,將結果形成四個新的子分組,將中間兩個分組交換,作為下一輪的輸入。經過八輪運算之后,由一個最終的輸出變換,最后將這4個子分組重新連接到一起產生密文。子密鑰的產生原理如下首先,將1 位密鑰分成8個16位密鑰,這是算法的第一批子密鑰(其中第一輪6個,第二輪頭兩個);然后密鑰向左環移25位后再分成8個子密鑰,開始4個用在第二輪,后面4個用在第三輪,密鑰再次向左環移25位產生另外8個子密鑰,如此進行直到算法結束。下面說明IDEA算法中的模乘運算過程。參照圖3,模乘運算首先對計算的兩個16 位數進行乘法運算,將乘法結果分為高16位和低16位。對高16位和低16位數據進行比較和減法運算,再將兩個運算結果相加,再將最后的結果同開始輸入的兩個16位數據,以及兩個16位數據分別減1得到的新數據這五個數據進行選擇,得到最終的模乘結果。然后,在一般的IDEA加密硬件實現的基礎上,下面主要說明本發明中迭代計算模塊和最后轉換計算模塊的全流水實現的工作流程。參照圖4,在本發明中,對數據分組進行8輪加密迭代計算和最后的轉換計算總共被分解為107級流水線。根據數據流圖,為了充分開發算法的并行性,把能夠同時執行的運算放入同一級流水線上計算。最后得到每輪的迭代計算需要7步運算,而由于模乘運算需要3個時鐘周期,所以每一輪迭代計算需要流水線級數為13級。IDEA算法硬件加速器總共需要的流水線級數為13*8+3 = 107級。在流水線實現時,每級流水線利用寄存器將輸出數據寄存,對于跨一級流水線的計算數據,利用寄存器進行傳遞寄存。這樣使得數據可以正確地在流水線中傳遞,并通過數據有效位標志本節拍的計算結果是否有效。數據有效位在初始化時置0,當輸入模塊接收到有效明文之后,將數據有效位置高。在流水線中將數據有效位每級傳遞寄存,并將計算出的密文和該密文的有效位一起送入輸出模塊中。這樣在保證流水線不停頓的情況下,完成數據的有效識別和寫回操作。在輸出模塊中,如果有效位為 0,則將結果舍棄。對于流水線的控制,用流水線開始使能信號和結束使能信號,使能信號也在流水線中傳遞寄存,這樣用最少的控制邏輯實現了數據驅動的流水線計算模式,使得流水線控制邏輯精簡并且使得流水線保持較高的吞吐率。參照圖5,為了使本發明的IDEA加密算法加速器具有較高的抗災難能力,我們在流水線中加入了容錯設計。容錯設計主要包括兩個方面一是對流水線中寄存器寄存數據進行漢明編碼,通過信息冗余的方式對數據進行容錯設計;二是對流水線中所有的運算單元實現三模冗余,通過一個三輸入的表決器實現對計算結果的容錯設計。首先說明我們第一步容錯設計。對于流水線數據的寄存,為了防止在流水寄存過程中出現比特翻轉的情況,我們在寄存器的輸入端進行漢明編碼,而在寄存器的輸出端進行漢明解碼。由于加速器中流水寄存級數較深,為了提升加速器的效率并且降低資源占用率,設計時采用只對計算單元輸出的、即將寄存到寄存器中的數據進行編碼,對從寄存器取出、即將送入運算單元進行計算的數據進行解碼。而對流水傳遞寄存的中間數據不進行任意操作。如果前面的寄存器已經解碼過,而這個數據又必要繼續流水寄存,那么在下一個流水寄存前必須進行漢明編碼。這主要因為在中間寄存的數據發聲比特翻轉的可能性較低, 并且在最后使用數據之前進行解碼相對于中間每次編解碼來說,實現的功能和效果是完全一樣的。這樣實現的優勢在于進一步地提升了算法容錯加速器的效率及吞吐率。根據漢明編碼理論,設數據位為k位,檢驗位為r位,需滿足條件 -l >k+r。由于IDEA算法容錯加速器中每個寄存器都寄存16位數據,所以碼字為01,16),其中檢驗位為5位。對于子密鑰在產生時進行編碼,存入寄存器,并且在使用時進行解碼。漢明編碼可以檢測2位比特翻轉錯誤,檢測并能糾正1位比特翻轉錯誤。然后再說明第二步容錯設計。第二步容錯設計即對流水線中每一個計算單元進行三模冗余,并在最后通過一個按位三模表決器確定計算結果。按位三模表決器的原理是如果三個副本中的同一位之間有不同,則選擇多數派進行輸出。這樣的設計效果是,如果計算結果一個副本發生了數位錯誤,只要另外兩個副本對應的數據位不發生錯誤,仍然可以輸出正確結果。本發明采用最為常用的多數表決方式,也即在三模冗余中,如果有兩個或者兩個以上相同,則認定為正確結果。表決器的結構如圖6所示,通過與門和或門實現。對于結果A、B、C,表決器的輸出為Z = AB+BC+AC。最后,當計算結果從最后一級流水線中流出,如圖4所示,在第107個節拍,流水線末端根據使能信號的取值決定是否輸出結果,如果為1則認為輸出的子密文分組是有效輸出,對子密文進行拼接之后輸出64位的明文。
權利要求
1.基于容錯的IDEA全流水硬件加密方法,其特征在于,該方法包括兩個步驟首先在每次計算結果產生時對結果進行海明碼編碼,在每次計算需要操作數時,對寄存器中已編碼的數據進行海明碼解碼,從而使得數據在寄存器傳輸過程中具有容錯能力;其次,對運算部件進行三模冗余加固,即將運算的結構單元復制三份,同時進行計算,采用多數表決的方式進行仲裁,將多數相同的結果作為最后的計算結果。
2.根據權利要求1所述的基于容錯的IDEA全流水硬件加密方法,其特征在于,對數據分組進行8輪加密迭代計算和最后的轉換計算總共被分解為107級流水線,把能夠同時執行的運算放入同一級流水線上計算,在流水線實現時,每級流水線利用寄存器將輸出數據寄存,對于跨一級流水線的計算數據,利用寄存器進行傳遞寄存,這樣使得數據正確地在流水線中傳遞,并通過數據有效位標志本節拍的計算結果是否有效。
3.根據權利要求1所述的基于容錯的IDEA全流水硬件加密方法,其特征在于,容錯設計包括兩步驟一是對流水線中寄存器寄存數據進行漢明編碼,通過信息冗余的方式對數據進行容錯設計;二是對流水線中所有的運算單元實現三模冗余,通過一個三輸入的表決器實現對計算結果的容錯設計。
4.根據權利要求1所述的基于容錯的IDEA全流水硬件加密方法,其特征在于,第一步容錯設計為對于流水線數據的寄存,為了防止在流水寄存過程中出現比特翻轉的情況,在寄存器的輸入端進行漢明編碼,而在寄存器的輸出端進行漢明解碼。
5.根據權利要求1所述的基于容錯的IDEA全流水硬件加密方法,其特征在于,第二步容錯設計為對流水線中每一個計算單元進行三模冗余,并在最后通過一個按位三模表決器確定計算結果。
全文摘要
本發明公開了基于容錯的IDEA全流水硬件加密方法。該方法包括兩個步驟首先在每次計算結果產生時對結果進行海明碼編碼,在每次計算需要操作數時,對寄存器中已編碼的數據進行海明碼解碼,從而使得數據在寄存器傳輸過程中具有容錯能力;其次,對運算部件進行三模冗余加固,即將運算的結構單元復制三份,同時進行計算,采用多數表決的方式進行仲裁,將多數相同的結果作為最后的計算結果。該方法整個流水線中僅利用一個使能信號來確定數據有效性,極大地簡化了控制邏輯。
文檔編號H04L9/06GK102355349SQ20111017750
公開日2012年2月15日 申請日期2011年6月28日 優先權日2011年6月28日
發明者倪時策, 呂啟, 李榮春, 竇勇, 胡綿江 申請人:中國人民解放軍國防科學技術大學