摘 要:DES算法在信息安全領域扮演著重要的角色,采用軟件實現DES算法速度慢,不能滿足一些高速應用領域的要求,所以采用硬件實現的方法,在FPGA上實現DES算法,速度非常快。另一個創新之處在于采用Nios Ⅱ軟核作為整個加密系統的控制器,通過Nios Ⅱ軟核控制串口收發數據以及DES模塊的加密過程,Nios Ⅱ軟核的最大特點是用戶可以靈活定制,這就使得整個系統的擴展性和靈活性非常好,具有很好的應用前景。
關鍵詞:DES;Nios Ⅱ;定制;密鑰更新
中圖分類號:TP332.3文獻標識碼:B文章編號:1004373X(2008)1908404
Design of DES Encryption System Based on Nios Ⅱ Soft Core
WU Linhuang,YANG Xiuzhi
(College of Communication and Information Engineering,Fuzhou University,Fuzhou,350002,China)
Abstract:Data Encryption Standard(DES) encryption algorithm plays an inportant role in the field of information security.The implementation speed of DES algorithm with software is slow,can′t meet the requirement of some application fields.In this paper,the DES algorithm is implemented by hardware in a chip of FPGA has fast speed.The whole system of encryption is controlled by the soft core of Nios Ⅱ,it controls receive or send data of serial port and controls the encryption process of DES model.The outstanding feature of Nios Ⅱ is that it can be customized by user flexibly,so expansibility and flexibility of the system is very well,it can be applied well in many fields.
Keywords:DES;Nios Ⅱ;customization;update keys
1 引 言
隨著信息技術的發展,信息安全越來越受到人們的關注。DES(Data Encryption Standard)加密算法從成為標準到今天,經歷了長期的考驗,實踐證明DES算法能夠滿足大部分要求。采用軟件實現DES算法速度慢,系統性能較低,DES算法本身并沒有復雜的數學計算,在加解密過程和子密鑰生成過程僅有邏輯運算和查表運算,所以從系統性能和加解密速度方面考慮,采用硬件實現比較好。同時微電子技術的進步,使得現場可編程邏輯門陣列FPGA得到廣泛應用,而基于Nios Ⅱ軟核的嵌入式系統開發也成為當前研究的熱點。Nios Ⅱ是Altera公司于2004年6月推出的性能優越的32位RISC嵌入式軟核處理器,具有超過200 DMIP的性能,性價比高,靈活性大,可以根據需要靈活定制,滿足成本和功能要求[1]。
本設計的DES加密系統采用Nios Ⅱ軟核作為DES加密控制器[2],使得控制過程變得靈活簡便,可擴展性大大增強;用FPGA上的硬件資源實現DES算法,提高了加解密速度;提出一種密鑰更新機制,進一步提高了加密強度,從而使整個加密系統具有很好的性能。
2 DES算法簡要介紹
DES是對64位分組數據加密的分組密碼算法,每64位明文加密成64位密文,沒有數據壓縮和擴展。密鑰長度為64 b,但有8個奇偶校驗位,所以實際密鑰只有56 b[3]。DES算法公開,其保密性完全依賴密鑰。
DES算法首先對輸入的64位明文X進行一次初始置換IP,以打亂原來的次序。對置換后的數據分成左右兩半,左邊記為L0,右邊記為R0。對R0實行密鑰控制下的變換f,其結果記為f(R0,K1),得到的32 b輸出再與L0做異或(xor)運算,其結果成為下一輪的R1,R0則成為下一輪的L1。對L1,R1實行和L0,R0同樣的過程得L2,R2。如此循環16次,最后得到L16,R16。再對64位數字R16,L16實行初始置換的逆置換IP-1,即得到密文Y。圖1是DES全部16輪的加密流程圖[4]。
3 DES加密系統結構
整個系統結構由PC機(串口)、Nios Ⅱ軟核控制器、加密處理模塊DES_CIPHER及外部存儲器組成,系統硬件結構框圖如圖2所示。PC機主要通過串口給Nios Ⅱ軟核控制器發送需要加密的數據,并接收加密后的數據;Nios Ⅱ軟核控制器是整個系統的核心控制單元,負責PC機和加密處理模塊DES_CIPHER之間的信息交換,同時控制加密處理模塊DES_CIPHER的整個加密過程;加密處理模塊DES_CIPHER則具體實現DES算法;外部存儲器用來存儲Nios Ⅱ軟核控制器的程序。

