孫紅波,傅仕諍,徐 日
(北京電子科技學(xué)院,北京100070)
分組密碼算法是信息安全加密處理的重要算法。出于安全性考慮,一個密碼算法中需要使用多種特殊運(yùn)算算子實(shí)現(xiàn)置亂,這些用于置亂的運(yùn)算算子需要對抗差分密碼分析、線性密碼分析和強(qiáng)力攻擊等,它們具有很強(qiáng)的特殊性[1]。
分組密碼算法通常采用微處理器或邏輯電路實(shí)現(xiàn)。實(shí)現(xiàn)分組密碼平臺的效率與密碼算法的特點(diǎn)是密切相關(guān)的,不同密碼算法在不同平臺上實(shí)現(xiàn)速度大不相同,硬布線邏輯算子適合邏輯電路實(shí)現(xiàn),存儲邏輯算子適合在微處理器平臺上實(shí)現(xiàn)[2,3]。
現(xiàn)實(shí)中經(jīng)常會出現(xiàn)不同特點(diǎn)的運(yùn)算算子需要在一個平臺上實(shí)現(xiàn)的方式。通過對目前分組密碼所采用的整體結(jié)構(gòu)進(jìn)行分析,結(jié)合FPGA技術(shù),給出在同一平臺上實(shí)現(xiàn)兼容多個基本運(yùn)算算子的方法。
分組密碼算法是信息時代信息加密處理的重要算法,流密碼每次加密處理數(shù)據(jù)流的一位,分組密碼一組明文。分組密碼算法的特點(diǎn)是明文空間為{0,1,…,2n -1},密文空間也為{0,1,…,2n -1},分組密碼是由密鑰 k=(k0,k1,k2,…,kt-1)確定的一一映射。目前分組密碼所采用的整體結(jié)構(gòu)可分為[4]:
①Feistel結(jié)構(gòu)。Feistel結(jié)構(gòu)的優(yōu)點(diǎn)是容易保證加解密相似,F(xiàn)eistel結(jié)構(gòu)廣為人知,安全性只依賴于函數(shù)F。
③S-盒。S-盒的表達(dá)函數(shù)選擇通常要考慮非線性度、差分均勻度、代數(shù)次數(shù)及項(xiàng)數(shù)分布、擴(kuò)散準(zhǔn)則、平衡性以及相關(guān)免疫性。這類函數(shù)在實(shí)現(xiàn)上用計算機(jī)處理器指令表達(dá)困難,但用真值表易于實(shí)現(xiàn)。
④P置換結(jié)構(gòu)。P置換結(jié)構(gòu)是分組密碼輪函數(shù)的重要組成部分,好的P置換能使得輪函數(shù)具有更強(qiáng)的抵抗線性和差分攻擊能力。
代替—置換(SP)網(wǎng)絡(luò)由混淆層和擴(kuò)散層組成,結(jié)構(gòu)清晰,使用廣泛。這種結(jié)構(gòu)的最大優(yōu)點(diǎn)是能夠從理論上給出最大差分特征概率和最佳線性逼近優(yōu)勢的界,也就是密碼對差分密碼分析和線性密碼分析是可證明安全的。
目前對分組密碼安全性的討論主要包括:差分密碼分析、線性密碼分析和強(qiáng)力攻擊等[5]。
實(shí)用密碼的設(shè)計原則是由Shannon提出的。設(shè)計安全的分組加密算法需要考慮對現(xiàn)有密碼分析方法的抵抗,如差分分析和線性分析等,還需要考慮密碼安全強(qiáng)度的穩(wěn)定性[6]。
①混亂原則。設(shè)計的密碼算法應(yīng)保證密鑰、明文和密文的依賴關(guān)系相當(dāng)復(fù)雜,以至于這種依賴性對密碼分析者來說是無法利用的。
②擴(kuò)散性。設(shè)計的密碼應(yīng)使得密鑰的每一位數(shù)字影響密文的許多位數(shù)字,防止對密鑰的逐段破解;明文的每一位數(shù)字也影響密文的許多位數(shù)字,充分地隱藏明文的統(tǒng)計特征。
而除了袖子里能放一些小物件外,漢服的胸前也是可以放東西的。古人的著裝要求一般都會把上衣掖在中褲或下裳里(就像現(xiàn)代規(guī)范的襯衫要塞在褲子里一樣)。這樣,腰帶與交領(lǐng)結(jié)合處就形成了一個三角形口袋。只要這個東西不大、不滑、不細(xì)、不硬就可以放在里邊了。由于是交領(lǐng)右衽,所以拿取物品很是容易。我們現(xiàn)在所說的“懷揣”就是指這個地方。
實(shí)現(xiàn)分組密碼運(yùn)算的平臺效率與密碼算法的結(jié)構(gòu)和采用的算子密切相關(guān)。由于不同平臺上的基本運(yùn)算不同,對密碼算法中運(yùn)算算子的實(shí)現(xiàn)方式不同,因此密碼算法在不同平臺上的體現(xiàn)運(yùn)算復(fù)雜度也不相同。
可重構(gòu)計算為設(shè)計通用分組密碼平臺實(shí)現(xiàn)提供可能??芍貥?gòu)計算是利用FPGA中的可重用資源,根據(jù)應(yīng)用的需要重新構(gòu)造一個新的高性能計算平臺。通過硬件配置文件中的編程信息,增加的可構(gòu)造基本函數(shù)指令,改變邏輯塊的功能和連線的互連方式。構(gòu)造實(shí)用密碼計算平臺,提高密碼算法的效率[7,8]。
實(shí)用密碼計算平臺實(shí)際上就是一個基于FPGA的微處理器。微處理器的指令集決定微處理器的處理能力,指令集是處理器的靈魂。不同應(yīng)用領(lǐng)域?qū)μ幚砥鞯囊蟛町惡艽?,現(xiàn)有通用處理器上基本沒有與加密算法相關(guān)的特殊指令,通過對密碼處理算法的分析,可增加密碼運(yùn)算指令集。
密碼微處理器主要包括:運(yùn)算器、控制器、存儲器、堆棧、以及輸入、輸出接口等部件。微處理器從存儲器中取出所需數(shù)據(jù),在運(yùn)算器中運(yùn)算,再將得到的結(jié)果保存在存儲器中。輸入輸出接口可以實(shí)現(xiàn)一個分組密碼平臺與外界進(jìn)行數(shù)據(jù)交換。微處理器使用了指令、數(shù)據(jù)分離的存儲器結(jié)構(gòu),指令集通常包括:
①算術(shù)指令:ADD、SUB和MUT;
②邏輯類指令:LNOT、LAND和LOR;
③數(shù)據(jù)傳輸類指令:LDA和STR;
④跳轉(zhuǎn)類指令:JMP、JZ和CALL;
⑤中斷類操作;
⑥位運(yùn)算類操作指令;
⑦可構(gòu)造基本函數(shù)指令。
處理器的基本動作是由控制信號線進(jìn)行控制,每個動作對應(yīng)一個控制信號線,每個控制信號線狀態(tài)是一個邏輯變量,用二進(jìn)制表示,每個指令的基本動作需要預(yù)先設(shè)計。控制矩陣是處理器的關(guān)鍵部件,是按照機(jī)器節(jié)拍設(shè)計的時序電路。專用密碼微處理器的指令是互斥的,在增加可構(gòu)造基本函數(shù)指令時,一定會減少其他不必要的指令。
專用密碼微處理器設(shè)計的核心是設(shè)計硬布線控制器。要根據(jù)設(shè)計好指令周期流程圖,分別列出每條控制信號的邏輯表達(dá)式,根據(jù)W1~W3的時序,T1~T4是在數(shù)據(jù)通路中各連接信號。由指令系統(tǒng)和數(shù)據(jù)通路圖,根據(jù)硬連線控制器的基本原理,用組合邏輯電路實(shí)現(xiàn)控制信號每個微操作S,S是一系列輸入量的邏輯函數(shù):
其中,Im為機(jī)器指令操作碼譯碼器的輸出信號;Mi為節(jié)拍電位信號;Tk為節(jié)拍脈沖信號;Bj為狀態(tài)條件判斷信號。通過參考指令周期流程圖,結(jié)合機(jī)器指令的節(jié)拍電位數(shù)W1,W2,W3,寫出組合控制邏輯譯碼表。根據(jù)控制譯碼表寫出每個控制信號的邏輯表達(dá)式,這個表達(dá)式是它所在行的邏輯表達(dá)式,寫成Verilog源程序,編譯軟件會自動完成電路優(yōu)化的工作[9]。
密碼算法的實(shí)現(xiàn)基本認(rèn)為有基于存儲邏輯的算法和基于布線邏輯的算法2種?;诖鎯壿嫷乃惴ㄒ子谠谖⑻幚砥髌脚_實(shí)現(xiàn),基于布線邏輯的算法易于在可編程器件平臺上實(shí)現(xiàn)。
通常S-盒的表達(dá)函數(shù)用數(shù)字邏輯函數(shù)表達(dá),這類函數(shù)用布線邏輯實(shí)現(xiàn),當(dāng)這類函數(shù)在通用處理器上運(yùn)行時,會耗費(fèi)大量的處理器資源;P置換函數(shù)易于查表實(shí)現(xiàn),易于訪問存儲器實(shí)現(xiàn)。當(dāng)構(gòu)造基本函數(shù)表達(dá)成一個專用處理器指令時,一些原來處理器運(yùn)算效率較低的位運(yùn)算函數(shù),可以以單節(jié)拍的指令實(shí)現(xiàn),相應(yīng)的類S-盒的表達(dá)函數(shù),也可以作為指令來使用。這樣,2種不同類型、相互制約特點(diǎn)的函數(shù)能夠同時在同一平臺上高效運(yùn)行。
可重構(gòu)分組密碼平臺是建立在可重構(gòu)密碼微處理器基礎(chǔ)上的運(yùn)算平臺。在這樣平臺上,置換核也是可以設(shè)計成基本構(gòu)造函數(shù),基本構(gòu)造函數(shù)也可以變更,增強(qiáng)了密碼算法的可重構(gòu)性。在可重構(gòu)分組密碼平臺,可以使用專用的指令系統(tǒng)描述新的算法。一些硬布線算法不再使用邏輯函數(shù)來描述而是用專門設(shè)計的指令來描述,使得算法各個部分描述得到統(tǒng)一,對于原本復(fù)雜的算法,可以簡單地通過指令進(jìn)行編程、測試。
分組密碼平臺存儲區(qū)分為相互獨(dú)立的2塊,一塊是程序區(qū),分組密碼平臺所執(zhí)行的密碼算法就放在這塊區(qū)域;另一塊是數(shù)據(jù)區(qū),存放著分組密碼算法[9]。
分組密碼實(shí)現(xiàn)平臺是一種應(yīng)用于密碼算法的具有特殊函數(shù)運(yùn)算指令的安全處理器。特殊運(yùn)算算子以指令形式存在,原本硬布線邏輯函數(shù)以單一的指令形式實(shí)現(xiàn),存儲邏輯的函數(shù)以處理器的查表形式實(shí)現(xiàn)。
密碼處理器不僅具有常規(guī)處理器的一般性指令,而且具有特殊函數(shù)指令,在這樣的運(yùn)算平臺上可以實(shí)現(xiàn)基于存儲邏輯的密碼算法及基于硬布線的密碼算法。通過實(shí)現(xiàn)構(gòu)造特殊函數(shù)指令,充分發(fā)揮了微處理器平臺的運(yùn)算優(yōu)勢,也就是說在同一個平臺上用戶可以將2種不同邏輯的密碼運(yùn)算因子,在一個平臺上高效地實(shí)現(xiàn)。
[1]趙 劍,杜欽生,王冰冰.分組密碼發(fā)展現(xiàn)狀[J].長春大學(xué)學(xué)報,2006(12):96.
[2]姜晶菲.可重構(gòu)密碼處理結(jié)構(gòu)的研究與設(shè)計[D].長沙:國防科學(xué)技術(shù)大學(xué)博士學(xué)位論文,2004:67-71.
[3]孫 旭,李雪梅,魯長江.分組密碼算法的研究與實(shí)現(xiàn)[J].成都理工大學(xué)學(xué)報(自然科學(xué)版),2006,33(6):640.
[4]馮登國,吳文玲.分組密碼的設(shè)計與分析[M].清華大學(xué)出本社,2000:64-65.
[5]劉景偉.分組密碼中關(guān)鍵問題的研究[D].西安:西安電子科技大學(xué)碩士學(xué)位論文,2004:26-38.
[6]李 瑋.若干分組密碼算法的故障攻擊研究[D].上海:上海交通大學(xué)博士學(xué)位論文,2009:24-32.
[7]管子銘.序列密碼可重構(gòu)處理結(jié)構(gòu)研究與設(shè)計[D].鄭州:解放軍信息工程大學(xué)碩士學(xué)位論文,2009:26-36.
[8]楊 軍,余 江,趙征鵬.基于FPGA密碼技術(shù)的設(shè)計與應(yīng)用[M].北京:電子工業(yè)出版社,2012:106-143.
[9]李亞民.計算機(jī)原理與設(shè)計[M].北京:清華大學(xué)出版社,2011:127-156.