劉誠毅,桂延寧,楊 燕,胡建軍
(1.機(jī)電動(dòng)態(tài)控制重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710065;2.西安機(jī)電信息研究所,陜西 西安 710065)
加密是數(shù)字通信領(lǐng)域中非常重要的技術(shù)組成部分。在數(shù)字通信系統(tǒng)中通常采用加密的方法對(duì)傳輸信息進(jìn)行保護(hù)。關(guān)于加密方法,通常采用對(duì)稱加密或者非對(duì)稱加密兩種方案。對(duì)稱加密方法是將原始數(shù)據(jù)分組和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去,收信方收到密文后采用相同密鑰和加密算法的逆算法進(jìn)行解密,才能恢復(fù)成可讀的原始數(shù)據(jù)。分組加密方法具有算法公開、計(jì)算量小、加密速度快等特點(diǎn)。
AES是一種典型的分組加密方法,于2001年公 布 在 FIPS(Federal Inf or mation Processing Standar ds)上,自被接納為標(biāo)準(zhǔn)之日起就已經(jīng)被工商業(yè)界、銀行業(yè)、政府等作為事實(shí)上的密碼標(biāo)準(zhǔn)[1]。
AES的高安全性使其成為21世紀(jì)加密方法的主流。但是由于其分組的確定性,不能對(duì)通信系統(tǒng)中一定的幀結(jié)構(gòu)進(jìn)行完整的數(shù)據(jù)加密。針對(duì)這一點(diǎn),本文提出在FPGA平臺(tái)上基于AES和RC4雙分組加密方法相結(jié)合的方式對(duì)一定幀結(jié)構(gòu)的基帶信號(hào)進(jìn)行數(shù)據(jù)加密。
高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Stand-ar d,AES)是一種分組迭代加密算法,明文分組長(zhǎng)度固定為128 bit,而且支持128、196或256 bit的密鑰長(zhǎng)度。AES加密算法的實(shí)現(xiàn)流程如圖1所示。
圖1 AES加密算法實(shí)現(xiàn)流程Fig.1 Schematic of AES
AES密鑰有128、196或256 bit,因此對(duì)窮舉法攻擊有很高的安全性,大多數(shù)針對(duì)加密算法的攻擊已經(jīng)都在AES上測(cè)試過,迄今沒有一種攻擊可以破壞 AES的安全性[2]。
這種傳統(tǒng)的AES加密,信息位個(gè)數(shù)必須是分組長(zhǎng)度的整數(shù)倍。不然多余的信息位將不能實(shí)行AES加密。這將導(dǎo)致一定幀結(jié)構(gòu)中有部分信息位不能包含消息,進(jìn)而導(dǎo)致信息傳遞速率的降低。
RC4是Ron Rivest在1987為RSA公司年設(shè)計(jì)的一種流密碼。它是一個(gè)可變密鑰長(zhǎng)度且面向字節(jié)操作的流密碼。RC4算法非常簡(jiǎn)單,易于描述:用從1~256 B(8~2 045 bit)的可變長(zhǎng)度密鑰初始化一個(gè)256 B的狀態(tài)向量S,S的元素記為S[0],S[1],…,S[255],從始至終置換后的S包含從0~255所有8 bit數(shù)。對(duì)于加密和解密,由S中255個(gè)元素按照一定方式選出一個(gè)元素而生成偽隨機(jī)字節(jié)與明文(密文)進(jìn)行模2加從而得到密文(明文)。流密碼結(jié)構(gòu)見圖2。
圖2 流密碼結(jié)構(gòu)示意圖Fig.2 Schematic diagram of stream ciphers
RC4也具有較高的安全性,如果最小的密鑰是128 bit,則該種加密方法是安全的[3]。
1.3.1 基帶數(shù)據(jù)流幀結(jié)構(gòu)
加密解密算法作用于基帶數(shù)據(jù)流,而基帶數(shù)據(jù)流的基本單元是幀。本文采用的是128 B幀長(zhǎng)的數(shù)據(jù)流進(jìn)行加密。幀結(jié)構(gòu)如圖3所示。
圖3 幀結(jié)構(gòu)Fig.3 Structure of frame
幀頭4 B是幀同步等信息位,后面的124 B是數(shù)據(jù)段,加密算法應(yīng)在數(shù)據(jù)段中進(jìn)行操作。
1.3.2 AES對(duì)定幀長(zhǎng)基帶數(shù)據(jù)流進(jìn)行加密
單一AES算法加密系統(tǒng)框圖如圖4所示。
圖4 傳統(tǒng)AES數(shù)據(jù)加密Fig.4 Traditional AES encryption
數(shù)據(jù)輸入端口向系統(tǒng)輸入碼流,系統(tǒng)將其存在寄存器1中,并時(shí)刻與幀同步檢測(cè)器進(jìn)行通信,若幀同步檢測(cè)器檢測(cè)到幀同步信號(hào)則輸出一個(gè)使能信號(hào)讓寄存器1開始向中間寄存器送數(shù)據(jù),由于系統(tǒng)要求幀結(jié)構(gòu)保持不變,幀頭信息位不能改變和AES的加密特點(diǎn),可以看出其中有12 B的信息位沒有加密而被輸出。所以此加密實(shí)現(xiàn)方法在安全性和有效性方面都存在問題。
從上述兩種加密算法的介紹可以看出,RC4具有靈活多變性,但是加密強(qiáng)度需要密鑰長(zhǎng)度的支持。AES加密算法安全性很高,但是分組固定,不宜靈活運(yùn)用。在FPGA中為了實(shí)現(xiàn)高效的基帶數(shù)據(jù)流加密,根據(jù)RC4和AES加密的特點(diǎn),在此引入AES和RC4加密算法相結(jié)合的加密方法對(duì)基帶數(shù)據(jù)流進(jìn)行加密。
與傳統(tǒng)AES加密算法一樣,128 bit的幀結(jié)構(gòu)中第5~116 B共有112 B用AES加密,即用了7次AES加密。
基于RC4加密的靈活可變性,將其設(shè)計(jì)成用于12 B的加密模塊,這樣傳統(tǒng)加密系統(tǒng)中剩余的12位信息位就可以安全地進(jìn)行數(shù)據(jù)加密并傳輸,進(jìn)而彌補(bǔ)了傳統(tǒng)AES加密方法的缺點(diǎn)。此加密模塊使用128 bit密鑰,具有較高安全性。
本文綜合上述方法,將128 bit幀長(zhǎng)劃分成3部分進(jìn)行操作,其系統(tǒng)框圖如圖5所示。
圖5 AES與RC4綜合加密算法系統(tǒng)框圖Fig.5 AES and RC4 encryption algorith m integrated system block diagra m
幀頭部分傳輸?shù)氖菐降刃畔?,因此在系統(tǒng)中應(yīng)不做改變,存儲(chǔ)于寄存器2中等待發(fā)送;7段AES數(shù)據(jù)加密將幀結(jié)構(gòu)中的5~116 B進(jìn)行AES加密;幀結(jié)構(gòu)中117~128 B則用RC4進(jìn)行加密。當(dāng)系統(tǒng)開始工作,首先檢測(cè)輸入碼流的當(dāng)前4 B,如果是幀同步信號(hào),則幀同步檢測(cè)器向寄存器1發(fā)出加密指令,此時(shí)寄存器開始向加密模塊進(jìn)行數(shù)據(jù)傳送,將4 B幀同步信息送入圖中幀頭寄存器中,送完幀頭寄存器反饋給控制器一信號(hào),表明幀頭部分傳送完畢,由控制器發(fā)出開始AES加密的指令。當(dāng)進(jìn)行了7次AES加密后,由AES加密模塊向控制器輸出AES加密完成信號(hào),再由控制器輸出RC4加密使能信號(hào),當(dāng)RC4加密完成后送出使能信號(hào),則寄存器2開始輸出加密后的碼流。本設(shè)計(jì)能夠在捕捉到幀同步信息后很快、連續(xù)地對(duì)N幀長(zhǎng)的數(shù)據(jù)進(jìn)行加密。
由于AES與RC4的加密和解密互為逆過程,因此解密系統(tǒng)框圖也為圖5所示,僅是相應(yīng)模塊作調(diào)整。
在Quart us環(huán)境下使用Modelsi m軟件對(duì)整個(gè)工程進(jìn)行功能仿真。
仿真采用的輸入是三角波的離散值形成的具有幀結(jié)構(gòu)的二進(jìn)制碼流,其離散值從0到255再到0為一個(gè)周期,每一個(gè)離散值用8 bit二進(jìn)制表示,幀同步信息為4 B FDB18540。為了便于直觀看出加密和解密的效果,本文把加密和解密的輸出碼流還原成8 bit離散值進(jìn)行觀察。加密后結(jié)果如圖6所示,解密后結(jié)果如圖7所示。
圖6 綜合后加密仿真波形Fig.6 After the encr yption integrated simulation wavefor m
圖7 綜合后解密仿真波形Fig.7 After the decryption integrated si mulation wavefor m
從圖6中可以看出,加密后輸出碼流為dataout,還原8 bit的離散值后的tempout信號(hào)不再具有三角波的特點(diǎn),保留幀同步信息FDB18540用于傳輸,后面信息位124 B在AES和RC4加密算法的共同作用下實(shí)現(xiàn)了全幀的基帶數(shù)據(jù)流加密,解決了傳統(tǒng)AES加密后12 B不能操作的缺點(diǎn)。
從圖7中可以看出,接收端將基帶數(shù)據(jù)流送入解密模塊后,輸出的碼流信號(hào)dataout2被還原成8 bit離散值的tempout2信號(hào),tempout2信號(hào)保持了三角波的波形,解密效果清晰可見。圖中三角波上離散突起的值為幀同步信息FDB18540。
本文提出了一種基于FPGA的基帶數(shù)據(jù)流加密編解碼方法,通過綜合使用AES和RC4兩種加密方式,對(duì)基帶數(shù)據(jù)流進(jìn)行加密。仿真結(jié)果表明:基于FPGA的基帶數(shù)據(jù)流加密解密系統(tǒng)能夠穩(wěn)定、高效地完成數(shù)據(jù)流加密和解密。
[1]劉珍楨.AES加密算法的一種優(yōu)化的FPGA實(shí)現(xiàn)方法[J].現(xiàn)代電子技術(shù),2007(23):103-106.LIU Zhenzhen.Implementation of AES encryption based on FPGA[J].Modern Electronics Technique,2007(23):103-106.
[2]Stallings W.密碼編碼學(xué)與網(wǎng)絡(luò)安全[M].第四版.孟慶樹,王麗娜,傅建明,等,譯.北京:電子工業(yè)出版社,2006.
[3]Behrouz A.Forouzan.密碼學(xué)與網(wǎng)絡(luò)安全[M].馬振晗,賈軍保,譯.北京:清華大學(xué)出版社,2008.