專利名稱:分組密碼加密解密的方法及其加密解密器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸或存儲(chǔ)過程中的加密技術(shù),特別是一種分組密碼加密解密的方法及其加密解密器,本發(fā)明可以進(jìn)一步提高分組密碼加密的強(qiáng)度。
背景技術(shù):
21世紀(jì)是信息化的時(shí)代,信息日益網(wǎng)絡(luò)化,體現(xiàn)在商務(wù)電子化、金融電子化、政府辦公網(wǎng)絡(luò)化等方面,隨之而來的信息的安全與保密就變得越來越重要,而加密技術(shù)又是信息安全的基礎(chǔ),加密強(qiáng)度、加密速度都要提高,加密成本要降低。隨著計(jì)算技術(shù)的飛速發(fā)展,破密能力也驚人地發(fā)展,這就使得加密技術(shù)面臨嚴(yán)峻的挑戰(zhàn)。在20世紀(jì)末,一路領(lǐng)先的美國的DES已被攻破,還有一些其它分組密碼,比如DES的變形(包括NewDES、多重DES、白化了的DES、s-盒可選擇的DES、s-盒可變的DES、使用獨(dú)立子密鑰的DES、廣義DES等),Rc系列分組密碼(包括RC2、RC5、RC6等)Lucifer、Madryga、Feal-N、RedocII、RedocIII、LOKI系列分組密碼(包括LOKI89、LOKI91、LOKI97等),Khufa、Khafre、Safer系列分組密碼(包括Safer64、Safer128、Safer+等),MMB、CAST、3WAY、TEA、MacGuffin、SHARK、BEAR、LION、CA.1.1、CRAB、Blowfish、GOST、SQUARE、MISTY、SXAL8、MBAL、Akelarre、15個(gè)AES候選算法等;目前國際公開的分組密碼不下100種,包括2001年美國出臺(tái)的AES,在這些算法中并沒有引進(jìn)新的思維、新的概念、新的理論,只能依靠提高分組長度來提高加密強(qiáng)度,且破密能力與加密能力正在同步增長。中國專利z199107959.8公開了一種排列碼加密解密方法及其排列碼加密解密器。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種分組密碼加密解密的方法及其加密解密器,可以克服現(xiàn)有技術(shù)的缺點(diǎn)和不足。本發(fā)明也是對現(xiàn)有技術(shù)的改進(jìn),提出了一種新的加密概念模型構(gòu)成和方法,以求達(dá)到在不增加分組長度的情況下提高加密強(qiáng)度,并且與其它加密解密方法相比,可達(dá)到相同的加密強(qiáng)度,又可以使加密設(shè)備做得更簡單。使用排列碼加密法時(shí),當(dāng)分組長度n=4時(shí)就可以做到有足夠大的加密強(qiáng)度,比n=64的DES的加密強(qiáng)度還大。分組長度小,就可以是加解密設(shè)備做得更簡單。
本發(fā)明對于任意的分組密碼,基本構(gòu)成設(shè)明文為m1,m2,m3.........。
對應(yīng)的密文為c1,c2,c3.........。
Key為密鑰。f(m,Key)是分組加密函數(shù),f-1(c,Key)是分組解密函數(shù)。
現(xiàn)有的加密方法是c1=f(m1,Key),c2=f(m2,Key),c3=f(m3,Key).........。
現(xiàn)有的解密方法是m1=f-1(c1,Key),m2=f-1(c2,Key),m3=f-1(c3,Key).........。
為了增加密碼分析的難度,本發(fā)明是使用一個(gè)變動(dòng)的Key,每個(gè)、或者每幾個(gè)分組使用一個(gè)不同的Key,這樣可以使用Key1,Key2,Key3..........。
具體的方法是輸入密鑰Key,計(jì)算Key1=Key,Key2=F(Key1,m1),Key3=F(Key2,m2),以下文中F是由兩個(gè)已知變量計(jì)算一個(gè)新變量的函數(shù),后面不再解釋。例如,Key3=F(Key2,m2)可以表示為Key3=Key2+m2,也可以表示為Key3=Key2-m2,還可以表示為Key3=Key2m2(表示是異或運(yùn)算,一種標(biāo)準(zhǔn)的邏輯運(yùn)算),只要已知(Key2,m2),計(jì)算出Key3的所有方法都可以。
........Keyi=F(Keyi-1,mi-1)...........。
加密方法是c1=f(m1,Key1),c2=f(m2,Key2),c3=f(m3,Key3).........。
對應(yīng)的解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key2),m3=f-1(c3,Key3).........;或者這樣加密c1=f(m1,Key1),c2=f(m2,Key1),c3=f(m3,Key1).........;ci+1=f(mi+1,Key2),ci+2=f(mi+2,Key2),ci+3=f(mi+3,Key2).........;c2i+1=f(m2i+1,Key3),c2i+2=f(m2i+2,Key3),c2i+3=f(m2i+3,Key3).........;.......。
對應(yīng)的解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key1),m3=f-1(c3,Key1).........;mi+1=f-1(ci+1,Key2),mi+2=f-1(ci+2,Key2),mi+3=f-1(ci+3,Key2).........;m2i+1=f-1(c2i+1,Key3),m2i+2=f-1(c2i+2,Key3),m2i+3=f-1(c2i+3,Key3).........;..........;如果加密強(qiáng)度仍不能滿足既定的要求,可以把加密后的密文再換一次密鑰加密一遍。這個(gè)過程可以重復(fù)多遍。當(dāng)然這樣會(huì)產(chǎn)生很大的延遲,為了少產(chǎn)生延遲,可以每個(gè)分組加密多遍,再進(jìn)行下一個(gè)分組的加密和整個(gè)明文加密完后再換一個(gè)密鑰重新加密,這個(gè)過程根據(jù)需要可以重復(fù)多編。
邏輯尺的應(yīng)用因?yàn)榧用芘c解密是對稱的,所以還可以用一個(gè)0、1序列的密鑰控制加密或解密,比明文組短時(shí)讓密鑰循環(huán)使用,可以用0代表加密,1代表解密,也可以反過來用1代表加密,0代表解密,只要先加密后解密,或者先解密后加密都行。這個(gè)邏輯尺就是輸入的密鑰,在多遍加密中也可以使用邏輯尺來控制究竟哪一遍加密,哪一遍解密。
假如加密一遍的密鑰為k比特,加密j遍,可以輸入j*k比特的密鑰,依次每次使用k比特,輸入的密鑰也可以小于j*k比特,最小可以是k比特,在這種情況下,在多次加密時(shí),循環(huán)使用密鑰序列即可。
本發(fā)明的具體實(shí)施方案包括下述步驟一、加密的做法是
1)輸入密鑰Key(包括Key1,Key11,......Key1j),取出明文m1,用分組加密算法f(m1,Key1)產(chǎn)生密文c11和Key2(Key2=F(Key1,m1)),再用分組加密算法f(c11,Key11)產(chǎn)生密文c12和Key21(Key21=F(Key11,c11),......,最后再用分組加密算法f(c1j,Key1j)產(chǎn)生密文c1,至此完成了第一個(gè)分組m1的加密;2)取出明文m2,用分組加密算法f(m2,Key2)產(chǎn)生密文c21和Key3(Key3=F(Key2,m2)),再用分組加密算法f(c21,Key21)產(chǎn)生密文c22和Key31(Key31=F(Key21,c21)),......,最后再用分組加密算法f(c2j,Key2j)產(chǎn)生密文c2,至此完成了第二個(gè)分組m2的加密;3)取出明文m3,用分組加密算法f(m3,Key3)產(chǎn)生密文c31和Key4(Key4=F(Key3,m3)),再用分組加密算法f(c31,Key31)產(chǎn)生密文c32和Key41(Key41=F(Key31,c31)),......,最后再用分組加密算法f(c3j,Key3j)產(chǎn)生密文c3,至此完成了第三個(gè)分組m3的加密;.......,4)一直把所有的明文分組都加密完成。
二、解密的做法是1)輸入密鑰Key(包括Key1,Key11,......Key1j),取出密文c1,用分組解密算法f-1(c1,Key1j)產(chǎn)生密文c1j和Key2j(Key2j=F(Key1j,c1j)),再用分組解密算法f-1(c1j,Key1j-1)產(chǎn)生密文c1j-1和Key2j-1(Key2j-1=F(Key1j-1,c1j-1)),......最后再用分組加密算法f-1(c11,Key1)產(chǎn)生明文m1,至此完成了第一個(gè)分組c1的解密;2)取出密文c2,用分組解密算法f-1(c2,Key2j)產(chǎn)生密文c2j和Key3j(Key3j=F(Key2j,c2j)),再用分組解密算法f-1(c2j,Key2j-1)產(chǎn)生密文c2j-1和Key3j-1(Key3j-1=F(Key2j-1,c2j-1)),......最后再用分組加密算法f-1(c21,Key1)產(chǎn)生明文m2,至此完成了第二個(gè)分組c2的解密;3)取出密文c3,用分組解密算法f-1(c3,Key3j)產(chǎn)生密文c3j和Key4j(Key4j=F(Key3j,c3j)),再用分組解密算法f-1(c3j,Key3j-1)產(chǎn)生密文c3j-1和Key4j-1(Key4j-1=F(Key3j-1,c3j-1)),......最后再用分組加密算法f-1(c31,Key1)產(chǎn)生明文m3,至此完成了第三個(gè)分組c3的解密;.......
4)一直把所有的密文分組都解密完成。
三、邏輯尺的應(yīng)用因?yàn)榧用芘c解密是對稱的,所以還可以用一個(gè)0、1序列的密鑰控制加密或解密,比明文組短時(shí)讓密鑰循環(huán)使用,可以用0代表加密,1代表解密,也可以反過來用1代表加密,0代表解密,只要先加密后解密,或者先解密后加密都行。這個(gè)邏輯尺就是輸入的密鑰,在多遍加密中也可以使用邏輯尺來控制究竟哪一遍加密,哪一遍解密。
假如加密一遍的密鑰為k比特,加密j遍,可以輸入j*k比特的密鑰,依次每次使用k比特,輸入的密鑰也可以小于j*k比特,最小可以是k比特,在這種情況下,在多次加密時(shí),循環(huán)使用密鑰序列即可。
本發(fā)明提供的分組密碼加密解密器包括所述的分組密碼加密器包括明文輸入線,明文寄存器MR1、MR2、......明文寄存器MRj;密鑰Key1、Key2、......密鑰Keyj,密鑰寄存器R1、R2、......密鑰寄存器Rj,時(shí)鐘CLK,j分頻器,時(shí)序電路,明文寄存器MR2,延時(shí)電路,控制端R1、R2......Rj控制端,子密鑰電路,加密運(yùn)算電路和密鑰運(yùn)算電路構(gòu)成。
明文輸入線接明文寄存器MR1輸入端;密鑰Key1接密鑰寄存器R1輸入端、密鑰Key2接密鑰寄存器R2輸入端......密鑰Keyj接密鑰寄存器Rj輸入端;時(shí)鐘CLK接j分頻輸入端、同時(shí)接時(shí)序電路輸入端、同時(shí)接明文寄存器MR2輸入端、同時(shí)接延時(shí)電路輸入端;j分頻輸出端接明文寄存器MR1輸入端;時(shí)序電路輸出信號(hào)Q1接R1控制端和Rj控制端、時(shí)序控制信號(hào)Q2接R2控制端和R1控制端......;R1、R2......Rj的輸出端接子密鑰電路的輸入端;MR1的輸出端接MR2的輸入端;MR2的輸出端接加密運(yùn)算電路的輸入端和密鑰運(yùn)算電路的輸入端;子密鑰電路的輸出端接加密運(yùn)算的輸入端和密鑰運(yùn)算電路的輸入端;加密運(yùn)算電路的輸出端接密文寄存器ER1的輸入端;ER1的輸出端接MR2的輸入端,同時(shí)輸出密文;密鑰運(yùn)算電路的輸出端接R1、R2......Rj的輸入端。
所述的分組密碼解密器包括密文輸入端,密文寄存器ERj、ERj-1、......、密文寄存器ER2、密文寄存器ER1;密鑰Keyj、密鑰Keyj-1、......密鑰Key1,密鑰寄存器Rj、Rj-1、......密鑰寄存器R1,時(shí)鐘CLK,j分頻器,時(shí)序電路,延時(shí)電路,控制端Rj、Rj-1、......R1控制端,子密鑰電路,加密運(yùn)算電路和密鑰運(yùn)算電路構(gòu)成。
密文輸入線接密文寄存器ER2輸入端;密鑰Keyj接密鑰寄存器Rj輸入端、密鑰Keyj-1接密鑰寄存器Rj-1輸入端......密鑰Key1接密鑰寄存器R1輸入端;時(shí)鐘CLK接j分頻輸入端、同時(shí)接時(shí)序電路輸入端、同時(shí)接密文寄存器ER3輸入端、同時(shí)接延時(shí)電路輸入端;j分頻輸出端接密文寄存器ER3輸入端;時(shí)序電路輸出信號(hào)Q1接Rj控制端和R1控制端、時(shí)序控制信號(hào)Q2接Rj-1控制端和Rj控制端......;R1、R2......Rj的輸出端接子密鑰電路的輸入端;ER2的輸出端接ER3的輸入端ER3的輸出端接解密運(yùn)算電路的輸入端和密鑰運(yùn)算電路的輸入端;子密鑰電路的輸出端接解密運(yùn)算電路的輸入端和密鑰運(yùn)算電路的輸入端;解密運(yùn)算的輸出端接明文寄存器MR3的輸入端;MR3的輸出端接ER3的輸入端,同時(shí)輸出明文;密鑰運(yùn)算電路的輸出端接R1、R2......Rj的輸入端。
本發(fā)明與現(xiàn)有技術(shù)相比有如下有益效果對于美國的DES算法,其分組長度n=64的算法被破密后,只能靠加大分組長度n來提高加密強(qiáng)度。而現(xiàn)在我們提供的方法用于排列碼加密法時(shí),當(dāng)分組長度n=4時(shí)就可以做到有足夠大的加密強(qiáng)度,比n=64的DES的加密強(qiáng)度還大。分組長度n小的好處是設(shè)備的復(fù)雜度降低,可靠性增加,加密速度加快。
利用本發(fā)明可以設(shè)計(jì)出加密強(qiáng)度可以大于2n的加密方法。適用于一切可以利用分組密碼加密的場合,可以用于存儲(chǔ)的數(shù)字量加密,又可以用于傳輸?shù)臄?shù)字信號(hào)加密,由于它的快速性,還可以用于實(shí)時(shí)系統(tǒng)的加密中。
圖1當(dāng)Key=4時(shí)的比特交換示意圖;圖2加密過程示意圖;圖3解密過程示意圖;圖4Key的構(gòu)成示意圖。
圖5Key的另一種構(gòu)成示意圖。
圖6對一個(gè)明文分組進(jìn)行加密時(shí)邏輯尺的應(yīng)用。
圖7對一個(gè)密文分組進(jìn)行解密時(shí)邏輯尺的應(yīng)用。
圖8對所有明文分組進(jìn)行縱向多遍加密過程中邏輯尺的應(yīng)用。
圖9對所有密文分組進(jìn)行縱向多遍解密過程中邏輯尺的應(yīng)用。
圖10對所有明文分組進(jìn)行橫向多遍加密過程中邏輯尺的應(yīng)用。
圖11對所有密文分組進(jìn)行橫向多遍解密過程中邏輯尺的應(yīng)用。
圖12對明文進(jìn)行縱向加密過程中以密鑰序列與明文作為邏輯尺的應(yīng)用。
圖13加密電路圖。
圖14解密電路圖。
具體實(shí)施例方式
本發(fā)明可通過實(shí)施例詳細(xì)說明,但它們不是對本發(fā)明做任何限制。
實(shí)施例1n=4的排列碼程序設(shè)計(jì)說明1.建立1個(gè)n=4的排列碼表Key01230 01231 01322 02133 02314 03125 0321........
23 3210這樣的表有24!個(gè),我們隨機(jī)建立其中的256個(gè)。當(dāng)Key=4時(shí),有如下的映射關(guān)系0→0,1→3,2→1,3→2。附圖1描述了Key=4時(shí)的比特交換示意圖。
為了節(jié)省存儲(chǔ)空間,0→00,1→01,2→10,3→11,Key用存儲(chǔ)地址來表示。這樣1個(gè)排列碼表占24個(gè)字節(jié)。
圖2加密過程示意圖;圖3解密過程示意圖;注加密解密執(zhí)行的順序既可以按行進(jìn)行,又可以按列進(jìn)行。
2.密鑰的設(shè)計(jì)用1個(gè)字節(jié)作整數(shù),它表示的范圍是0~255。根據(jù)其值就可以確定一個(gè)排列碼表。
在這個(gè)排列碼表中,再對該值進(jìn)行模24運(yùn)算。得到一個(gè)0~23的整數(shù),恰好對應(yīng)排列碼表中的Key值,由此可確定比特的交換順序。
3.關(guān)于求非的運(yùn)算,為了進(jìn)一步增加破密的難度,我們在交換順序的同時(shí),在某些路徑上求反。因?yàn)閚=4,0點(diǎn)有可能有4個(gè)路徑,1、2、3點(diǎn)都有可能有4個(gè)路徑,所以可能的路徑數(shù)共有16條,每一bit對應(yīng)一條路徑,使用16bit或者說2個(gè)字節(jié)控制哪個(gè)路徑上是否加非。用0表示不加非,用1表示加非,或者反之。
4.綜合以上密鑰的長度為24bit。附圖4和附圖5描述了密鑰Key的構(gòu)成。
5.為了進(jìn)一步增加加密強(qiáng)度,第二個(gè)分組的密鑰選取,是在原密鑰的基礎(chǔ)上與3個(gè)字節(jié)的明文進(jìn)行一種函數(shù)運(yùn)算,輸入都是已知,所以方法可行。(若明文不是3個(gè)字節(jié),首先通過任意定義的規(guī)則轉(zhuǎn)換成3個(gè)字節(jié)。)6.這樣一來每個(gè)分組的密鑰都是一個(gè)偽隨機(jī)數(shù)。但必定有明文的特征。但產(chǎn)生的密文隨機(jī)性很強(qiáng)。
7.以上過程連續(xù)執(zhí)行多遍,每遍都用不同的24bit的密鑰。
8.為了提高速度,并不是一遍加密結(jié)束后再進(jìn)行下一遍,而是一個(gè)分組連續(xù)進(jìn)行多遍加密。
這種做法理論上進(jìn)行4遍,加密強(qiáng)度已經(jīng)遠(yuǎn)遠(yuǎn)超過了24=16,因?yàn)榧用軓?qiáng)度是關(guān)于n的函數(shù),因此加密強(qiáng)度會(huì)遠(yuǎn)遠(yuǎn)大于2n。
實(shí)施例2以密鑰序列作為邏輯尺在加密解密過程中的應(yīng)用加密和解密是兩個(gè)相逆的過程,可以先加密后解密,也可以先解密后加密。我們可以用長為1比特的二進(jìn)制0或1作為密鑰來控制當(dāng)前要運(yùn)行加密模塊還是解密模塊。即可將輸入的密鑰序列Key作為邏輯尺,在多遍加密解密過程中來控制哪些遍進(jìn)行加密、哪些遍進(jìn)行解密。
現(xiàn)于該實(shí)施例中采用如下的符號(hào)約定執(zhí)行一遍加密需k bit密鑰,則執(zhí)行j遍加密解密,可輸入j*k bit長的密鑰;在每一遍加密解密時(shí)依次使用密鑰序列Key中的k bit;也可以輸入長度小于j*k bit長的密鑰,在這種情況下,循環(huán)使用該密鑰作為邏輯尺即可進(jìn)行j遍的加密過程。
在附圖6中,描述了在對一個(gè)明文分組進(jìn)行加密時(shí)邏輯尺的應(yīng)用;在該過程中,可把1代表加密而0代表解密。以p作為循環(huán)變量,其初值為1、終值為j;在每輪循環(huán)中,首先判斷是否滿足循環(huán)條件p<=j(luò),若不滿足,則進(jìn)行下一個(gè)分組的運(yùn)算;若滿足p<=j(luò),則讀取密鑰序列Key中的第p個(gè)比特Kp,再對Kp進(jìn)行判定,若Kp=1,則第p遍應(yīng)該執(zhí)行加密模塊,反之若Kp=0,則第p遍應(yīng)該執(zhí)行解密模塊。
至此,完成了對于該明文分組的加密過程。
對所有明文分組均利用上述方法,完成對所有明文分組的加密,也就完成了對于整個(gè)明文的加密。
注若密鑰序列Key的長度<j,則循環(huán)使用密鑰序列Key即可,直至利用密鑰序列Key完成對于明文的加密。
附圖8描述了對于所有明文分組進(jìn)行縱向多遍加密過程中邏輯尺的應(yīng)用。
附圖8中的符號(hào)約定如下明文分組為m1,m2,...mL;即明文分組個(gè)數(shù)為L;q為外層循環(huán)變量,其初值為1、終值為L;p為內(nèi)層循環(huán)變量,其初值為1、終值為j;K仍為密鑰序列,K中的第p個(gè)比特仍以Kp表示。
外層循環(huán)的判定條件為q<=L是否滿足如果不滿足q<=L,則已經(jīng)完成對所有明文分組的運(yùn)算,所有明文分組的加密過程全部完成,即完成了對于整個(gè)明文的加密過程;若滿足q<=L,則進(jìn)入內(nèi)層循環(huán),開始對于下一個(gè)分組的j遍加密過程。內(nèi)層循環(huán)的原理同附圖6,在此不再贅述。
附圖7描述了對于一個(gè)密文分組進(jìn)行解密時(shí)的邏輯尺的應(yīng)用。在對該分組進(jìn)行解密時(shí),以1代表解密而0代表加密。仍以p作為循環(huán)變量,其初值為1、終值為j;在每輪循環(huán)過程中,首先判斷是否滿足循環(huán)條件p<=j(luò)若不滿足,則進(jìn)行下一個(gè)分組的運(yùn)算;若滿足p<=j(luò),則讀取密鑰序列Key中的第p個(gè)比特Kp,再對Kp進(jìn)行判定若Kp=1,則第p遍應(yīng)該執(zhí)行解密模塊,反之若Kp=0,則第p遍應(yīng)該執(zhí)行加密模塊。
至此,完成了對于該密文分組的解密過程。
對所有密文分組均利用上述方法,完成對所有密文分組的解密,也就完成了對于整個(gè)密文的解密。
附圖9描述了對于所有密文分組進(jìn)行縱向多遍解密過程中邏輯尺的應(yīng)用。
附圖9中的符號(hào)約定如下密文分組為c1,c2,...cL;即密文分組個(gè)數(shù)為L;q為外層循環(huán)變量,其初值為1、終值為L;p為內(nèi)層循環(huán)變量,其初值為1、終值為j;K仍為密鑰序列,K中的第p個(gè)比特仍以Kp表示。
外層循環(huán)的判定條件為q<=L是否滿足如果不滿足q<=L,則已經(jīng)完成對所有密文分組的運(yùn)算,所有密文分組的解密過程全部完成,即完成了對于整個(gè)密文的解密過程;若滿足q<=L,則進(jìn)入內(nèi)層循環(huán),開始對于下一個(gè)密文分組的運(yùn)算。內(nèi)層循環(huán)的原理同附圖7,在此不再贅述。
在此需補(bǔ)充一點(diǎn)在附圖6中,對于同一分組沿縱向執(zhí)行了多遍的加密或解密模塊,從而完成了對該分組的加密過程;然后對其他分組執(zhí)行上述過程,從而完成對整個(gè)明文的加密過程;附圖8中描述了對于所有明文分組進(jìn)行縱向多遍加密過程中邏輯尺的應(yīng)用;在附圖7中,對于同一分組沿縱向執(zhí)行多遍加密或解密模塊,從而完成了對該分組的解密過程;然后對其他分組執(zhí)行上述過程,從而完成對整個(gè)密文的解密過程。附圖9中描述了對于所有密文分組進(jìn)行縱向多遍解密過程中邏輯尺的應(yīng)用;上述過程都是沿縱向完成的,另一種實(shí)施方案是沿橫向完成參見附圖2,可以先計(jì)算出c11,c21,c31......后,再去計(jì)算c12,c22,c32......,直至計(jì)算出所有的密文分組c1,c2,c3......為止,則橫向完成了對于整個(gè)明文的加密。
同理,在附圖3中,解密過程不僅可沿縱向進(jìn)行,也可以沿橫向進(jìn)行。
附圖10中描述了對于所有明文分組實(shí)現(xiàn)橫向多遍加密過程中邏輯尺的應(yīng)用。
附圖10中的符號(hào)約定如下明文分組為m1,m2,...mL;即明文分組個(gè)數(shù)為L;q為外層循環(huán)變量,其初值為1、終值為j;p為內(nèi)層循環(huán)變量,其初值為1、終值為L;K仍為密鑰序列,K中的第p個(gè)比特仍以Kp表示。
外層循環(huán)判定條件為是否滿足q<=j(luò);若不滿足q<=j(luò),則表明已橫向完成對所有明文明文分組的j遍運(yùn)算,則對明文的橫向多遍加密過程完成;若滿足q<=j(luò),則進(jìn)入內(nèi)層循環(huán),沿橫向執(zhí)行對于所有分組的下一遍加密模塊或解密模塊。
附圖11中描述了對于所有密文分組實(shí)現(xiàn)橫向多遍解密過程中邏輯尺的應(yīng)用。
附圖11中的符號(hào)約定如下密文分組為c1,c2,...cL;即明文分組個(gè)數(shù)為L;q為外層循環(huán)變量,其初值為1、終值為j;p為內(nèi)層循環(huán)變量,其初值為1、終值為L;K仍為密鑰序列,在此作為邏輯尺使用;K中的第p個(gè)比特仍以Kp表示。
外層循環(huán)判定條件為是否滿足q<=j(luò);若不滿足q<=j(luò),則表明已橫向完成對所有密文分組的j遍運(yùn)算,則對密文的橫向多遍解密過程完成;若滿足q<=j(luò),則進(jìn)入內(nèi)層循環(huán),沿橫向執(zhí)行對于所有分組的下一遍加密模塊或解密模塊。
注在該實(shí)施例的上述所有附圖內(nèi),在對明文的加密過程中,均以1代表執(zhí)行加密模塊而以0代表解密模塊,而對于密文的解密過程中,均以0代表加密模塊而以1代表解密模塊;也可以在對明文的加密過程中以0代表加密模塊而以1代表解密模塊,在對密文的解密過程中以1代表加密模塊而以0代表解密模塊。只要加密過程中所采用的邏輯與解密過程中的邏輯相反即可。
實(shí)施例3以密鑰序列和明文分組作為邏輯尺在加密解密過程中的應(yīng)用在實(shí)施例2各例中,均以密鑰序列Key作為邏輯尺,來控制哪一遍執(zhí)行加密模塊、哪一遍執(zhí)行解密模塊;在該實(shí)施例中,以密鑰序列和明文分組作為邏輯尺。
圖12描述了對明文進(jìn)行縱向加密過程中以密鑰序列與明文作為邏輯尺的應(yīng)用。在該圖中,對各明文分組m1,m2,...mL進(jìn)行縱向加密;首先使用密鑰序列Key作為邏輯尺,當(dāng)密鑰序列Key作為邏輯尺用完時(shí),使用明文分組m1的各個(gè)比特作為邏輯尺繼續(xù)使用,來控制在哪一遍執(zhí)行加密、哪一遍執(zhí)行解密。若明文分組m1仍然不夠,則當(dāng)m1用完后,開始使用明文分組m2的各個(gè)比特作為邏輯尺繼續(xù)使用,來控制在哪一遍執(zhí)行加密、哪一遍執(zhí)行解密。。。。。。直到整個(gè)加密過程完成。
實(shí)施例4以n=4為例描述硬件加密和解密過程,取j=3,即子密鑰為3組,每一分組加(解)密3次。
加密過程如下輸入明文(01000000)B,輸入(100101010010101010101010)B到Key1,(101000110101001010110110)B到Key2,輸入密鑰(110101110011001010101000)B到Key3。
CLK到來,3分頻輸出高電平,第一組明文(0100)B由寄存器MR1輸入MR2;時(shí)序電路輸出Q1為高電平,其余為低電平,密鑰寄存器R1打開,其余密鑰寄存器關(guān)閉,Key1輸入到子密鑰電路,子密鑰電路對Key1前8位對(24)D取模得到(5)D;子密鑰電路處理子密鑰后輸入到加密運(yùn)算和密鑰運(yùn)算;CLK到來,明文輸入到加密運(yùn)算和密鑰運(yùn)算;第一組明文經(jīng)第一次加密為(0011)B,輸入到MR2;密鑰運(yùn)算輸出(100101010010101010101110)B輸入到R1為Key1’;CLK到來,時(shí)序電路輸出Q2為高電平,其余為低電平,R2打開,其余密鑰寄存器關(guān)閉,Key2輸入到子密鑰電路,子密鑰電路對Key2前8位對(24)D取模得到(19)D;子密鑰電路處理子密鑰后輸入到加密運(yùn)算和密鑰運(yùn)算;CLK到來,第一次中間秘文輸入到加密運(yùn)算和密鑰運(yùn)算;第一次中間秘文經(jīng)第二次加密為(1000)B,輸入到MR2;密鑰運(yùn)算輸出(101000110101001010111001)B輸入到R2為Key2’;CLK到來,時(shí)序電路輸出Q3為高電平,其余為低電平,R3打開,其余密鑰寄存器關(guān)閉,Key3輸入到子密鑰電路,子密鑰電路對Key3前8位對(24)D取模得到(23)D;子密鑰電路處理子密鑰后輸入到加密運(yùn)算和密鑰運(yùn)算;CLK到來,第二次中間秘文輸入到加密運(yùn)算和密鑰運(yùn)算;第二次中間秘文經(jīng)第三次加密為(1100)B,輸入到MR2;密鑰運(yùn)算輸出(110101110011001010100000)B輸入到R3為Key3’;輸出第一組密文(1100)B。
CLK到來,3分頻輸出高電平,第二組明文(0000)B由寄存器MR1輸入MR2;時(shí)序電路輸出Q1為高電平,其余為低電平,密鑰寄存器R1打開,其余密鑰寄存器關(guān)閉,Key1’輸入到子密鑰電路,子密鑰電路對Key1’前8位對(24)D取模得到(5)D;子密鑰電路處理子密鑰后輸入到加密運(yùn)算和密鑰運(yùn)算;CLK到來,明文輸入到加密運(yùn)算和密鑰運(yùn)算;第二組明文經(jīng)第一次加密為(0011)B,輸入到MR2;密鑰運(yùn)算輸出(100101010010101010101110)B輸入到R1為Key1”;CLK到來,時(shí)序電路輸出Q2為高電平,其余為低電平,R2打開,其余密鑰寄存器關(guān)閉,Key2’輸入到子密鑰電路,子密鑰電路對Key2’前8位對(24)D取模得到(19)D;子密鑰電路處理子密鑰后輸入到加密運(yùn)算和密鑰運(yùn)算;CLK到來,第一次中間秘文輸入到加密運(yùn)算和密鑰運(yùn)算;第一次中間秘文經(jīng)第二次加密為(1101)B,輸入到MR2;密鑰運(yùn)算輸出(101000110101001010111100)B輸入到R2為Key2’;CLK到來,時(shí)序電路輸出Q3為高電平,其余為低電平,R3打開,其余密鑰寄存器關(guān)閉,Key3輸入到子密鑰電路,子密鑰電路對Key3前8位對(24)D取模得到(23)D;子密鑰電路處理子密鑰后輸入到加密運(yùn)算和密鑰運(yùn)算;CLK到來,第二次中間秘文輸入到加密運(yùn)算和密鑰運(yùn)算;第二次中間秘文經(jīng)第三次加密為(0101)B,輸入到MR2;密鑰運(yùn)算輸出(110101110011001010101101)B輸入到R3為Key3’;輸出第二組密文(0101)B。
解密過程如下輸入密文(11000101)B,輸入(100101010010101010101010)B到Key1,(101000110101001010110110)B到Key2,輸入密鑰(110101110011001010101000)B到Key3。
CLK到來,3分頻輸出高電平,第一組密文(1100)B由寄存器ER2輸入ER3;時(shí)序電路輸出Q1為高電平,其余為低電平,密鑰寄存器R3打開,其余密鑰寄存器關(guān)閉,Key3輸入到子密鑰電路,子密鑰電路對Key3前8位對(24)D取模得到(23)D;子密鑰電路處理子密鑰后輸入到解密運(yùn)算和密鑰運(yùn)算;CLK到來,密文輸入到解密運(yùn)算和密鑰運(yùn)算;第一組密文經(jīng)第一次解密為(1000)B,輸入到MR3;密鑰運(yùn)算輸出(110101110011001010110000)B輸入到R3為Key3’;CLK到來,時(shí)序電路輸出Q2為高電平,其余為低電平,R2打開,其余密鑰寄存器關(guān)閉,Key2輸入到子密鑰電路,子密鑰電路對Key2前8位對(24)D取模得到(19)D;子密鑰電路處理子密鑰后輸入到解密運(yùn)算和密鑰運(yùn)算;CLK到來,第一次中間明文輸入到解密運(yùn)算和密鑰運(yùn)算;第一次中間明文經(jīng)第二次解密為(0011)B,輸入到ER3;密鑰運(yùn)算輸出(101000110101001010111001)B輸入到R2為Key2’;CLK到來,時(shí)序電路輸出Q3為高電平,其余為低電平,R1打開,其余密鑰寄存器關(guān)閉,Key1輸入到子密鑰電路,子密鑰電路對Key1前8位對(24)D取模得到(5)D;子密鑰電路處理子密鑰后輸入到解密運(yùn)算和密鑰運(yùn)算;CLK到來,第二次中間明文輸入到解密運(yùn)算和密鑰運(yùn)算;第二次中間明文經(jīng)第三次解密為(0100)B,輸入到MR3;密鑰運(yùn)算輸出(100101010010101010101110)B輸入到R1為Key1’;輸出第一組明文(0100)B。
CLK到來,3分頻輸出高電平,第二組密文(0101)B由寄存器ER2輸入ER3;時(shí)序電路輸出Q1為高電平,其余為低電平,密鑰寄存器R3打開,其余密鑰寄存器關(guān)閉,Key3’輸入到子密鑰電路,子密鑰電路對Key3’前8位對(24)D取模得到(23)D;子密鑰電路處理子密鑰后輸入到解密運(yùn)算和密鑰運(yùn)算;CLK到來,密文輸入到解密運(yùn)算和密鑰運(yùn)算;第二組密文經(jīng)第一次解密為(1101)B,輸入到ER3;密鑰運(yùn)算輸出(110101110011001010111101)B輸入到R3為Key3”;CLK到來,時(shí)序電路輸出Q2為高電平,其余為低電平,R2打開,其余密鑰寄存器關(guān)閉,Key2’輸入到子密鑰電路,子密鑰電路對Key2’前8位對(24)D取模得到(19)D;子密鑰電路處理子密鑰后輸入到解密運(yùn)算和密鑰運(yùn)算;CLK到來,第一次中間明文輸入到解密運(yùn)算和密鑰運(yùn)算;第一次中間明文經(jīng)第二次解密為(0011)B,輸入到ER3;密鑰運(yùn)算輸出(101000110101001010111100)B輸入到R2為Key2”;CLK到來,時(shí)序電路輸出Q3為高電平,其余為低電平,R1打開,其余密鑰寄存器關(guān)閉,Key1’輸入到子密鑰電路,子密鑰電路對Key1’前8位對(24)D取模得到(5)D;子密鑰電路處理子密鑰后輸入到解密運(yùn)算和密鑰運(yùn)算;CLK到來,第二次中間明文輸入到解密運(yùn)算和密鑰運(yùn)算;第二次中間明文經(jīng)第三次解密為(0000)B,輸入到ER3;密鑰運(yùn)算輸出(100101010010101010101110)B輸入到則為Key1”;輸出第二組明文(0000)B。
權(quán)利要求
1.一種分組密碼加密解密的方法,它包括下述步驟設(shè)明文為m1,m2,m3.........;對應(yīng)的密文為c1,c2,c3.........;Key為密鑰;f(m,Key)是分組加密函數(shù),f-1(c,Key)是分組解密函數(shù);加密方法是c1=f(m1,Key),c2=f(m2,Key),c3=f(m3,Key).........;解密方法是m1=f-1(c1,Key),m2=f-1(c2,Key),m3=f-1(c3,Key).........;其特征在于使用一個(gè)變動(dòng)的Key,每個(gè)、或者每幾個(gè)分組使用一個(gè)不同的KeyKey1,Key2,Key3..........;輸入密鑰Key,計(jì)算Key1=Key,Key2=F(Key1,m1),Key3=F(Key2,m2)........Keyi=F(Keyi-1,mi-1)...........;F是由兩個(gè)已知變量計(jì)算一個(gè)新變量的函數(shù);加密方法是c1=f(m1,Key1),c2=f(m2,Key2),c3=f(m3,Key3).........;或者c1=f(m1,Key1),c2=f(m2,Key1),c3=f(m3,Key1).........;ci+1=f(mi+1,Key2),ci+2=f(mi+2,Key2),ci+3=f(mi+3,Key2).........;c21+1=f(m2i+1,Key3),c2i+2=f(m2i+2,Key3),c2i+3=f(m2i+3,Key3).........;對應(yīng)的解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key2),m3=f-1(c3,Key3).........;或者解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key1),m3=f-1(c3,Key1).........;mi+1=f-1(ci+1,Key2),mi+2=f-1(ci+2,Key2),mi+3=f-1(ci+3,Key2).........;m2i+1=f-1(c2i+1,Key3),m2i+2=f-1(c2i+2,Key3),m2i+3=f-1(c2i+3,Key3).........;..........。
2.按照權(quán)利要求1所說的分組密碼加密解密的方法,其特征在于把所說的加密后的密文再換一次密鑰加密一遍或分組重復(fù)多遍;所說的換密鑰加密重復(fù)多遍中,包括先是每個(gè)分組加密多遍,然后再進(jìn)行下一個(gè)分組的加密和整個(gè)明文加密完后再換一個(gè)密鑰重新加密,這個(gè)過程根據(jù)需要可以重復(fù)多編。
3.按照權(quán)利要求1或2所說的分組密碼加密解密的方法,其特征在于應(yīng)用邏輯尺控制加密或解密。
4.按照權(quán)利要求3所說的分組密碼加密解密的方法,其特征在于所說的邏輯尺是0、1序列,用0代表加密,1代表解密,或用1代表加密,0代表解密。
5.一種分組密碼加密解密的方法,其特征在于它包括下述步驟加密的做法1)輸入密鑰Key,包括Key1,Key11,......Key1j,取出明文m1,用分組加密算法f(m1,Key1)產(chǎn)生密文c11和Key2,Key2=F(Key1,m1)再用分組加密算法f(c11,Key11)產(chǎn)生密文c12和Key21,Key21=F(Key11,c11),......最后再用分組加密算法f(c1j,Key1j)產(chǎn)生密文c1,至此完成了第一個(gè)分組m1的加密;2)取出明文m2,用分組加密算法f(m2,Key2)產(chǎn)生密文c21和Key3,Key3=F(Key2,m2),再用分組加密算法f(c21,Key21)產(chǎn)生密文c22和Key31,Key31=F(Key21,c21),......最后再用分組加密算法f(c2j,Key2j)產(chǎn)生密文c2,至此完成了第二個(gè)分組m2的加密;3)取出明文m3,用分組加密算法f(m3,Key3)產(chǎn)生密文c31和Key4,Key4=F(Key3,m3),再用分組加密算法f(c31,Key31)產(chǎn)生密文c32和Key4,Key41=F(Key31,c31),......最后再用分組加密算法f(c3j,Key3j)產(chǎn)生密文c3,至此完成了第三個(gè)分組m3的加密;.......;4)一直把所有的明文分組都加密完成;解密的做法1)輸入密鑰Key,包括Key1,Key11,......Key1j,取出密文c1,用分組解密算法f-1(c1,Key1j)產(chǎn)生密文c1j和Key2j,Key2j=F(Key1j,c1j),再用分組解密算法f-1(c1j,Key1j-1)產(chǎn)生密文c1j-1和Key2j-1,Key2j-1=F(Key1j-1,c1j-1),......,最后再用分組加密算法f-1(c11,Key1)產(chǎn)生明文m1,至此完成了第一個(gè)分組c1的解密;2)取出密文c2,用分組解密算法f-1(c2,Key2j)產(chǎn)生密文c2j和Key3j,Key3j=F(Key2j,c2j),再用分組解密算法f-1(c2j,Key2j-1)產(chǎn)生密文c2j-1和Key3j-1,Key3j-1=F(Key2j-1,c2j-1),......,最后再用分組加密算法f-1(c21,Key1)產(chǎn)生明文m2,至此完成了第二個(gè)分組c2的解密;3)取出密文c3,用分組解密算法f-1(c3,Key3j)產(chǎn)生密文c3j和Key4j,Key4j=F(Key3j,c3j),再用分組解密算法f-1(c3j,Key3j-1)產(chǎn)生密文c3j-1和Key4j-1,Key4j-1=F(Key3j-1,c3j-1),......,最后再用分組加密算法f-1(c31,Key1)產(chǎn)生明文m3,至此完成了第三個(gè)分組c3的解密;.......;4)一直把所有的密文分組都解密完成。
6.按照權(quán)利要求5所說的分組密碼加密解密的方法,其特征在于把所說的加密后的密文再換一次密鑰加密一遍或分組重復(fù)多遍;所說的換密鑰加密重復(fù)多遍中,包括先是每個(gè)分組加密多遍,然后再進(jìn)行下一個(gè)分組的加密和整個(gè)明文加密完后再換一個(gè)密鑰重新加密,這個(gè)過程根據(jù)需要可以重復(fù)多編。
7.按照權(quán)利要求5所說的分組密碼加密解密的方法,其特征在于應(yīng)用邏輯尺控制加密或解密。
8.按照權(quán)利要求7所說的分組密碼加密解密的方法,其特征在于所說的邏輯尺是0、1序列,用0代表加密,1代表解密;或用1代表加密,0代表解密。
9.一種分組密碼加密解密器,其特征在于所述的分組密碼加密器包括明文輸入線,明文寄存器MR1、MR2、......明文寄存器MRj;密鑰Key1、Key2、......密鑰Keyj,密鑰寄存器R1、R2、......密鑰寄存器Rj,時(shí)鐘CLK,j分頻器,時(shí)序電路,明文寄存器MR2,延時(shí)電路,控制端R1、R2......Rj控制端,子密鑰電路,加密運(yùn)算電路和密鑰運(yùn)算電路構(gòu)成;明文輸入線接明文寄存器MR1輸入端;密鑰Key1接密鑰寄存器R1輸入端、密鑰Key2接密鑰寄存器R2輸入端......密鑰Keyj接密鑰寄存器Rj輸入端;時(shí)鐘CLK接j分頻輸入端、同時(shí)接時(shí)序電路輸入端、同時(shí)接明文寄存器MR2輸入端、同時(shí)接延時(shí)電路輸入端;j分頻輸出端接明文寄存器MR1輸入端;時(shí)序電路輸出信號(hào)Q1接R1控制端和Rj控制端、時(shí)序控制信號(hào)Q2接R2控制端和R1控制端......;R1、R2......Rj的輸出端接子密鑰電路的輸入端;MR1的輸出端接MR2的輸入端;MR2的輸出端接加密運(yùn)算電路的輸入端和密鑰運(yùn)算電路的輸入端;子密鑰電路的輸出端接加密運(yùn)算的輸入端和密鑰運(yùn)算電路的輸入端;加密運(yùn)算電路的輸出端接密文寄存器ER1的輸入端;ER1的輸出端接MR2的輸入端,同時(shí)輸出密文;密鑰運(yùn)算電路的輸出端接R1、R2......Rj的輸入端。所述的分組密碼解密器包括密文輸入端,密文寄存器ERj、ERj-1、......、密文寄存器ER2、密文寄存器ER1;密鑰Keyj、密鑰Keyj-1、......密鑰Key1,密鑰寄存器Rj、Rj-1、......密鑰寄存器R1,時(shí)鐘CLK,j分頻器,時(shí)序電路,延時(shí)電路,控制端Rj、Rj-1、......R1控制端,子密鑰電路,加密運(yùn)算電路和密鑰運(yùn)算電路構(gòu)成;密文輸入線接密文寄存器ER2輸入端;密鑰Keyj接密鑰寄存器Rj輸入端、密鑰Keyj-1接密鑰寄存器Rj-1輸入端......密鑰Key1接密鑰寄存器R1輸入端;時(shí)鐘CLK接j分頻輸入端、同時(shí)接時(shí)序電路輸入端、同時(shí)接密文寄存器ER3輸入端、同時(shí)接延時(shí)電路輸入端;j分頻輸出端接密文寄存器ER3輸入端;時(shí)序電路輸出信號(hào)Q1接Rj控制端和R1控制端、時(shí)序控制信號(hào)Q2接Rj-1控制端和Rj控制端......;R1、R2......Rj的輸出端接子密鑰電路的輸入端;ER2的輸出端接ER3的輸入端;ER3的輸出端接解密運(yùn)算電路的輸入端和密鑰運(yùn)算電路的輸入端;子密鑰電路的輸出端接解密運(yùn)算電路的輸入端和密鑰運(yùn)算電路的輸入端;解密運(yùn)算的輸出端接明文寄存器MR3的輸入端;MR3的輸出端接ER3的輸入端,同時(shí)輸出明文;密鑰運(yùn)算電路的輸出端接R1、R2......Rj的輸入端。
全文摘要
本發(fā)明涉及一種分組密碼加密解密的方法及其加密解密器。使用一個(gè)變動(dòng)的Key,每個(gè)、或者每幾個(gè)分組使用一個(gè)不同的Key,這樣可以使用Key
文檔編號(hào)H04L9/06GK1697369SQ20051001380
公開日2005年11月16日 申請日期2005年6月14日 優(yōu)先權(quán)日2005年6月14日
發(fā)明者武優(yōu)西, 武金木, 洪流濤, 姚芳, 李艷, 劉依, 張邑博 申請人:河北工業(yè)大學(xué)