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