999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NiosⅡ用戶自定義指令的AES算法實現

2011-01-01 00:00:00李剛,馮智剛
智能計算機與應用 2011年5期

摘 要: 提出一種采用AES算法和RSA算法相結合的混合加解密算法,并采用Altera的NiosII軟核用戶自定義指令功能實現該混合加解密算法。文中主要對該混合加解密算法中的AES算法進行了設計、論述,通過對AES算法的輪變換和密鑰擴展兩部分算法的分析,并在NiosII軟核上實現其自定義指令,就可以使用簡單的幾條語句快速地實現AES算法,大大地提高了算法實現的靈活性,最后給出了使用NiosII用戶自定義指令實現與使用VerilogHDL實現AES算法效果的對比分析。

關鍵詞:

中圖分類號: TP309.7 文獻標識碼: A 文章編號:2095-2163(2011)03-0082-03

Implementation of AES based on NiosⅡUser-defined Instruction

LI Gang, FENG Zhigang

Abstract: The paper puts forword a method of encrypting data by combining AES and RSA, and implements it by applying the technique of NiosII user-defined instruction in Altera. Firstly, the article mainly describes the design of AES, by analyzing the round transform and the key expand in AES, then puts forward a method for implementing the arithmetic of AES on the soft-core of NiosII, rapidly by several simple codes and greatly increases the flexibility of the algorithm. Finally, this article gives a compared analyis of implementing AES between two methods, including NiosII user-defined instruction and complete Verilog HDL code.

Key words:

0 引言

隨著FPGA技術的不斷發展,在單片FPGA芯片上集成的晶體管數量越來越多,使得整個嵌入式系統都可以放到FPGA芯片上實現,也就是可編程片上系統(SOPC)。采用SOPC技術可以大大提高系統設計的靈活性、縮短產品開發周期,目前Altera、Xillinx等主流FPGA芯片廠商都發展了各自的SOPC技術。另一方面,隨著嵌入式網絡功能廣泛地應用在工廠、企業的生產控制設備以及個人的便攜式設備中,采用計算機網絡來傳輸數據已得到廣泛的應用。但由于計算機網絡的開放性、公開性,網絡安全問題則顯得日益突出。因此,設計、開發具有高靈活性的加解密功能的嵌入式網絡設備,對解決嵌入式設備的網絡安全問題具有非常重要的意義。采用高效的加解密算法更是設計、開發先進的加解密設備的必由之路,但傳統的加解密設備都是將固有的加解密算法集成在設備中,不利于用新出現的、高效的算法對設備進行算法升級,從而無法進一步保證對信息加解密的可靠性。針對上述的問題,本文提出了一種采用AES算法和RSA算法相結合的混合加解密算法,并給出了采用NiosⅡ用戶自定義指令來實現AES加解密算法的設計方法。

1 系統總體設計方案

整個系統主要采用Altera公司的SOPC技術來實現加解密功能,利用其32位NiosⅡ嵌入式處理器軟核設計的嵌入式系統[1,2]來實現。在加解密算法選擇上,主要考慮其對數據加解密的速度、安全性、靈活性。因而本文選擇了對稱密碼體制的AES算法和公開密碼體制的RSA算法。充分利用AES算法和RSA算法的優點,采用AES算法來實現分組數據的加解密,而采用RSA算法來實現對AES算法的密鑰進行加解密,從而大大提高了系統的安全性和可靠性,系統總體結構如圖1所示。本文主要介紹AES算法在NiosⅡ嵌入式處理器軟核中的實現,對RSA算法的實現不在本文論述范圍之內。

2 AES算法

AES算法是一種迭代分組密碼算法,數據分組長度為128位,密鑰分組長度可為128,192或256位[3]。對數據分組加解密的輪數主要取決于所采用的密鑰長度,Nb為數據分組長度除以32,Nk為密鑰分組長度除以32,Nr為算法變換的輪數。Nr由Nb和Nk共同決定,其關系如表1所示。

AES算法主要由輪變換和密鑰擴展兩部分組成,輪變換主要由3層組成:

(1)非線性層:進行S盒變換,實現混淆的效果;

(2) 線性混合層:進行MixColumn列混淆變換、ShiftR-ow行變換運算,從而實現多輪變換之上的高度擴散;

(3) 密鑰加層:實現子密鑰異或到中間狀態。

