本發明涉及一種DES的加解密密鑰生成器及密鑰生成方法,屬于信息安全技術領域。
背景技術:
DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),并授權在非密級政府通信中使用,隨后該算法在國際上廣泛流傳開來。
目前,基于DES算法的加密與解密硬件仍廣泛應用于衛星通信、網關服務器、機頂盒、視頻傳輸以及其他大量的數據傳輸業務中。然而,隨著密碼分析技術的不斷發展,DES算法已被攻破,網絡安全面臨威脅。而在沿用原有應用系統方面,3-DES算法有很大的生存空間,通過增加密鑰長度提高加密強度,被大量用來替換已經不安全的DES算法。
無論是DES、2DES或者3DES在使用過程中都需要密鑰生成器。傳統的密鑰生成器包括控制單元、計算單元、存儲單元、輸出寄存器單元,如圖1所示。實現方法如圖2所示,為加密時,從第一個周期開始每個周期輸出一個此輪加密需要的輪密鑰;而當解密時,依次使用16個加密輪密鑰k1-k16的倒敘即k16-k1,但是,由于算法計算過程,要先計算出k1,存入存儲單元,由k1再計算出k2,再存入另一個存儲單元,依次遞推,計算出k16,用作第一個解密時使用的輪密鑰,第二個解密密鑰為k15,由存儲單元存儲的值中取出,第三個解密密鑰是k14,同樣由存儲單元中給出,依次到第十六個解密密鑰。即從第一個周期至第十六個周期每個周期產生一個加密密鑰,依次存放在存儲單元中,從第十六個周期開始,從存儲單元中倒序輸出,即從第十六個至第三十二個周期每個周期輸出一個此輪解密需要的輪密鑰。此方法在存儲密鑰時需要15個48比特的寄存器或者存儲單元來存儲密鑰,且產生并使用解密密鑰時總共需要32個周期。
技術實現要素:
針對現有技術中存在的DES加解密密鑰生成器所需周期數及存儲單元多的問題,提出了一種DES加解密密鑰生成器及密鑰生成方法,本發明可以將加密密鑰生成過程與解密密鑰生成過程結合起來,根據加解密標志信號來判斷屬于加密運算還是解密運算后,利用化簡的結果,當需要解密密鑰時,不再需要16個48比特的存儲單元,同時將計算解密時的周期數減少了16個周期。
本發明的技術方案為:
一種DES加解密密鑰生成器,其特征在于,包括控制單元、計算單元和輸出寄存器單元;
控制單元分別與計算單元、輸出寄存器連接,計算單元與輸出寄存器單元連接;其中,
控制單元,用于控制DES加解密密鑰生成器內的狀態機的狀態跳轉;該狀態機分為17個狀態,分別為狀態0到狀態16,每一狀態對應一周期;狀態0時為等待狀態,當密鑰有效時控制該狀態機每個周期進行一次跳轉并將狀態信息發送給計算單元;
計算單元,包括一加解密密鑰生成表,其包括狀態字段、密鑰值字段、循環左移相對值字段、循環左移絕對值字段、解密密鑰值字段和循環右移相對值字段;加密過程中,計算單元根據當前的狀態信息和該狀態在加解密密鑰生成表中對應的密鑰值、循環左移相對值計算每一周期的輪密鑰和循環左移絕對值,存入到輸出寄存器單元,以及根據輸出寄存器單元的值計算當前生成的輪密鑰并輸出到加解密密鑰生成表的密鑰值字段;解密過程中,計算單元根據當前的狀態信息和該狀態在加解密密鑰生成表中對應的循環左移絕對值計算每一周期的循環右移相對值,存入到輸出寄存器單元,并根據輸出寄存器單元的值計算對應周期的解密密鑰值并輸出到加解密密鑰生成表的解密密鑰值字段;
輸出寄存器單元,用于對每個周期生成的循環左移/右移絕對值進行存儲。
進一步的,所述計算單元包括按位置換矩陣PC-1、按位置換矩陣PC-2,用于完成循環左移或循環右移操作生成輪密鑰或解密密鑰值;其中,按位置換矩陣PC-1只對初始密鑰進行操作。
進一步的,該加解密密鑰生成表的狀態字段的狀態值包括狀態1~狀態16;其中,加密過程,狀態1、2、9、16對應的循環左移相對值為1,其余狀態對應的循環左移相對值為2;狀態1對應的密鑰值為初始密鑰值;解密過程,狀態1對應的循環右移相對值為0,狀態2、9、16對應的循環右移相對值為1,其余狀態對應的循環右移相對值為2。
進一步的,所述輸出寄存器單元包括兩個28位的數據寄存器C、D。
一種DES加解密密鑰生成器的密鑰生成方法,其步驟為:
1)在DES加解密密鑰生成器內設置一加解密密鑰生成表,包括狀態字段、密鑰值字段、循環左移相對值字段、循環左移絕對值字段、解密密鑰值字段和循環右移相對值字段;其中,該DES加解密密鑰生成器內的狀態機分為17個狀態,分別為狀態0到狀態16,每一狀態對應一周期,狀態0時為等待狀態;
2)當密鑰有效時,控制單元控制該狀態機每個周期進行一次跳轉,并將狀態信息發送給計算單元;
3)加密過程中,計算單元根據當前的狀態信息和該狀態在加解密密鑰生成表中對應的密鑰值、循環左移相對值計算每一周期的輪密鑰和循環左移絕對值,存入到輸出寄存器單元,根據輸出寄存器單元的值計算當前生成的輪密鑰并輸出到加解密密鑰生成表的密鑰值字段;解密過程中,計算單元根據當前的狀態信息和該狀態在加解密密鑰生成表中對應的循環左移絕對值計算每一周期的循環右移相對值,存入到輸出寄存器單一,并根據輸出寄存器單元的值計算對應周期的解密密鑰值并輸出到加解密密鑰生成表的解密密鑰值字段;
4)輸出寄存器單元對每個周期生成的循環左移/右移值進行存儲。
本發明的核心內容是密鑰生成的優化方法,下面結合表格進一步介紹本發明的內容。
表1給出加解密的密鑰生成過程。其方法如圖3所示,在加密過程中依次使用密鑰值k1-k16,這16個密鑰值的得出可以從表1的第三列循環左移的相對值得出,同時在第4列,計算出循環左移的絕對值。由于密鑰值由2個28位的數據構成,因此循環左移絕對值為28位時,即為原值。對于加密過程,第二列的密鑰值(即輪密鑰)屬于在線計算,計算好的當前的輪密鑰,直接輸出到輸出寄存器(即不用存儲),用于其它模塊(加密模塊)計算使用。
在解密過程中,使用的第一輪到第十六輪解密密鑰分別為k16-k1,由于密鑰的使用順序與加密時相反,因此希望可以先求出k16,依次類推,最后求出k1,這樣每次使用密鑰后,即可丟棄而不需要存儲,節省了面積。使用的方法是直接由初始密鑰輸入值直接求得k16,由第四列可知,k16為循環左移的絕對值為28,由于密鑰值就是28位,循環左移28位就是原值,即解密過程中使用的第一個密鑰k16為原始值,接著求取第二個,由第四列的循環左移絕對值為27,可知k15為原始輸入循環左移絕對值27,或者循環右移1位得到,即k16的值相對循環右移1位得到,k14的循環左移絕對值為25,也就等價于循環右移絕對值3位,即由K15的值相對循環右移2位得到。依次類推,可以從k16的循環左移絕對值得出相對上一個解密輪密鑰的循環右移次數,每經過一個周期得出一個即將使用解密密鑰。最后一列正序為解密時,從第一個迭代周期開始,相對上一個周期的輸出,需要循環右移的相對值。
總之,如表1所示,加密時每個周期相對循環左移的位數,每個解密時每個周期相對循環右移的位數。在加密過程中有循環左移相對值有1位和2位兩種情況,在解密過程中有循環右移相對值0位、1位以及2位的情況。由于二者的相似度極高,因此,密鑰生成器只需要一個狀態機控制狀態轉移,而選擇左移右移由加密還是解密操作來決定,且在密鑰生成器只需要一個28*2位的數據寄存器即可,而傳統的既有加密又有解密的密鑰生成模塊需要16*28*2位的數據寄存器,這是本發明可以使3DES模塊面積小同時不影響速度的原因之一。
表1加解密密鑰生成
根據加解密的不同及為以下三個標志位,如表2所示:
表2狀態信號與操作關系
與現有技術相比,本發明的積極效果為:
使用本發明的生成器可以將加密密鑰生成過程與解密密鑰生成過程結合起來,根據加密或者解密的不同,從第一個周期開始每個周期輸出一個需要加密/解密密鑰,且不需要額外的存儲單元存儲密鑰,同時將需要的邏輯單元化簡到更少。本發明為一種DES高效加解密密鑰生成器,可用于硬件實現,可以作為FPGA或者ASIC軟核,同時為基于DES、3DES的算法、安全協議等提供了一個高速小面積的加解密密鑰生成器。
附圖說明
圖1為傳統密鑰生成器結構圖;
圖2為傳統密鑰生成器的密鑰生成方法示意圖;
圖3為本發明密鑰生成器的密鑰生成方法示意圖;
圖4為本發明密鑰生成器結構圖;
圖5為本發明密鑰生成器程序設計簡化圖。
具體實施方式
下面結合附圖對本發明的具體實施方式及優勢進行詳細描述。
本發明的密鑰生成器如圖4所示,其包含控制單元、計算單元及輸出寄存器單元。控制單元與計算單元及輸出寄存器連接,并控制二者的計算、輸出狀態,計算單元計算完成的結果存入到輸出寄存器。
密鑰生成器控制單元:密鑰生成器內部的狀態機分為17個狀態,分別從狀態0到狀態16。狀態0時為等待狀態,當密鑰有效時開始進入狀態1,之后每個周期進行一次跳轉,依次從狀態1跳轉到狀態2,3,……,16。當狀態為16時,跳轉回狀態0進入下一次DES密鑰加解密生成器的等待狀態。
密鑰生成器輸出寄存器單元:采用兩個28比特的寄存器C、D對每個周期生成的輪密鑰進行存儲。每個狀態的輸出都存入到這兩個寄存器中,在狀態16時的輸出即為最后一個輪密鑰。
密鑰生成器計算單元:計算單元主要由PC-1、PC-2以及循環移位三種操作構成。PC-1是一個按位置換矩陣,將原始輸入的64比特按照置換矩陣進行變換,如將原始密鑰的第五位移動到第十位,類似的操作;PC-2操作也是一個按位置換的矩陣。只在初始密鑰輸入時的周期使用PC-1,使用方法是將輸入的初始密鑰進行PC-1變換,如圖5所示,之后每一輪按照表1的約定將兩個28位的寄存器C、D循環移位,每一輪移位后的結果再次存放在輸出寄存器C、D中,對寄存器C、D進行PC-2操作后,即為輪密鑰輸出K。
密鑰生成器接口如表3所示,此密鑰生成器可用于DES加解密模塊中,與DES加解密模塊相連的方法是通過復位信號rst及時鐘信號clk同步,同時將輪密鑰的輸出K及K_out_valid送入到加解密模塊與明文等信息一同進行加解密操作,加密時輸出16個周期的K及K_out_valid信號,分別為第一輪到第十六輪加密密鑰值。此加解密密鑰生成器的優勢為將解密需要的周期數由32減少為16個周期,且減少了15個48位的輪密鑰存儲單元。
表3加解密密鑰生成器接口