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