每一次輪變換都要經過上述三層的變換,但在最后一輪變換中不包括列混淆變換。密鑰擴展部分主要為每一次輪變換提供密鑰,加密過程與解密過程所需要的密鑰相同,只是使用次序不同而已。所以可以將加密過程所得的密鑰存儲下來,以供解密過程的需要。AES算法的加密、解密流程如圖2所示。

3 AES算法在NiosII中的實現

AES算法可以采用純軟件的形式來實現,但由于軟件的運算速度較低以及以軟件形式實現的AES加密算法存在密鑰數據的不安全性,很容易被別人盜取。所以在實現加密算法的形式上,主要以硬件的形式實現為主。可以以ASIC的形式實現,但其實現成本很高,這里提出一種以FPGA的形式來實現,而只占用很少的芯片資源的方法,即采用NiosⅡ嵌入式處理器軟核來實現。在NiosⅡ嵌入式處理器軟核中,最顯著的一個特點就是用戶自定義指令的使用,最多可提供256個用戶自定義指令。一些復雜的、重復的運算邏輯可以通過SOPC Builder中的自定義指令向導被定制成指令,從而可以大大提高算法的執行速度。本文正是通過將AES算法中的輪變換和密鑰擴展算法定制成NiosⅡ嵌入式處理器軟核的專用指令,通過對這些指令的軟件編程來實現AES算法的。這不僅可以大大減少算法所占用的芯片資源,更可以獲得比采用純軟件更快的處理速度。

在充分分析了AES算法原理的基礎上,分別將輪變換和密鑰擴展兩部分的子變換定制成NiosⅡ的專用指令,具體劃分如下。

在輪變換中,將密鑰加運算定制成一條自定義指令,通過調用該指令可以實現兩個32位數據的異或操作,在此基礎上可以實現更多位數據的異或操作。將S盒變換與行移位運算定制成一條自定義指令,通過調用該指令可以實現對一個32位數據中的四個字節S盒變換與行移位運算。將列混淆變換運算定制成一條自定義指令,通過調用該指令可以在加密、解密過程中實現列混淆和反列混淆變換運算。通過對以上定制的自定義指令的調用就可實現加、解密模塊中的輪變換運算以及最后一輪輪變換運算。

在密鑰擴展變換中,涉及的主要有輪常數變換、字節移位變換、S盒變換等運算,可以根據對算法實現的性能要求來決定是否將這些運算分別定制成自定義指令。不是Nb整數倍的32位密鑰擴展運算的實現主要是采用異或邏輯來獲得的,可通過調用輪變換中定制的密鑰加運算自定義指令來實現。Nb整數倍的32位密鑰擴展運算的實現可定制成一條具有多個操作選擇的密鑰擴展自定義指令。通過對以上定制的自定義指令的調用就可實現相應輪數的密鑰擴展運算。

以下是一個Nb整數倍的32位密鑰擴展運算自定義指令的實現過程,本文采用VerilogHDL硬件描述語言進行設計,部分實現代碼如下。

module miyao(clk,reset,clk_en,start,dataa,datab,n,result) // 模塊端口定義

always@(dataa or datab or n) // 擴展算法

begin

tmp<=rcon(n)

kshift<= datab[23:0],datab[31:24]

krcon<= (ksbox[31:24] ^ tmp),ksbox[23:0]

kextent<= (krcon[31:24] ^ dataa[31:24]),(krcon[23:16] ^ dataa[23:16]),(krcon[15:8] ^ dataa[15:8]),(krcon[7:0] ^ dataa[7:0])

end

always@(posedge clk)

begin

if(reset)

result<=0

else if((clk_en==1'b1)&&(start==1'b1)) // 時鐘使能和開始執行有效

result<=kextent

end

新建Quartus工程,打開SOPC Builder。在SOPC Builder中選擇系統模塊,編輯NiosⅡ模塊,點擊定制指令選項,點import選項,添加上述的.v文件并讀入端口列表。如圖3所示,之后再將其添加到系統中完成定制。

在Quartus編譯生成NiosⅡ CPU之后,新建IDE工程,編寫系統軟件代碼。即可在軟件代碼中調用已定制的自定義指令,上述示例生成的自定義指令為ALT_CI_MIYAO(n,A,B)。這里n為該條指令的操作選擇,用來產生相應Nb整數倍的擴展密鑰。設計中通過定制這種多操作的自定義指令,可以用更少的芯片面積實現更多的功能,大大節省了芯片資源。本文中的密鑰加運算、S盒變換與行移位運算、列混淆變換運算等自定義指令都是采用先編寫相應指令的VerilogHDL代碼來實現的。

