專利名稱:基于fpga的超高速aes處理器及其實現方法
技術領域:
本發明屬于通信技術領域,更進一步涉及信息安全技術領域中的基于現場可編程門陣列(Field Programmable Gate Array, FPGA)的超高速高級加密標準(AdvancedEncryption Standard, AES)處理器及其實現方法。本發明在保證處理速度較高和資源占用最小的情況下,充分地利用了 FPGA編程的靈活性和硬件的可靠性,實現了對數據與信息的安全加密。本發明可以廣泛地適用于智能卡(smart card),手機銀行系統,ATM取款機中進行高級加解密,以確保數據與信息的安全。
背景技術:
隨著通信技術的發展,通信環境日趨復雜,與傳統的軟件加密方法相比,硬件加密具有計算速度快,成本低,效率高;性能可靠,安全性好,不易被攻擊等優勢。FPGA技術的優越點就是利用強有力的設計工具來縮短開發周期,提供豐富的片上資源,能夠并行處理數據,容易實現流水線結構,提高設計的靈活性,且升級方便,降低設計成本。憑借這些優點,采用速度更快、并行度更大的FPGA芯片來實現AES已成為必然趨勢。傳統的AES處理器是完全基于AES算法,逐輪地進行運算。并且在加密的每一輪運算中又嚴格地按照密鑰加、字節替換、行移位、列混合四個步驟依次進行,在解密的每一輪運算中又嚴格地按照逆行移位、逆字節替換、密鑰加、逆列混合四個步驟依次進行。這種方式雖然在實時專用處理器中得到了廣泛的應用,但在實現這種方式處理器的每一輪運算中,每一輪運算中有大量的移位、乘法、異或運算,從而增加了地址控制的難度和復雜度,其模塊的移植性比較低,占用FPGA大量的資源,增加處理器的開銷。記憶科技(深圳)有限公司申請的專利“一種實現AES加解密的方法及裝置”(申請號201210236963.2,申請公開號CN102801519A,
公開日為2012.11.28)是用傳統的方法設計AES處理器的,在加解密的每一輪運算中,嚴格按照傳統方法的四個步驟進行運算的,該專利通過使用了相同的寄存器緩存加密和解密輪運算的結果,并使用相同的邏輯實現S盒和逆S盒運算,實現了降低芯片面積以及功耗的目的。該專利申請存在三個不足之處。其一,該專利沒有對加解密提出好的優化方法,導致加解密步驟復雜。其二,該專利沒有避免對S盒、逆S盒和列混合、逆列混合步驟的計算,導致加解密過程不能保證數據的正確性和安全性。其三,該專利要對初始密鑰進行擴展,并且嚴格按照傳統的四個步驟進行運算的,導致加解密數據的速度有一定的限制,從而不能很好地滿足高速率應用場合的需要。Liakot Ali 教授等人的論文“Design of an ultra high speed AES processorfor next generation IT security,,(Liakot Ali, Ishak Aris, Fakir Sharif Hossain,Niranjan Roy.Design of an ultra high speed AES processor for next generationIT security [A].Computers and Electrical Engineering, 2011, 37:1160-1170.)提出了一種AES處理器裝置,該AES處理器裝置采用Altera公司的EP2SGX30DF780C3器件實現了 36.16Gbps的加密速率。該AES處理器裝置的加密模塊是完全基于查找表實現的,而在解密模塊的每一輪運算中,還是嚴格按照傳統的逆行移位(InShiftRow)、逆字節替換(InSubBytes)、逆列混合(InMixcolumn)、密鑰加(AddRoundKey)四個步驟進行運算。該篇論文存在以下三個不足之處:其一,沒有對加密提出更好的優化方法,導致這種方案實現的AES處理器對數據加密時,輸入和輸出之間有21個時鐘周期延遲;其二,沒有對AES處理器的存儲器模塊做進一步改善,導致AES處理器額外地多占用了 4K的只讀存儲器(Read OnlyMemory, ROM);其三,沒有對AES處理器解密模塊的內部結構做進一步改善,導致解密模塊比較復雜。
發明內容
本發明的目的在于克服上述現有技術的不足,解決了傳統AES處理器控制邏輯復雜、輸入與輸出之間延遲時間長、占用資源較多的問題,提出了一種計算速度更快、資源利用率更高、結構更簡單的基于FPGA的超高速AES處理器及其實現方法,以改善其實用性能。本發明基于FPGA的超高速AES處理器,包括接口存儲區緩沖模塊、控制模塊、AES加解密模塊、只讀存儲器查找表模塊、寄存器模塊、輸出模塊,所述接口存儲區緩沖模塊、AES加解密模塊通過數據總線和控制總線相連;所述只讀存儲器查找表模塊、寄存器模塊、控制模塊、輸出模塊通過數據總線和控制總線相連;其中:接口存儲區緩沖模塊,用于暫時存儲輸入數據總線上的數據;控制模塊,用于控制和協調AES加解密模塊的運算單元、只讀存儲器查找表模塊、寄存器模塊之間的數據傳輸以及控制輸出加密結果或者解密結果;AES加解密模塊,分別用于對明文的標準加密、對密文的標準解密;只讀存儲器查找表模塊,用于存儲加解密過程中的臨時數據,并把查找的結果送到數據總線上;寄存器模塊,用于存儲加解密過程中的擴展密鑰,并根據控制器的控制號把寄存器的數據送到數據總線上;輸出模塊,用于從加密模塊、解密模塊選擇輸出加密或者解密結果。本發明超高速AES處理器的實現方法,包括如下步驟:(I)初始化數據表依據字節替換表、逆字節替換表和加密模塊的擴展密鑰寄存器的數據,計算查找向量表、查找逆列向量表以及解密模塊的擴展密鑰寄存器數據。(2)初始設置用戶根據處理數據的速率計算出系統工作的時鐘頻率,把這個頻率的時鐘連接到處理器的時鐘端口,給系統一個復位信號使得處理器處于復位狀態。⑶接收數據將擬加解密的輸入數據序列暫存到接口存儲區緩沖模塊,在控制模塊的控制下,第一輪運算單元接收接口存儲區緩沖模塊輸出的數據序列。將加解密模塊的運算次數設定為I,完成初始化操作。(4)讀取數據在控制模塊的控制下,將加密模塊中與運算次數對應的擴展密鑰寄存器數據和解密模塊中與運算次數對應的擴展密鑰寄存器數據讀出來。(5)選擇數據的處理方式
5a)判斷運算次數是否等于1,如果是,執行步驟5b)的操作,否則,執行步驟5c)的操作;5b)從加密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與接口存儲區緩沖模塊輸出的數據同時送給與運算次數對應的運算單元,獲得加密模塊中與運算次數對應的運算結果;從解密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與接口存儲區緩沖模塊輸出的數據同時送給與運算次數對應的運算單元,獲得加密模塊中與運算次數對應的運算結果;5c)從加密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與與運算次數對應的查找列向量表輸出的數據同時送給與運算次數對應的運算單元,獲得加密模塊中與運算次數對應的運算的結果;從解密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與與運算次數對應的查找逆列向量表輸出的數據同時送給與運算次數對應的運算單元,得到解密模塊中與運算次數對應的運算的結果。(6)判斷加解密是否完成判斷運算次數是否等于11,如果是,則完成加解密數據,執行步驟(7)的操作;否貝IJ,未完成加解密數據,運算次數加I,執行步驟(4)的操作。(7)輸出結果輸出模塊接收來自加解密模塊運算的結果,在控制模塊的控制下,選擇輸出加密結果或者解密結果。本發明與現有技術相比,具有以下特點:第一,由于本發明中加解密模塊均采用優化后的算法,優化后的算法中一輪運算至多有兩個步驟,可有效地克服現有技術加解密模塊中在第2輪至第10輪的每一輪運算中都要進行四步操作的復雜性、模塊可移植性差的問題,使得本發明的存儲控制邏輯簡單,模塊的可移植性高。第二,由于本發明中加解密模塊均采用優化后的算法,加解密模塊的內部結構完全相同,可有效地克服現有技術中解密模塊復雜的問題,使得本發明的內部結構對稱,方便內部單元的布局布線。第三,由于本發明是完全基于查找表設計的,固化的查找表保證了系統數據不能輕易地被修改,可有效地克服現有技術在實用時容易被篡改的問題,使得本發明提高了可靠性;加解密模塊中擴展密鑰寄存器數據不同,本發明似乎是非對稱加密,但其實質是對稱加密,使得本發明提高了安全性能。通過查找固化的查找表,可有效地克服現有技術在實用時容易出現處理數據出錯的問題,使得本發明保證了系統的有效性。第四,由于本發明是完全基于硬件語言設計的,硬件語言的簡化使得本發明完成第一組數據加解密僅要10個時鐘延遲,有效地克服了現有技術中完成第一組數據加解密需要21個時鐘延遲問題,使得本發明有更好的實時性。第五,由于本發明充分地使用FPGA內部豐富的寄存器資源,有效的克服了現有技術中AES處理器額外地多占用了 4K ROM的問題,使得本發明提高了系統資源利用率和AES處理器的性價比。
圖1為本發明處理器的整體結構框圖;圖2為本發明處理器加解密模塊結構框圖;圖3為本發明處理器加解密模塊的一輪運算優化結構框圖;圖4為本發明處理器實現方法的流程圖;圖5為本發明處理器加解密仿真結果圖。
具體實施方式
:下面結合附圖對本發明做進一步的描述。參照附圖1對本發明的處理器的整體結構做進一步的描述。本發明的處理器包括接口存儲區緩沖模塊、控制模塊、AES加解密模塊、只讀存儲器查找表模塊、寄存器模塊、輸出模塊;接口存儲區緩沖模塊、AES加解密模塊通過數據總線和控制總線相連;只讀存儲器查找表模塊、寄存器模塊、控制模塊、輸出模塊通過數據總線和控制總線相連。接口存儲區緩沖模塊,用于暫時存儲輸入數據總線上的數據。接口存儲區緩沖模塊包括設置在加解密模塊前端緩沖區的四個隨機存儲器RAM ;每個RAM的32位輸入數據總線、輸出數據總線分別與外部數據輸入數據線、加解密模塊輸入數據線相連。本發明實施例中AES處理器每個時鐘能夠處理128比特數據,如果外部輸入的數據過快,AES處理器可能丟失數據,不能有效地處理數據;如果外部輸入的數據較慢,FPGA得不到充分的利用。為解決輸入數據總線與AES加解密數據處理寬度不同以及外設工作頻率與FPGA工作時鐘頻率不同這兩個矛盾,本發明AES處理器采用接口存儲區緩沖模塊實現對外部輸入的數據及內部待處理數據的暫時存儲,這樣在輸入數據過快時,確保數據不丟失,在輸入數據速率較慢時,FPGA可以被充分地利用。本發明AES處理器將四個RAM并列起來,每個RAM輸出的總線占32位,將128個時鐘下串行的128比特數據轉為一個時鐘下并行的128比特數據。控制模塊,用于控制和協調AES加解密模塊的運算單元、只讀存儲器查找表模塊、寄存器模塊之間的數據傳輸以及控制輸出加密結果或者解密結果。在控制模塊的控制下,當復位信號(reset)有效后,就能進行正常加解密工作;當控制信號(en_de)是高電平時,此時是加密模式,輸出總線(data_out)上的加密數據總比輸入總線(text)的數據晚10個時鐘;當控制信號(en_de)是低電平時,此時是解密模式,輸出總線(data_out)上的解密數據總比輸入總線(text)的數據晚10個時鐘。參照附圖2對本發明的處理器的加解密模塊做進一步的描述。AES加解密模塊,分別用于對明文的標準加密、對密文的標準解密;AES加解密模塊的128比特的輸入、輸出端口分別與接口存儲區緩沖模塊的輸出數據線、輸出控制模塊的輸入數據線相連;AES加解密模塊包括加密的11輪運算單元和解密的11輪運算單元;力口解密的11輪運算單元均以流水線的方式級聯。AES加密模塊第I輪運算單元只有密鑰加一個步驟,AES加密模塊的第2輪、第3輪、第4輪、第5輪、第6輪、第7輪、第8輪、第9輪以及第10輪運算單元均包括查找列向量表、密鑰加兩個步驟;AES加密模塊的第11輪運算單元包括字節替換、密鑰加兩個步驟;AES解密模塊第I輪運算單元只有密鑰加一個步驟,AES解密模塊的第2輪、第3輪、第4輪、第5輪、第6輪、第7輪、第8輪、第9輪以及第10輪運算單元均包括查找逆列向量表密鑰加兩個步驟;AES解密模塊的第11輪運算單元包括逆字節替換、密鑰加兩個步驟;加密模塊和解密模塊的內部結構完全相同。參照附圖3對本發明的處理器的加解密模塊中一輪優化步驟做進一步的描述。現有技術的加密算法中每一輪計算都是基于狀態矩陣的,每一輪計算的數學表達形式如下表1,其中1、j分別是字節替換表中的行數、列數;bu、S[au]是字節替換表中的第i行、第j列數據;Cw、Cu、(^、(^分別表示狀態矩陣中第I行第j列、第2行第j列、第3行第j列、第4行第j列對應的數據;‘、Cllj, d2j、d3J分別是C(lj、Cij, c2j、c3J與逆混合線性變換矩陣相乘后的數據,km I^ik2Pk3j、是當前一輪密鑰狀態矩陣中第I行第j列、第2行第j列、第3行第j列、第4行第j列對應的數據。表I現有技術的加密操作中每輪運算的數學表達形式
權利要求
1.一種基于FPGA的超高速AES處理器,包括接口存儲區緩沖模塊、控制模塊、AES加解密模塊、只讀存儲器查找表模塊、寄存器模塊、輸出模塊,所述接口存儲區緩沖模塊、AES加解密模塊通過數據總線和控制總線相連;所述只讀存儲器查找表模塊、寄存器模塊、控制模塊、輸出模塊通過數據總線和控制總線相連;其中: 所述接口存儲區緩沖模塊,用于暫時存儲輸入數據總線上的數據; 所述控制模塊,用于控制和協調AES加解密模塊的運算單元、只讀存儲器查找表模塊、寄存器模塊之間的數據傳輸以及控制輸出加密結果或者解密結果; 所述AES加解密模塊,分別用于對明文的標準加密、對密文的標準解密; 所述只讀存儲器查找表模塊,用于存儲加解密過程中的臨時數據,并把查找的結果送到數據總線上; 所述寄存器模塊,用于存儲加解密過程中的擴展密鑰,并根據控制器的控制號把寄存器的數據送到數據總線上; 所述輸出模塊,用于從加密模塊、解密模塊選擇輸出加密或者解密結果。
2.根據權利要求1所述的基于FPGA的超高速AES處理器,其特征在于,所述接口存儲區緩沖模塊包括設置在加解密模塊前端緩沖區的四個隨機存儲器RAM ;每個RAM的32位輸入數據總線、輸出數據總線分別與外部數據輸入數據線、加解密模塊輸入數據線相連。
3.根據權利要求1所述的基于FPGA的超高速AES處理器,其特征在于,所述AES加解密模塊的128比特的輸入、輸出端口分別與接口存儲區緩沖模塊的輸出數據線、輸出控制模塊的輸入數據線相連;AES加解密模塊包括加密的11輪運算單元和解密的11輪運算單元;加解密的11輪運算單元均以流水線的方式級聯;AES加密模塊第I輪運算單元只有密鑰加一個步驟,AES加密模塊的第2輪、第3輪、第4輪、第5輪、第6輪、第7輪、第8輪、第9輪以及第10輪運算單 元均包括查找列向量表、密鑰加兩個步驟;AES加密模塊的第11輪運算單元包括字節替換、密鑰加兩個步驟;AES解密模塊第I輪運算單元只有密鑰加一個步驟,AES解密模塊的第2輪、第3輪、第4輪、第5輪、第6輪、第7輪、第8輪、第9輪以及第10輪運算單元均包括查找逆列向量表、密鑰加兩個步驟;AES解密模塊的第11輪運算單元包括逆字節替換、密鑰加兩個步驟;加密模塊和解密模塊的內部結構完全相同。
4.根據權利要求1所述的基于FPGA的超高速AES處理器,其特征在于,所述只讀存儲器查找表模塊,包括加密模塊的字節替換查找表、查找列向量表,解密模塊的字節逆替換查找表以及查找逆列向量表四種查找表;其中查找列向量表包括查找列向量表1、查找列向量表2、查找列向量表3、查找列向量表4,查找逆列向量表包括查找逆列向量表1、查找逆列向量表2、查找逆列向量表3、查找逆列向量表4 ;字節替換查找表、字節逆替換查找表的輸入、輸出端口分別與AES加解密模塊中第10輪運算單元的輸出、AES加解密模塊中第11輪運算單元的輸人相連;在AES加解密模塊的第2輪、第3輪、第4輪、第5輪、第6輪、第7輪、第8輪、第9輪、第10輪運算單元中,每一輪的查找列向量表和查找逆列向量表的輸出、輸入端口通過數據線分別與AES加解密模塊中當前一輪運算單元的輸入、AES加解密模塊中上一輪運算單元的輸出相連。
5.根據權利要求1所述的基于FPGA的超高速AES處理器,其特征在于,所述寄存器模塊包括加密模塊的11個擴展密鑰寄存器和解密模塊的11個擴展密鑰寄存器;加密模塊的每一輪擴展密鑰寄存器和解密模塊的每一輪擴展密鑰寄存器通過數據總線分別與每一輪運算單元的輸入端口相連。
6.根據權利要求1所述的基于FPGA的超高速AES處理器,其特征在于,所述輸出模塊的256比特輸入端口分別與加密模塊輸出的128比特數據線和解密模塊輸出的128比特數據線相連;輸出模塊的128比特的輸出,通過數據總線與處理器的輸出相連。
7.基于FPGA的超高速AES處理器實現方法,包括如下步驟: (1)初始化數據表 依據字節替換表、逆字節替換表和加密模塊的擴展密鑰寄存器的數據,計算查找向量表、查找逆列向量表以及解密模塊的擴展密鑰寄存器數據; (2)初始設置 用戶根據處理數據的速率計算出系統工作的時鐘頻率,把這個頻率的時鐘連接到處理器的時鐘端口,給系統一個復位信號使得處理器處于復位狀態; (3)接收數據 將擬加解密的輸入數據序列暫存到接口存儲區緩沖模塊,在控制模塊的控制下,第一輪運算單元接收接口存儲區緩沖模塊輸出的數據序列;將加解密模塊的運算次數設定方I,完成初始化操作; (4)讀取數據 在控制模塊的控制下,將加密模塊中與運算次數對應的擴展密鑰寄存器數據和解密模塊中與運算次數對應的擴展密鑰寄存器數據讀出來; (5)選擇數據的處理方式 5a)判斷運算次數是否等于1,如果是,執行步驟5b)的操作,否則,執行步驟5c)的操作; 5b)從加密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與接口存儲區緩沖模塊輸出的數據同時送給與運算次數對應的運算單元,獲得加密模塊中與運算次數對應的運算結果;從解密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與接口存儲區緩沖模塊輸出的數據同時送給與運算次數對應的運算單元,獲得加密模塊中與運算次數對應的運算結果; 5c)從加密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與與運算次數對應的查找列向量表輸出的數據同時送給與運算次數對應的運算單元,獲得加密模塊中與運算次數對應的運算的結果;從解密模塊中讀出與運算次數對應的擴展密鑰寄存器數據,將讀出的數據與與運算次數對應的查找逆列向量表輸出的數據同時送給與運算次數對應的運算單元,得到解密模塊中與運算次數對應的運算的結果; (6)判斷加解密是否完成 判斷運算次數是否等于11,如果是,則完成加解密數據,執行步驟(7)的操作;否則,未完成加解密數據,運算次數加I,執行步驟(4)的操作; (7)輸出結果 輸出模塊接收來自加解密模塊運算的結果,在控制模塊的控制下,選擇輸出加密結果或者解密結果。
8.根據權利要求7所述的基于FPGA的超高速AES處理方法,其特征在于,所述步驟(I)中查找列向量表的數據按照以下步驟獲得:第一步,將查找列向量表中數據的計算次數設定為I; 第二步,從字節替換表中讀出與計算次數對應的數據,將讀出的數據分別與
τ、
τ、
τ、
τ 相乘獲得四個數據,再將獲得的四個數據分別存儲到查找向量表1、查找向量表2、查找向量表3、查找向量表4中與計算次數對應的存儲空間; 第三步,判斷查找列向量表中數據的計算次數是否等于256,如果是,則完成了四個查找向量表數據的計算;否則,計算次數加1,執行第二步。
9.根據權利要求7所述的基于FPGA的超高速AES處理方法,其特征在于,所述步驟(I)中查找逆列向量表的數據按照以下步驟獲得: 第一步,將查找逆列向量表中數據的計算次數設定為I ; 第二步,從逆字節替換表中讀出與計算次數對應的數據,將讀出的數據分別與
T、
T、
τ、
T 相乘獲得四個數據,再將獲得的四個數據分別存儲到查找逆向量表1、查找逆向量表2、查找逆向量表3、查找逆向量表4與計算次數對應的存儲空間; 第三步,判斷查找逆列向量表中數據的計算次數是否等于256,如果是,則完成了四個查找逆向量表數據的計算;否則,計算次數加1,執行第二步。
10.根據權利要求7所述的基于FPGA的超高速AES處理方法,其特征在于,所述步驟(I)中解密模塊的擴展密鑰寄存器數 據按照以下步驟獲得: 第一步,將解密模塊的擴展密鑰寄存器數據的計算次數設定為2 ; 第二步,從加密模塊的與計算次數對應的擴展密鑰寄存器中讀出數據,將讀出的數據與逆混合線性變換矩陣相乘獲得I個128比特的數據,再將獲得的數據存儲到解密模塊中與計算次數對應的擴展密鑰寄存器; 第三步,判斷解密模塊的擴展密鑰寄存器數據的計算次數是否等于10,如果是,執行第四步;否則,計算次數加1,執行第二步; 第四步,從加密模塊的第I個、第11個擴展密鑰寄存器中讀出數據,將讀出的數據直接分別存儲到解密模塊的第I個、第11個擴展密鑰寄存器。
全文摘要
本發明公開了一種基于FPGA的超高速AES處理器及其實現方法,本發明的AES處理器包括接口存儲區緩沖模塊、控制模塊、AES加解密模塊、只讀存儲器查找表模塊、寄存器模塊、輸出模塊。本發明處理器實現方法的具體步驟為1初始化數據表;2、初始設置;3、接收數據;4、讀取數據;5、選擇數據的處理方式;6、判斷加解密是否完成;7、結果輸出。本發明主要解決現有技術AES處理器控制復雜,模塊可移植性差、可靠性和安全性不高以及處理速度慢的問題;使用改進的算法和基于查找表的方法。本發明AES處理器的每級結構固定,控制邏輯簡單,模塊可移植性強,很適合在單片FPGA中實現,同時可以獲得高速度、高精度的特性。
文檔編號H04L9/06GK103152165SQ20131004703
公開日2013年6月12日 申請日期2013年1月25日 優先權日2013年1月25日
發明者劉景偉, 蔡鑫, 孫蓉, 李勇, 白寶明 申請人:西安電子科技大學