4 Nios Ⅱ軟核控制器的定制
Altera公司提供了不少免費的外設IP核,同時用戶還可以根據實際需要自己定制外設,并將它們集成到Nios Ⅱ處理器系統中,實現與某些特定外圍設備的通信。本設計通過Quartus Ⅱ軟件和SOPC Buider工具定制Nios Ⅱ軟核控制器,用到的IP核主要有Nios Ⅱ的CPU核、UART核及PIO核。
4.1 Nios Ⅱ的CPU核的定制
Nios Ⅱ的CPU核有3種類型,本設計中的CPU核選擇標準型,由于Nios Ⅱ軟核控制器主要用于處理控制信號,所以沒有選擇硬件乘法器和除法器,具有2 kB的指令緩存和數據緩存。為了方便調試,為CPU加入JTAG調試模塊,JTAG調試模塊要占用較多的邏輯單元,當整個系統調試完畢,應該從CPU核去掉JTAG調試模塊模塊,以減少系統占用的資源。
4.2 UART核的定制
帶Avalon接口的UART核為Altera FPGA上的嵌入式系統和外部設備提供了串行字符流的通信方式。內核執行RS 232協議時序,波特率可調,提供一個簡單的Avalon從控制器接口,該接口允許Avalon主控制器(如Nios Ⅱ的CPU核)通過讀/寫寄存器與UART內核進行通信。本設計定制的UART內核采用固定波特率115 200 b/s,所以定制時不選中除數寄存器,也不選擇數據包結束符寄存器,選擇包含控制寄存器,數據位設置為8位,無奇偶校驗位。
4.3 PIO核的定制
并行輸入/輸出(PIO)內核提供Avalon從控制器接口到通用I/O口間的存儲器映射接口。I/O端口既可與片內用戶邏輯連接,又可以與外圍器件連接,本設計中的I/O端口都是與片內邏輯——加密處理模塊DES_CIPHER相連接。Avalon主控制器(如Nios Ⅱ的CPU核)通過4個32位寄存器控制PIO并與PIO通信。這4個寄存器是:用于返回端口值的數據寄存器、用于控制每個雙向PIO口實際方向的方向寄存器、用于控制中斷的中斷寄存器,用于控制數據有效方式的邊沿捕捉寄存器[5]。
每個PIO核最多可提供32個I/O端口,所以64位的密鑰和分組數據必須由兩個32位PIO來傳輸。本設計定制了6個32位的PIO核,分別是用于輸出密鑰的PIO:key_high [31..0]和key_low [31..0],用于輸出需要加密的數據的PIO:data_high [31..0]和data_low[31..0],以及用于輸入被加密后數據的PIO:data_out_high[31..0]和dataout low [31..0];還定制了5個1位的PIO核,分別是用于從外界輸入加解密功能選擇信號的PIO:cipher_decipher_button,用于輸入加密處理模塊DES_CIPHER狀態忙信號和加密完成信號的PIO:corebusy和des_out_ready,用于輸出加解密功能選擇信號到DES_CIPHER模塊的PIO:cipher_or_decipher,用于輸出加載數據使能信號的PIO:load_data。
定制完所有的組件,通過Quartus Ⅱ中的SOPC Buider工具就可以生成需要的Nios Ⅱ軟核。
5 DES_CIPHER加密處理模塊的VHDL設計
DES算法主要是一些邏輯運算和查表運算,這些運算在VHDL[6]中很容易實現,這里主要介紹DES算法中惟一的非線性變換函數S盒的設計和子密鑰的簡化生成及整個模塊的編譯仿真。
5.1 S盒的設計
S盒是DES算法中的非線性變換函數,正是經過S盒的非線性變換,才使DES算法具有較強的安全性,所以S盒是DES算法的關鍵部分,其設計的優劣將直接影響整個算法的性能。每一個S盒的輸入數據是6位,輸出數據是4位,是一個4行16列的二維數組,輸入6位數據中的最高位和最低位確定輸出數據所在的行,中間4位確定輸出數據所在的列,行與列交叉的地址空間所存放的數據就是要輸出的4位數據。本文研究了兩種S盒實現方法。
第一種方法:由于6位輸入數據的32種情況分別對應S盒的32個數據,其對應關系可以簡單的通過算法中的公式推導出來,所以可以直接用VHDL中的查找語句case…when來實現。
第二種方法:用卡諾圖化簡S盒,算出4位輸出數據的每一位關于6位輸入數據的邏輯關系,然后用with…select語句輸出數據的每一位。
5.2 子密鑰的簡化
DES算法的每一輪迭代計算都需要一個子密鑰,每個子密鑰的生成都是通過兩次置換和一次循環左移共3個步驟實現,如果所有子密鑰都按這3個步驟依次實現,將會消耗掉大量的硬件資源,造成較大的延時,而且每輪子密鑰移位的次數不一樣,增大時序控制的難度。通過對子密鑰生成算法的深入分析發現,各個子密鑰移位的次數對于原始密鑰是固定的,所以子密鑰的每一個位相對于原始密鑰的每一個位存在固定的對應關系[2]。編寫C語言程序找出這種對應關系,則所有子密鑰的生成只需要一個簡單的置換就可以同時生成,節約很多硬件資源,提高了效率。
5.3 模塊編譯仿真
DES_CIPHER模塊是在Cyclone系列的EP1C4F324C6上實現的,編譯仿真在Quartus Ⅱ軟件中進行,對S盒的兩種實現方法進行比較發現,它們所消耗的資源都是24個LE(邏輯單元),但第一種方法的速度稍微快一點,所以采用第一種方法實現S盒。
整個模塊的最高時鐘頻率可以達到116.51 MHz。仿真時當輸入64位密鑰為0XB244934DACBB2EEB,輸入64位明文為0X5EA12EAD288DB99B時,加密后輸出的密文為0XC4EAE280CB677F53。用相同的密鑰解密,解密后輸出的明文與原來的明文相同,換成其他數據進行仿真結果都是正確的,編譯報告見圖3。
圖3 編譯報告
6 系統軟件設計
系統軟件設計是在Nios Ⅱ IDE軟件中實現,系統復位后Nios Ⅱ控制器開始通過串口從PC機接收需要加密的數據,存儲在數組中,接下來在Nios Ⅱ控制器的控制下,由DES_CIPHER模塊實現數據的加密[7],當所有數據加密完成后,再通過串口輸出到PC機,整個系統軟件設計的關鍵就在于如何實現Nios Ⅱ控制器對DES_CIPHER模塊的加密控制。
為了進一步提高DES算法的安全性,在Nios Ⅱ控制器對DES_CIPHER模塊的加密控制過程中,本設計采用了一種密鑰更新機制,即在加密過程中不斷更新密鑰。本設計的密鑰更新機制是通過設置一個計數器,每加密完一個64位數據分組,計數器就加1,當計數器的值達到峰值20時,計數器清0重新計數,并采用下一個新密鑰對接下來的20個數據分組進行加密,所有的密鑰已經事先保存在數組中。密鑰更新的周期可以通過設置計數器的峰值來設定,通過采用這種密鑰更新機制,進一步提高了加密系統的安全性。
加密過程是通過Nios Ⅱ軟核來控制,首先Nios Ⅱ控制器檢測加密按鈕是否被按下,如果按下了,則把該信號通過PIO:cipher_or_decipher傳遞給DES_CIPHER模塊指示其進行加密運算,同時通過PIO:load_data使能DES_CIPHER模塊的數據輸入,并通過PIO:key_high [31..0],key_low [31..0]和data_high [31..0],data_low [31..0]向DES_CIPHER模塊加載密鑰和分組數據。Nios Ⅱ控制器通過PIO:core_busy和des_out_ready監測DES_CIPHER模塊的分組數據加密是否完成,如果完成了則core_busy為低電平,des_out_ready為高電平,同時把計數器的值加1,然后進行下一個分組數據的加密,如此循環。當計數器達到峰值時,更換密鑰,計數器清0重新計數。Nios Ⅱ控制器控制DES_CIPHER模塊加密的流程見圖4。
7 結 語
本設計通過定制的串口接收需要的加密數據,用VHDL語言編程硬件實現DES算法,速度非常快,并用Nios Ⅱ軟核靈活方便地控制加密過程,從而實現了一個完整的加密系統,同時還提出了一種簡易的密鑰更新機制,進一步提高了系統的安全性。


