摘 要:DES算法在信息安全領域扮演著重要的角色,采用軟件實現(xiàn)DES算法速度慢,不能滿足一些高速應用領域的要求,所以采用硬件實現(xiàn)的方法,在FPGA上實現(xiàn)DES算法,速度非常快。另一個創(chuàng)新之處在于采用Nios Ⅱ軟核作為整個加密系統(tǒng)的控制器,通過Nios Ⅱ軟核控制串口收發(fā)數(shù)據(jù)以及DES模塊的加密過程,Nios Ⅱ軟核的最大特點是用戶可以靈活定制,這就使得整個系統(tǒng)的擴展性和靈活性非常好,具有很好的應用前景。
關鍵詞: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,F(xiàn)uzhou University,F(xiàn)uzhou,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 引 言
隨著信息技術的發(fā)展,信息安全越來越受到人們的關注。DES(Data Encryption Standard)加密算法從成為標準到今天,經(jīng)歷了長期的考驗,實踐證明DES算法能夠滿足大部分要求。采用軟件實現(xiàn)DES算法速度慢,系統(tǒng)性能較低,DES算法本身并沒有復雜的數(shù)學計算,在加解密過程和子密鑰生成過程僅有邏輯運算和查表運算,所以從系統(tǒng)性能和加解密速度方面考慮,采用硬件實現(xiàn)比較好。同時微電子技術的進步,使得現(xiàn)場可編程邏輯門陣列FPGA得到廣泛應用,而基于Nios Ⅱ軟核的嵌入式系統(tǒng)開發(fā)也成為當前研究的熱點。Nios Ⅱ是Altera公司于2004年6月推出的性能優(yōu)越的32位RISC嵌入式軟核處理器,具有超過200 DMIP的性能,性價比高,靈活性大,可以根據(jù)需要靈活定制,滿足成本和功能要求[1]。
本設計的DES加密系統(tǒng)采用Nios Ⅱ軟核作為DES加密控制器[2],使得控制過程變得靈活簡便,可擴展性大大增強;用FPGA上的硬件資源實現(xiàn)DES算法,提高了加解密速度;提出一種密鑰更新機制,進一步提高了加密強度,從而使整個加密系統(tǒng)具有很好的性能。
2 DES算法簡要介紹
DES是對64位分組數(shù)據(jù)加密的分組密碼算法,每64位明文加密成64位密文,沒有數(shù)據(jù)壓縮和擴展。密鑰長度為64 b,但有8個奇偶校驗位,所以實際密鑰只有56 b[3]。DES算法公開,其保密性完全依賴密鑰。
DES算法首先對輸入的64位明文X進行一次初始置換IP,以打亂原來的次序。對置換后的數(shù)據(jù)分成左右兩半,左邊記為L0,右邊記為R0。對R0實行密鑰控制下的變換f,其結果記為f(R0,K1),得到的32 b輸出再與L0做異或(xor)運算,其結果成為下一輪的R1,R0則成為下一輪的L1。對L1,R1實行和L0,R0同樣的過程得L2,R2。如此循環(huán)16次,最后得到L16,R16。再對64位數(shù)字R16,L16實行初始置換的逆置換IP-1,即得到密文Y。圖1是DES全部16輪的加密流程圖[4]。
3 DES加密系統(tǒng)結構
整個系統(tǒng)結構由PC機(串口)、Nios Ⅱ軟核控制器、加密處理模塊DES_CIPHER及外部存儲器組成,系統(tǒng)硬件結構框圖如圖2所示。PC機主要通過串口給Nios Ⅱ軟核控制器發(fā)送需要加密的數(shù)據(jù),并接收加密后的數(shù)據(jù);Nios Ⅱ軟核控制器是整個系統(tǒng)的核心控制單元,負責PC機和加密處理模塊DES_CIPHER之間的信息交換,同時控制加密處理模塊DES_CIPHER的整個加密過程;加密處理模塊DES_CIPHER則具體實現(xiàn)DES算法;外部存儲器用來存儲Nios Ⅱ軟核控制器的程序。
4 Nios Ⅱ軟核控制器的定制
Altera公司提供了不少免費的外設IP核,同時用戶還可以根據(jù)實際需要自己定制外設,并將它們集成到Nios Ⅱ處理器系統(tǒng)中,實現(xiàn)與某些特定外圍設備的通信。本設計通過Quartus Ⅱ軟件和SOPC Buider工具定制Nios Ⅱ軟核控制器,用到的IP核主要有Nios Ⅱ的CPU核、UART核及PIO核。
4.1 Nios Ⅱ的CPU核的定制
Nios Ⅱ的CPU核有3種類型,本設計中的CPU核選擇標準型,由于Nios Ⅱ軟核控制器主要用于處理控制信號,所以沒有選擇硬件乘法器和除法器,具有2 kB的指令緩存和數(shù)據(jù)緩存。為了方便調(diào)試,為CPU加入JTAG調(diào)試模塊,JTAG調(diào)試模塊要占用較多的邏輯單元,當整個系統(tǒng)調(diào)試完畢,應該從CPU核去掉JTAG調(diào)試模塊模塊,以減少系統(tǒng)占用的資源。
4.2 UART核的定制
帶Avalon接口的UART核為Altera FPGA上的嵌入式系統(tǒng)和外部設備提供了串行字符流的通信方式。內(nèi)核執(zhí)行RS 232協(xié)議時序,波特率可調(diào),提供一個簡單的Avalon從控制器接口,該接口允許Avalon主控制器(如Nios Ⅱ的CPU核)通過讀/寫寄存器與UART內(nèi)核進行通信。本設計定制的UART內(nèi)核采用固定波特率115 200 b/s,所以定制時不選中除數(shù)寄存器,也不選擇數(shù)據(jù)包結束符寄存器,選擇包含控制寄存器,數(shù)據(jù)位設置為8位,無奇偶校驗位。
4.3 PIO核的定制
并行輸入/輸出(PIO)內(nèi)核提供Avalon從控制器接口到通用I/O口間的存儲器映射接口。I/O端口既可與片內(nèi)用戶邏輯連接,又可以與外圍器件連接,本設計中的I/O端口都是與片內(nèi)邏輯——加密處理模塊DES_CIPHER相連接。Avalon主控制器(如Nios Ⅱ的CPU核)通過4個32位寄存器控制PIO并與PIO通信。這4個寄存器是:用于返回端口值的數(shù)據(jù)寄存器、用于控制每個雙向PIO口實際方向的方向寄存器、用于控制中斷的中斷寄存器,用于控制數(shù)據(jù)有效方式的邊沿捕捉寄存器[5]。
每個PIO核最多可提供32個I/O端口,所以64位的密鑰和分組數(shù)據(jù)必須由兩個32位PIO來傳輸。本設計定制了6個32位的PIO核,分別是用于輸出密鑰的PIO:key_high [31..0]和key_low [31..0],用于輸出需要加密的數(shù)據(jù)的PIO:data_high [31..0]和data_low[31..0],以及用于輸入被加密后數(shù)據(jù)的PIO:data_out_high[31..0]和dataout low [31..0];還定制了5個1位的PIO核,分別是用于從外界輸入加解密功能選擇信號的PIO:cipher_decipher_button,用于輸入加密處理模塊DES_CIPHER狀態(tài)忙信號和加密完成信號的PIO:corebusy和des_out_ready,用于輸出加解密功能選擇信號到DES_CIPHER模塊的PIO:cipher_or_decipher,用于輸出加載數(shù)據(jù)使能信號的PIO:load_data。
定制完所有的組件,通過Quartus Ⅱ中的SOPC Buider工具就可以生成需要的Nios Ⅱ軟核。
5 DES_CIPHER加密處理模塊的VHDL設計
DES算法主要是一些邏輯運算和查表運算,這些運算在VHDL[6]中很容易實現(xiàn),這里主要介紹DES算法中惟一的非線性變換函數(shù)S盒的設計和子密鑰的簡化生成及整個模塊的編譯仿真。
5.1 S盒的設計
S盒是DES算法中的非線性變換函數(shù),正是經(jīng)過S盒的非線性變換,才使DES算法具有較強的安全性,所以S盒是DES算法的關鍵部分,其設計的優(yōu)劣將直接影響整個算法的性能。每一個S盒的輸入數(shù)據(jù)是6位,輸出數(shù)據(jù)是4位,是一個4行16列的二維數(shù)組,輸入6位數(shù)據(jù)中的最高位和最低位確定輸出數(shù)據(jù)所在的行,中間4位確定輸出數(shù)據(jù)所在的列,行與列交叉的地址空間所存放的數(shù)據(jù)就是要輸出的4位數(shù)據(jù)。本文研究了兩種S盒實現(xiàn)方法。
第一種方法:由于6位輸入數(shù)據(jù)的32種情況分別對應S盒的32個數(shù)據(jù),其對應關系可以簡單的通過算法中的公式推導出來,所以可以直接用VHDL中的查找語句case…when來實現(xiàn)。
第二種方法:用卡諾圖化簡S盒,算出4位輸出數(shù)據(jù)的每一位關于6位輸入數(shù)據(jù)的邏輯關系,然后用with…select語句輸出數(shù)據(jù)的每一位。
5.2 子密鑰的簡化
DES算法的每一輪迭代計算都需要一個子密鑰,每個子密鑰的生成都是通過兩次置換和一次循環(huán)左移共3個步驟實現(xiàn),如果所有子密鑰都按這3個步驟依次實現(xiàn),將會消耗掉大量的硬件資源,造成較大的延時,而且每輪子密鑰移位的次數(shù)不一樣,增大時序控制的難度。通過對子密鑰生成算法的深入分析發(fā)現(xiàn),各個子密鑰移位的次數(shù)對于原始密鑰是固定的,所以子密鑰的每一個位相對于原始密鑰的每一個位存在固定的對應關系[2]。編寫C語言程序找出這種對應關系,則所有子密鑰的生成只需要一個簡單的置換就可以同時生成,節(jié)約很多硬件資源,提高了效率。
5.3 模塊編譯仿真
DES_CIPHER模塊是在Cyclone系列的EP1C4F324C6上實現(xiàn)的,編譯仿真在Quartus Ⅱ軟件中進行,對S盒的兩種實現(xiàn)方法進行比較發(fā)現(xiàn),它們所消耗的資源都是24個LE(邏輯單元),但第一種方法的速度稍微快一點,所以采用第一種方法實現(xiàn)S盒。
整個模塊的最高時鐘頻率可以達到116.51 MHz。仿真時當輸入64位密鑰為0XB244934DACBB2EEB,輸入64位明文為0X5EA12EAD288DB99B時,加密后輸出的密文為0XC4EAE280CB677F53。用相同的密鑰解密,解密后輸出的明文與原來的明文相同,換成其他數(shù)據(jù)進行仿真結果都是正確的,編譯報告見圖3。
圖3 編譯報告
6 系統(tǒng)軟件設計
系統(tǒng)軟件設計是在Nios Ⅱ IDE軟件中實現(xiàn),系統(tǒng)復位后Nios Ⅱ控制器開始通過串口從PC機接收需要加密的數(shù)據(jù),存儲在數(shù)組中,接下來在Nios Ⅱ控制器的控制下,由DES_CIPHER模塊實現(xiàn)數(shù)據(jù)的加密[7],當所有數(shù)據(jù)加密完成后,再通過串口輸出到PC機,整個系統(tǒng)軟件設計的關鍵就在于如何實現(xiàn)Nios Ⅱ控制器對DES_CIPHER模塊的加密控制。
為了進一步提高DES算法的安全性,在Nios Ⅱ控制器對DES_CIPHER模塊的加密控制過程中,本設計采用了一種密鑰更新機制,即在加密過程中不斷更新密鑰。本設計的密鑰更新機制是通過設置一個計數(shù)器,每加密完一個64位數(shù)據(jù)分組,計數(shù)器就加1,當計數(shù)器的值達到峰值20時,計數(shù)器清0重新計數(shù),并采用下一個新密鑰對接下來的20個數(shù)據(jù)分組進行加密,所有的密鑰已經(jīng)事先保存在數(shù)組中。密鑰更新的周期可以通過設置計數(shù)器的峰值來設定,通過采用這種密鑰更新機制,進一步提高了加密系統(tǒng)的安全性。
加密過程是通過Nios Ⅱ軟核來控制,首先Nios Ⅱ控制器檢測加密按鈕是否被按下,如果按下了,則把該信號通過PIO:cipher_or_decipher傳遞給DES_CIPHER模塊指示其進行加密運算,同時通過PIO:load_data使能DES_CIPHER模塊的數(shù)據(jù)輸入,并通過PIO:key_high [31..0],key_low [31..0]和data_high [31..0],data_low [31..0]向DES_CIPHER模塊加載密鑰和分組數(shù)據(jù)。Nios Ⅱ控制器通過PIO:core_busy和des_out_ready監(jiān)測DES_CIPHER模塊的分組數(shù)據(jù)加密是否完成,如果完成了則core_busy為低電平,des_out_ready為高電平,同時把計數(shù)器的值加1,然后進行下一個分組數(shù)據(jù)的加密,如此循環(huán)。當計數(shù)器達到峰值時,更換密鑰,計數(shù)器清0重新計數(shù)。Nios Ⅱ控制器控制DES_CIPHER模塊加密的流程見圖4。
7 結 語
本設計通過定制的串口接收需要的加密數(shù)據(jù),用VHDL語言編程硬件實現(xiàn)DES算法,速度非???,并用Nios Ⅱ軟核靈活方便地控制加密過程,從而實現(xiàn)了一個完整的加密系統(tǒng),同時還提出了一種簡易的密鑰更新機制,進一步提高了系統(tǒng)的安全性。
由于使用了可靈活定制的Nios Ⅱ軟核作為控制器,使得系統(tǒng)的擴展性非常好,可以在該系統(tǒng)中集成其他的加密算法如RSA[8],形成多級加密體制,進一步提
高加密強度,而只要一個Nios Ⅱ軟核就能實現(xiàn)全部的控制,所以該系統(tǒng)對于實際應用和深入拓展研究都有重要的價值。
參考文獻
[1]周立功.SOPC嵌入式系統(tǒng)基礎教程[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]潘松,黃繼業(yè).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]盧開澄.計算機密碼學——計算機網(wǎng)絡中的數(shù)據(jù)保密與安全[M].北京:清華大學出版社,2003.
[9]Altera.Nios Ⅱ Software Developer′s Handbook and Nios Ⅱ Processor Reference Handbook[Z].
作者簡介
吳林煌 男,1984年出生,碩士研究生。研究方向為數(shù)字電視條件接收及嵌入式系統(tǒng)開發(fā)。
楊秀芝 女,副教授,碩士生導師。研究方向為信息與通信系統(tǒng)。