DES加密算法的VLSI實現(xiàn)方法

DES加密算法是最為廣泛使用的一種分組密碼算法,對推動密碼理論的發(fā)展和應(yīng)用起了重大作用。目前,基于DES加密算法的加密/解密硬件仍在廣泛應(yīng)用于國內(nèi)衛(wèi)星通信、網(wǎng)關(guān)服務(wù)器、機頂盒、視頻傳輸以及其他大量的數(shù)據(jù)傳輸業(yè)務(wù)中。那么接下來,我就給大家介紹一下DES加密算法是如何通過VLSI實現(xiàn)的。

一、DES加密算法描述

DES是一種分組密碼加密算法,分組密碼是在定長的塊上進行替代操作、換位操作或是他們的合成(乘積加密)。所謂替代是將明文中的一個字母用密文字母表中其他字母替代。而換位是一塊中的字母簡單的置換。

DES加密算法中數(shù)據(jù)以64位分組進行加密,有效密鑰長度為56位。它的加密算法與解密算法相同,只是解密使用子密鑰與加密子密鑰的使用順序剛 好相反。DES在對明文進行初始置換(IP)之后,執(zhí)行16輪的迭代密碼,最后經(jīng)初始置換的逆變化(IP-1)。所謂迭代密碼是在密鑰控制下多次利用輪函數(shù),進行加密變換,以實現(xiàn)擴散和混淆的效果。這里明文塊為M0=L0R0,其中L0是M0的左32位,其中R0是M0的右32位。給定一個密鑰K,由它生成16個子密鑰K1,K2…K16。通過迭代過程得到密文尺R16L16。其流程如圖所示:

DES加密算法的VLSI實現(xiàn)方法

 

其中初始置換IP及其逆置換IP-1的規(guī)則如下表所示:

DES加密算法的VLSI實現(xiàn)方法

 

假設(shè)輸入明文為m=m1m2...m64,則IP(m)=n58m50…m15m7。在DES流程中的,函數(shù)的具體過程見圖:

DES加密算法的VLSI實現(xiàn)方法

首先將R(32bits)進行位擴展使其成為48bits,再與子密鑰(k)進行異或操作,結(jié)果分成8組,每組6位。從左到右分別作為 s1,s2 … s8的輸入。令s-box的輸入為b1b2b3b4b5b6,b1b6和b2b3b4b5分別表示為i,j(0≤i≤3,0≤j≤5),取下表中相應(yīng)s-box的i行j列位置元素作為s-box的輸出(4bits)。最后通過p置換得到輸出。

DES加密算法的VLSI實現(xiàn)方法

在DES加密算法中s-box是核心。其設(shè)計準則是:

(1)沒有一個s-box的輸出位是輸入位的線性函數(shù)。

(2)如果將輸入的兩端固定,中間4位變化,產(chǎn)生的輸出只能得到一次。

(3)如果s-box的兩個輸入之間有一位的差異,則輸出中至少兩位不同。

(4)s-box的兩個輸入前兩位不同而最后兩位已知,則輸出必須不同。

(5)對于輸入之間的任何6位差分,32對中至多有8對顯示出的差分導(dǎo)致了相同的輸出差分。

二、DES加密算法的VLSI實現(xiàn)方法

從上面DES加密算法描述中知道DES加密算法加,解密過程主要是16輪的迭代密碼過程,因此DES模塊非常適合采用流水線結(jié)構(gòu)。對于DES加密算法模塊,采用高速流水線來實現(xiàn),DES加密算法的流水線實現(xiàn)具有幾個特點:數(shù)據(jù)通路簡單,都是針對位的線性變換:編碼過程的核心為16個輪次的完全相同的迭代,而且每次迭代均為線性變換,因此可以將循環(huán)用一個16級的流水線來實現(xiàn)。

DES是分組密碼算法,因為每次只對一個數(shù)據(jù)塊進行編碼,前后數(shù)據(jù)塊間在加密或解密時沒有相關(guān)性,所以在解開循環(huán)后各模塊間沒有數(shù)據(jù)相關(guān)性,不會產(chǎn)生沖突。DES每輪加密或解密過程需要一個子密鑰,而子密鑰可以提前生成,隨數(shù)據(jù)流在流水線的前進提供給各級。所以算法編碼過程完全可以流水實現(xiàn):將16輪次循環(huán)迭代解開為一個深度為16的流水線,用一個MUX部件提前生成子密鑰,隨流水的進程發(fā)送給各節(jié)拍,16個數(shù)據(jù)塊同時進行加密或者解密。這樣,從第一個數(shù)據(jù)塊開始加密(解密)起,經(jīng)16個輪次延時后,每一個輪次延時都會有一個數(shù)據(jù)塊編碼完成輸出一個密文(明文)塊。每個輪次內(nèi)部均為組合邏輯,因而一個輪次延時就是一個時鐘周期,即每個時鐘周期得到一個密文塊或明文塊。

1、DES模塊說明