由于使用了可靈活定制的Nios Ⅱ軟核作為控制器,使得系統的擴展性非常好,可以在該系統中集成其他的加密算法如RSA[8],形成多級加密體制,進一步提
高加密強度,而只要一個Nios Ⅱ軟核就能實現全部的控制,所以該系統對于實際應用和深入拓展研究都有重要的價值。
參考文獻
[1]周立功.SOPC嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2006.
[2]McLoone M,McCanny J V.High-performance FPGA Implementation of DES Using a Novel Method for Implementing the Key Schedule[J].IEEE Proc.Circuits Devices Syst.,2003,(5).
[3]馮國登,吳文玲.分組密碼的設計與分析[M].北京:清華大學出版社,2000.
[4]鄧安文.密碼學——加密演算法[M].北京:中國水利水電出版社,2006.
[5]李蘭英.Nios Ⅱ嵌入式軟核SOPC設計原理與應用[M].北京:北京航空航天大學出版社,2006.
[6]潘松,黃繼業.EDA技術與VHDL[M].北京:清華大學出版社,2005.
[7]Tai-Chi Lee,Richard Zeien,Adam Roach,et al.DES Decoding Using FPGA and Custom Instructions.Proceedings of the Third International Conference on Information Technology:New Generations (ITNG′06),2006.
[8]盧開澄.計算機密碼學——計算機網絡中的數據保密與安全[M].北京:清華大學出版社,2003.
[9]Altera.Nios Ⅱ Software Developer′s Handbook and Nios Ⅱ Processor Reference Handbook[Z].
作者簡介
吳林煌 男,1984年出生,碩士研究生。研究方向為數字電視條件接收及嵌入式系統開發。
楊秀芝 女,副教授,碩士生導師。研究方向為信息與通信系統。