一種AES密碼算法的實現_第1頁
一種AES密碼算法的實現_第2頁
一種AES密碼算法的實現_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一種AES密碼算法的實現密碼學是保障信息安全的核心技術,應用涉及軍事、國防、商貿及人們日常生活的各個方面。2001年美國標準技術研究所決定用AES算法逐漸取代日益不安全的56bit密鑰長度的數據加密標準(DES)算法。AES算法是迭代分組密碼算法,分組長度為128bit,而密鑰長度可為128bit、192bit、256bit,其對應不同的密鑰長度相應的迭代循環次數為10輪、12輪、14輪。現實現的是128bit的AES算法[1-2]。一種AES算法實現是采用輪展開的流水線結構[3],吞吐量很大可達到10Gb/s量級,但消耗大量的邏輯面積。考慮在資源少的FPGA上實現AES算法,能滿足低端應用的加、解密速度一般不超過100Mb/s的需求。現設計采用順序結構[3],多輪加密共用一個輪運算結構,加密模塊和解密模塊共用一個密鑰擴展模塊,能保持較高加解密速率,同時節省了邏輯面積,在50MHz時鐘下加解密速率可達530Mb/s。1AES算法描述AES算法中的字節表示為有限域上的元素,并在有限域上定義加法和乘法兩種運算,運算的基本單位是字節和雙字(4個字節)。AES算法將128位的中間結果和密鑰都分成16個字節,構成4×4以字節為元素的狀態矩陣,AES在加解密過程中就是以狀態矩陣為操作對象的。加密算法中每一次輪操作都由字節替換、行移位、列混淆和輪密鑰加這四個函數組成,最后一次輪操作不含列混淆操作。2在FPGA上實現AES算法2.1頂層結構圖該設計的頂層結構圖如圖1所示,由控制模塊、加密模塊、解密模塊、密鑰擴展模塊、隨機存儲器(RAM)和FIFO組成。接口采用16位并行數據總線結構。加密數據流向為:明文數據通過數據總線寫入16位入128位出的FIFO緩存;由控制模塊啟動AES加密模塊進行一次加密運算;運算完成輸出128bit密文存入128位入16位出的FIFO中。解密過程與之相同。加密模塊和解密模塊完全獨立,保證模塊能同時進行加密和解密運算,以滿足快速雙向保密通信的需求。

2.2加解密部分設計2.2.1加密模塊

由于輸入8次16位數據才能提供一個128bit明文,這一過程至少需要8個時鐘,因此采用邏輯面積較大的多輪展開流水線結構方式意義不大。該設計采用多輪運算復用一個輪操作結構的順序方式,設計原理圖如圖2所示。輪運算包括輪密鑰加、字節替換、行移位和列混淆4個部分。其中,輪密鑰加只是輪數據與輪密鑰進行異或運算,結構比較簡單;行移位也只是簡單的邏輯連線,幾乎不產生時延并且幾乎不耗邏輯資源。字節替換如果采用模乘求逆運算[4]實現,則邏輯延時較長,速度較慢。為加快速度,采用時延小的基于只讀存儲器(ROM)查找方式的S盒結構,即輸入8bit數據作為地址而相應數據輸出則為字節替換后的8bit數據。S盒結構若采用基于塊存儲的查找表(LUT)來實現,一個輪運算中16個S盒將占用16×128個LUT,占用邏輯資源較大。可采用FPGA內部集成的塊RAM來實現S盒。列混淆是系數在有限域上的四次多項式矩陣乘法,輸入列向量(X0,X1,X2,X3),輸出列向量(Y0,Y1,Y2,Y3),加密過程是在上乘以01、02、03、01,解密過程是乘以09、0E、0B、0D。為了優化用FPGA邏輯實現,采用一個xtime函數來實現上的乘02運算,對輸入的一個字節b做以下變換[5]:xtime={b[6:0],1'b0}^(8'h1b&{8{b[7]}})。則列混淆在上所有矩陣乘法就

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論