采用NiosII軟核自定義指令方法實現AES算法的運算速度主要取決于NiosII軟核的運算速度,自定義AES算法中的關鍵指令可以在一個時鐘周期內執行完成,實驗證明采用NiosII軟核自定義指令實現的AES算法在運算速度、實現成本、算法靈活性等方面都具有很大的優勢,表2給出了在Altera公司的EP1C12芯片上分別采用VerilogHDL語言實現的AES算法與采用NiosII軟核自定義指令實現的AES算法在各方面的對比情況。

4 結束語

采用NiosⅡ軟核自定義指令方法實現的加解密算法,實現了將加解密算法中的復雜繁瑣的運算部分定制成自定義指令,在算法運算速度、算法實現成本、算法靈活性方面都獲得了非常好的性能。隨著密碼學的不斷向前發展,性能好的、優秀的加解密算法會不斷出現,如ECC、混沌加密算法等,那么本系統可以通過將新的加解密算法采用NiosⅡ的自定義指令方式來實現,再通過本系統的網絡接口來配置系統中的FPGA,從而實現對系統加解密算法的升級,極大地提高了系統的靈活性。也可以以本系統為開發平臺進行設計、開發新的產品,通過添制新的外設接口IP,經NiosⅡ的Avalon總線可以很快地開發出新的產品,大大縮短了產品的開發周期。本系統可應用在電子商務、金融設備、工業、網絡等眾多領域。

參考文獻:

[ 1 ] 潘松,等. SOPC技術實用教程[M]. 北京:清華大學出版社,

2005.

[ 2 ] 周博,等. 挑戰SOC-基于NIOS的SOPC設計與實踐[M]. 北

京:清華大學出版社,2004.

[ 3 ] 王衍波,等. 應用密碼學[M]. 北京:機械工業出版社,2003.

主站蜘蛛池模板: 亚洲AV无码一区二区三区牲色| 欧美另类视频一区二区三区| 日韩久草视频| 亚洲国产欧美国产综合久久| 久996视频精品免费观看| 国内精品一区二区在线观看| 99九九成人免费视频精品| 欧美成人免费午夜全| 久久这里只精品国产99热8| 国产欧美日韩资源在线观看| 97视频精品全国在线观看| h网站在线播放| …亚洲 欧洲 另类 春色| 在线观看免费黄色网址| 亚洲无码视频图片| 亚洲成AV人手机在线观看网站| 中文字幕无码制服中字| 一区二区在线视频免费观看| 久久不卡国产精品无码| 色AV色 综合网站| 天天干天天色综合网| 国产尤物jk自慰制服喷水| 成年av福利永久免费观看| 国产精品成人AⅤ在线一二三四| 色窝窝免费一区二区三区| 91精品人妻互换| 欧美一级高清免费a| 伦精品一区二区三区视频| 成人福利在线观看| 国产区在线看| 国产精品熟女亚洲AV麻豆| 国产福利拍拍拍| 亚洲Va中文字幕久久一区| 无码精油按摩潮喷在线播放| 色视频久久| 精品视频在线观看你懂的一区| 亚洲日韩AV无码一区二区三区人 | 欧美日韩在线第一页| 91欧美在线| 欧美全免费aaaaaa特黄在线| 国产经典三级在线| 久久五月天综合| 夜夜操天天摸| 3344在线观看无码| 97se亚洲综合| 99热这里只有精品久久免费| 国产一级毛片在线| 成人无码区免费视频网站蜜臀| 国产欧美自拍视频| 亚洲国产日韩一区| 亚洲国产成人久久精品软件| AV色爱天堂网| 欧美日韩精品在线播放| 色妞永久免费视频| 爆乳熟妇一区二区三区| 国产精品三级专区| 国产精品亚洲五月天高清| 在线观看精品国产入口| 欧美日韩亚洲国产主播第一区| 国产网友愉拍精品视频| 欧美一级爱操视频| 亚洲91精品视频| 欧美日韩v| 中文字幕亚洲乱码熟女1区2区| 69av免费视频| 中国成人在线视频| 国产精欧美一区二区三区| 91精品视频网站| 亚洲最大福利网站| 视频国产精品丝袜第一页| 亚洲视频免| 日韩欧美国产另类| 日本影院一区| 午夜三级在线| 久久伊伊香蕉综合精品| 在线人成精品免费视频| 国产高清国内精品福利| 伊人色在线视频| 婷婷五月在线| 国产精品浪潮Av| 久热精品免费| 热久久综合这里只有精品电影|