DES模塊是由初始置換模塊IP、多路選擇器 MUX(64bits)、兩個32bits的鎖存電路L_Larch和R_Latch、位擴展模塊E—Box、數(shù)據(jù)代替電路模塊S—Box、異或運算模塊、置換電路模塊P—Box及末置換模塊IP-1組成,其工作狀態(tài)與子密鑰產(chǎn)生電路和控制電路緊密關(guān)聯(lián)。初始置換電路IP是一個64bits輸入,64bits輸出的數(shù)據(jù)置換電路,該電路只是完成信號在不同輸入輸出之間的切換,只占用布線資源,不占用任何觸發(fā)器、門陣列資源。同樣的道理,位擴展模塊E—Box、置換電路模塊P—Box、末置換模塊IP-1也不占用任何觸發(fā)器、門陣列資源,也是只占用布線資源。兩個多路選擇器MUX都是多位二選一的數(shù)據(jù)選擇器,數(shù)據(jù)位寬為32bits,選擇輸出結(jié)果受來自控制模塊的SEL信號控制:L_Latch,R_Larch是兩個32位位寬的寄存器,時鐘為外部CLK信號。

DES加密算法的VLSI實現(xiàn)方法

在面積作為優(yōu)先考慮的設(shè)計中可以在硬件僅 采用一級數(shù)據(jù)通道,然后經(jīng)過16A循環(huán)后得到密文。外部明文/密文經(jīng)過初始變換后,64bits數(shù)據(jù)被分離成左右兩個部分各32位,送入左右兩個多路選擇器。當為第一輪迭代時多路選擇器選擇來自外部輸入明文,密文,否則多路選擇器選擇Latch反饋回來的數(shù)據(jù)。當系統(tǒng)時鐘CLK第一個有效沿到來時,多路選擇器選擇外部數(shù)據(jù)分別鎖存入左、右鎖存器并由鎖存器將其送入運算模塊內(nèi)部,開始第一步迭代,經(jīng)選擇擴展電路模塊E—Box,形成48bits的數(shù)據(jù)與子密鑰產(chǎn)生電路已送來Key異或運算,然后送入S-Box;S-Box電路經(jīng)過復(fù)雜的運算輸出32bits的數(shù)據(jù),該數(shù)據(jù)經(jīng)P-Box置換后在與左部的32bits數(shù)據(jù)在時鐘信號控制下送入右部寄存器,作為下次迭代的Ri。這樣就完成了第一個周期的運算,也是DES加密算法的第一次迭代運算。當CLK的下一個有效沿到來后,左、右鎖存器將上一輪產(chǎn)生的數(shù)據(jù)送入運算模塊內(nèi)部,開始第二輪迭代;如此下去,當16輪迭代運算完成后,左右數(shù)據(jù)合并,輸出一個DES模塊的密文/明文。

在速度作為優(yōu)先考慮的設(shè)計中DES模塊的實現(xiàn)是用一個輪函數(shù)實現(xiàn)的16份拷貝通過深度細化的流水線處理來完成的,由此可以獲得較高的性能。采用循環(huán)全部打開和流水線結(jié)構(gòu)來設(shè)計,循環(huán)全部打開后,實現(xiàn)全部16輪結(jié)構(gòu)并串在一起,只要一個時鐘周期就可以完成一個數(shù)據(jù)塊的加密或解密;通過空間占用來換得速度上的大幅度提高,然后再在每輪的中間加上寄存器來實現(xiàn)流水線。在第一時鐘周期,第一塊數(shù)據(jù)經(jīng)過第一輪處理存入寄存器1中。

在下一個時鐘周期,寄存器1中的結(jié)果經(jīng)過第二輪處理存入寄存器2中;同時,第二塊數(shù)據(jù)可以經(jīng)過第一輪處理存入寄存器1。這樣,多塊數(shù)據(jù)實現(xiàn)了同時處理。設(shè)計中使用16組寄存器,使得加/解密速 度可以提高近16倍。

2、S-Box模塊的實現(xiàn)

S-Box是DES加密算法的關(guān)鍵步驟,所有其他的運算都是線性的,而S-Box是一個復(fù)雜的非線性函數(shù),正是經(jīng)過S-Box的非線性變換才使明文實現(xiàn)了較好的混亂,從而具有較強的安全保密 性。從整個模塊來看S-Box是占用面積最多的部分,而且S-Box處于時鐘的關(guān)鍵路徑上面,其設(shè)計實現(xiàn)的好壞是影響算法整體加密和解密速度的主要因素。 對S-Box的設(shè)計一般有兩種方案,一種是采用ROM的形式,而另一種是采用邏輯運算的形式。從綜合工具Design Compiler綜合出的結(jié)果來看,采用ROM的形式其工作速度要快一些,但相應(yīng)的面積也要大一些??梢愿鶕?jù)具體的情況來做選擇。

小知識之VLSI

VLSI是超大規(guī)模集成電路(Very Large Scale Integration)的簡稱,指幾毫米見方的硅片上集成上萬至百萬晶體管、線寬在1微米以下的集成電路。由于晶體管與連線一次完成,故制作幾個至上百萬晶體管的工時和費用是等同的。大量生產(chǎn)時,硬件費用幾乎可不計,而取決于設(shè)計費用。