多規(guī)格S盒的硬件實現(xiàn)方法
在信息領域中,密碼算法用于保護信息的保密性、完整性和安全性,簡單地說就是防止信息的偽造與竊取。密碼算法可分為對稱密碼算法和非對稱密碼算法。對稱密碼算法的特點是速度快、安全強度高,主要用作數(shù)據(jù)加密算法。對稱密碼算法根據(jù)加密模式又可分為分組密碼算法和序列密碼算法。分組密碼算法目前在商業(yè)領域使用較多,廣泛應用于信息的保密傳輸和加密存儲。S盒是大多數(shù)分組密碼算法中唯一的非線性結構,它的密碼強度直接決定了密碼算法的好壞。
本文介紹用硬件實現(xiàn)的兩種規(guī)格的S盒變換,它能實現(xiàn)8×8和6×4兩種規(guī)格S盒的任意布爾函數(shù)變化。文中最后給出了電路仿真結果及其電路規(guī)模和延時估計。
S盒的設計原理
S盒的功能就是一種簡單的“代替”操作。一個n輸入、m輸出的S盒所實現(xiàn)的功能是從二元域F2上的n維向量空間F2n到二元域F2上的m維向量空間F2m的映射:F2n——>F2m,該映射被稱為S盒代替函數(shù)。構造S盒常用的方法有如下3種:隨機選擇、人為構造和數(shù)學方法構造。為保證S盒的密碼強度,S盒應越大越好。一般來講,n和m越大,隨機性越好,S盒的密碼強度就越大。但n和m越大,S盒的規(guī)模和可控編碼的寬度也就越大。S盒的隨機性可以通過可控編碼來實現(xiàn),通過改變可控編碼,一個n×m的S盒能夠?qū)崿F(xiàn):F2n——>F2m的所有的代替函數(shù)。
輸入為
740)this.width=740" border=undefined>
的n×m S盒布爾函數(shù)的通式為
740)this.width=740" border=undefined>
其中,系數(shù)ci∈{0,1},
740)this.width=740" border=undefined>
通項記為
740)this.width=740" border=undefined>
則
740)this.width=740" border=undefined>
從式中可以看出,輸入數(shù)據(jù)后,pi(x)作為最小項就確定下來了,對輸出f(x)產(chǎn)生影響的只有最小項系數(shù)ci,通過改變ci就可以使S盒實現(xiàn)任意布爾函數(shù)的變換。
S盒的硬件實現(xiàn)方法
S盒代替變換實際上就是一組布爾邏輯函數(shù),S盒的輸入X就是布爾邏輯函數(shù)的自變量,S盒的輸出f(x)就是函數(shù)值。不同的加/解密算法所使用的S盒代替變換是不同的,為了S盒能夠支持不同的加/解密算法,必須能夠通過編程改變S盒模塊實現(xiàn)的函數(shù)關系。在電路規(guī)模允許的條件下,應該使S盒模塊實現(xiàn)的函數(shù)個數(shù)盡可能多,最好能夠?qū)崿F(xiàn)輸入變量任意的布爾函數(shù)。下面給出一個n輸入m輸出的可編程S盒的設計方法,該S盒能夠?qū)崿F(xiàn)n個輸入變量的任意布爾函數(shù)。
設x1,x2,…,xn是n個布爾變量,f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)是x1,x2,…,xn的m個布爾函數(shù),則f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)都可以表示為下列最小項之和的形式:
740)this.width=740" border=undefined>
其中,740)this.width=740" border=undefined>是n個變量的2n個最小項,kij∈{0,1},i=1,2,…,m,j=1,2,…2n。
對于任意的布爾函數(shù)fi(x1,x2,…,xn)(1≤i≤m),其2n個最小項(n項之積)是固定不變的,其表達式的結構(2n項之和)也是不變的,其函數(shù)關系的改變完全依賴于最小項系數(shù)(即控制編碼)ki=(ki1,ki2,…ki2n)(1≤i≤m)的改變。因此,在設計邏輯電路時,應該把“n項之積”和“2n項之和”作為固定的電路結構,而把控制編碼所對應的電路結構作為可變結構。通過給ki=(ki1,ki2,…ki2n)(1≤i≤m)賦以不同的值,就可以實現(xiàn)不同的布爾邏輯函數(shù)。該子模塊的電路圖如圖1所示。
對每個fi(x1,x2,…,xn)(1≤i≤m),通過改變控制編碼能夠?qū)崿F(xiàn)n個變量的全部(共22n個)布爾邏輯函數(shù),因此上述電路能夠?qū)崿F(xiàn)任意的n輸入、m輸出的函數(shù):f(x1,x2,…,xn)=(f1(x1,x2,…,xn),f2(x1,x2,…,xn),…fm(x1,x2,…,xn)),其個數(shù)為2m2n。
當取n=8、m=8,上述電路就能實現(xiàn)1組8×8的S盒代替變換。通過電路設計,這套電路資源可以兼容4組6×4 的S盒代替變換。
電路功能描述與VHDL實現(xiàn)
功能描述
本文用VHDL硬件描述語言在ModelSim上實現(xiàn)了1組8×8的S盒,并在MAXPLUSII上通過了功能仿真。
S盒的外觀電路如圖2所示。X是輸入,OP是功能選擇輸入,K0、K1、K2、K3、K4、K5、K6、K7是控制編碼,Y是輸出。當OP=1時,電路實現(xiàn)1組8×8的S盒;當OP=0時,電路能同時實現(xiàn)4組6×4的S盒。通過改變控制編碼K1、K2……K7,S盒就可以實現(xiàn)8×8、6×4規(guī)格的任意布爾函數(shù)的變化,實現(xiàn)不同算法中要求不同的S盒功能。用表格說明更能清晰地看出它的功能和實現(xiàn)方式,如表1所示。
VHDL實現(xiàn)方法
S盒電路是一個組合電路, 1組8×8的S盒有256個最小項,而1組6×4的S盒有64個最小項,因此1組8×8 S盒的資源可以實現(xiàn)4組6×4的S盒,這就是設計中的資源復用,即一套資源實現(xiàn)多種規(guī)格的S盒功能。上面給出了具體的電路實現(xiàn)單元,如圖3所示。
在電路實現(xiàn)中,共分為4組,1組有64個最小項,由64個相同的電路單元實現(xiàn)。op=1時,實現(xiàn)1組8×8 S盒的最小項構造;OP=0時,實現(xiàn)4組6×4 S盒的最小項構造。之后將最小項與靜態(tài)編碼相應位進行與操作,再將結果按位進行或操作,就得到輸出Y。
S盒功能仿真結果
S盒的功能仿真在MAXPLUSII上進行,在仿真過程中,S盒的輸入數(shù)據(jù)通過激勵賦值,分別針對8×8規(guī)格和6×4規(guī)格給定數(shù)據(jù)。OP=1時,預期要實現(xiàn)1組8×8的S盒變換;OP=0時,預期要實現(xiàn)4組6×4的S盒變換,最終得到的仿真結果與預期結果相吻合。
S盒電路規(guī)模和延時估計
S盒的電路規(guī)模和延時依賴于實現(xiàn)工藝和生產(chǎn)廠家工藝庫,在本設計中,基于臺積電0.25um工藝庫對上述可編程S盒的電路規(guī)模和延時進行了估計,規(guī)模約是3300門,延時約是10.73ns。主頻在90MHz以下可以在單周期內(nèi)完成一次S盒變換。
但由于8組256位的靜態(tài)編碼輸入在硬件實現(xiàn)上引腳太多,不切實際,上述S盒不能單獨以硬件實現(xiàn),可作為一個IP使用在密碼算法可重組系統(tǒng)中。在系統(tǒng)設計中,S盒的輸入數(shù)據(jù)可以從存儲器中讀取,或承接另一個IP的輸出數(shù)據(jù)。由于此S盒可以兼容1組8×8規(guī)格的S盒和4組6×4規(guī)格的S盒,那么在密碼算法可重組系統(tǒng)中,所有用到這兩種規(guī)格S盒的算法只要這一個S盒就可以滿足,節(jié)省了整個系統(tǒng)的電路規(guī)模,但系統(tǒng)相應的數(shù)據(jù)處理速度會比較慢。此S盒可以進一步改進,使其在原來基礎上再兼容16組4×4規(guī)格的S盒,同時也可以尋找更好的組合邏輯實現(xiàn)方法,把其速度提高,令主頻達到100MHz以上。
結語
通過實驗,本文用VHDL硬件描述語言實現(xiàn)了1組8×8的S盒,并兼容4組6×4的S盒。電路通過了功能仿真及電路性能評估,可以作為相應密碼算法可重組系統(tǒng)設計的通用IP來使用,實現(xiàn)了密碼算法設計的靈活性,增強了抗攻擊能力。