新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 多規格S盒的硬件實現方法

        多規格S盒的硬件實現方法

        作者: 時間:2006-07-17 來源:網絡 收藏
        引言

        在信息領域中,密碼算法用于保護信息的保密性、完整性和安全性,簡單地說就是防止信息的偽造與竊取。密碼算法可分為對稱密碼算法和非對稱密碼算法。對稱密碼算法的特點是速度快、安全強度高,主要用作數據加密算法。對稱密碼算法根據加密模式又可分為分組密碼算法和序列密碼算法。分組密碼算法目前在商業領域使用較多,廣泛應用于信息的保密傳輸和加密存儲。S盒是大多數分組密碼算法中唯一的非線性結構,它的密碼強度直接決定了密碼算法的好壞。

        本文介紹用的兩種的S盒變換,它能88和64兩種S盒的任意布爾函數變化。文中最后給出了電路仿真結果及其電路規模和延時估計。

        S盒的設計原理

        S盒的功能就是一種簡單的“代替”操作。一個n輸入、m輸出的S盒所的功能是從二元域F2上的n維向量空間F2n到二元域F2上的m維向量空間F2m的映射:F2n――>F2m,該映射被稱為S盒代替函數。構造S盒常用的有如下3種:隨機選擇、人為構造和數學構造。為保證S盒的密碼強度,S盒應越大越好。一般來講,n和m越大,隨機性越好,S盒的密碼強度就越大。但n和m越大,S盒的規模和可控編碼的寬度也就越大。S盒的隨機性可以通過可控編碼來實現,通過改變可控編碼,一個nm的S盒能夠實現:F2n――>F2m的所有的代替函數。
        輸入為

        的nm S盒布爾函數的通式為

        其中,系數ci∈{0,1},

        通項記為



        從式中可以看出,輸入數據后,pi(x)作為最小項就確定下來了,對輸出f(x)產生影響的只有最小項系數ci,通過改變ci就可以使S盒實現任意布爾函數的變換。

        S盒的實現

        S盒代替變換實際上就是一組布爾邏輯函數,S盒的輸入X就是布爾邏輯函數的自變量,S盒的輸出f(x)就是函數值。不同的加/解密算法所使用的S盒代替變換是不同的,為了S盒能夠支持不同的加/解密算法,必須能夠通過編程改變S盒模塊實現的函數關系。在電路規模允許的條件下,應該使S盒模塊實現的函數個數盡可能多,最好能夠實現輸入變量任意的布爾函數。下面給出一個n輸入m輸出的可編程S盒的設計方法,該S盒能夠實現n個輸入變量的任意布爾函數。

        設x1,x2,…,xn是n個布爾變量,f1(x1,x2,…,xn)、f2(x1,x2,…,xn)、…、fm(x1,x2,…,xn)是x1,x2,…,xn的m個布爾函數,則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

        對于任意的布爾函數fi(x1,x2,…,xn)(1≤i≤m),其2n個最小項(n項之積)是固定不變的,其表達式的結構(2n項之和)也是不變的,其函數關系的改變完全依賴于最小項系數(即控制編碼)ki=(ki1,ki2,…ki2n)(1≤i≤m)的改變。因此,在設計邏輯電路時,應該把“n項之積”和“2n項之和”作為固定的電路結構,而把控制編碼所對應的電路結構作為可變結構。通過給ki=(ki1,ki2,…ki2n)(1≤i≤m)賦以不同的值,就可以實現不同的布爾邏輯函數。該子模塊的電路圖如圖1所示。

        對每個fi(x1,x2,…,xn)(1≤i≤m),通過改變控制編碼能夠實現n個變量的全部(共22n個)布爾邏輯函數,因此上述電路能夠實現任意的n輸入、m輸出的函數:f(x1,x2,…,xn)=(f1(x1,x2,…,xn),f2(x1,x2,…,xn),…fm(x1,x2,…,xn)),其個數為2m2n

        當取n=8、m=8,上述電路就能實現1組88的S盒代替變換。通過電路設計,這套電路資源可以兼容4組64 的S盒代替變換。

        電路功能描述與VHDL實現

        功能描述

        本文用VHDL描述語言在ModelSim上實現了1組88的S盒,并在MAXPLUSII上通過了功能仿真。

        S盒的外觀電路如圖2所示。X是輸入,OP是功能選擇輸入,K0、K1、K2、K3、K4、K5、K6、K7是控制編碼,Y是輸出。當OP=1時,電路實現1組88的S盒;當OP=0時,電路能同時實現4組64的S盒。通過改變控制編碼K1、K2……K7,S盒就可以實現88、64的任意布爾函數的變化,實現不同算法中要求不同的S盒功能。用表格說明更能清晰地看出它的功能和實現方式,如表1所示。

        VHDL實現方法

        S盒電路是一個組合電路, 1組88的S盒有256個最小項,而1組64的S盒有64個最小項,因此1組88 S盒的資源可以實現4組64的S盒,這就是設計中的資源復用,即一套資源實現多種規格的S盒功能。上面給出了具體的電路實現單元,如圖3所示。

        在電路實現中,共分為4組,1組有64個最小項,由64個相同的電路單元實現。op=1時,實現1組88 S盒的最小項構造;OP=0時,實現4組64 S盒的最小項構造。之后將最小項與靜態編碼相應位進行與操作,再將結果按位進行或操作,就得到輸出Y。

        S盒功能仿真結果

        S盒的功能仿真在MAXPLUSII上進行,在仿真過程中,S盒的輸入數據通過激勵賦值,分別針對88規格和64規格給定數據。OP=1時,預期要實現1組88的S盒變換;OP=0時,預期要實現4組64的S盒變換,最終得到的仿真結果與預期結果相吻合。

        S盒電路規模和延時估計

        S盒的電路規模和延時依賴于實現工藝和生產廠家工藝庫,在本設計中,基于臺積電0.25um工藝庫對上述可編程S盒的電路規模和延時進行了估計,規模約是3300門,延時約是10.73ns。主頻在90MHz以下可以在單周期內完成一次S盒變換。

        但由于8組256位的靜態編碼輸入在硬件實現上引腳太多,不切實際,上述S盒不能單獨以硬件實現,可作為一個IP使用在密碼算法可重組系統中。在系統設計中,S盒的輸入數據可以從存儲器中讀取,或承接另一個IP的輸出數據。由于此S盒可以兼容1組88規格的S盒和4組64規格的S盒,那么在密碼算法可重組系統中,所有用到這兩種規格S盒的算法只要這一個S盒就可以滿足,節省了整個系統的電路規模,但系統相應的數據處理速度會比較慢。此S盒可以進一步改進,使其在原來基礎上再兼容16組44規格的S盒,同時也可以尋找更好的組合邏輯實現方法,把其速度提高,令主頻達到100MHz以上。

        結語

        通過實驗,本文用VHDL硬件描述語言實現了1組88的S盒,并兼容4組64的S盒。電路通過了功能仿真及電路性能評估,可以作為相應密碼算法可重組系統設計的通用IP來使用,實現了密碼算法設計的靈活性,增強了抗攻擊能力。



        關鍵詞: 方法 實現 硬件 規格

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西华县| 高碑店市| 靖远县| 吉木乃县| 昌宁县| 昭平县| 前郭尔| 广饶县| 正镶白旗| 湘乡市| 宜州市| 威远县| 安西县| 定兴县| 邯郸市| 班玛县| 迭部县| 蒲城县| 梓潼县| 长汀县| 丹东市| 甘德县| 剑阁县| 建昌县| 温泉县| 舞钢市| 克什克腾旗| 益阳市| 鲜城| 团风县| 滦平县| 漯河市| 昌都县| 陈巴尔虎旗| 开化县| 高安市| 安阳市| 普宁市| 泸定县| 张掖市| 元阳县|