專利名稱:數(shù)據(jù)加密的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明是屬于密碼學(xué)領(lǐng)域,特別是關(guān)于用密鑰控制進(jìn)行數(shù)據(jù)加密與解密的裝置和方法。
在現(xiàn)代的電子時代中,通過在公共電信信道上交換的數(shù)據(jù)處理日常的商務(wù)、公務(wù)及私人事務(wù)與日俱增。敏感的數(shù)據(jù)常常是儲存在不保密的存儲器中。通過電信信道交換的數(shù)據(jù)或存儲在保密存儲器中的數(shù)據(jù)易被其他人未經(jīng)許可的存取,因而就不能確保其機密性。
數(shù)據(jù)加密就是防止數(shù)據(jù)在存儲器中或在公共電信信道上傳輸時被非授權(quán)存取的一種方法。加密是把明文轉(zhuǎn)換為不可理解的密文的一種計算形式。解密是把無法理解的密文恢復(fù)為明文的加密的逆計算。
在實踐中,數(shù)據(jù)首先由加密者把明文加密成密文后才用于公共信道傳輸或儲存起來。收到或檢索這些數(shù)據(jù)時,解密者需把密文解密成明文,以便獲得原來的數(shù)據(jù)。
在密鑰加密方案中,用密鑰把有關(guān)加密者如何進(jìn)行加密的信息傳送到被授權(quán)的解密者那里,以便解密者能構(gòu)成一個逆運算,進(jìn)行有效的解密。另一方面,如果不是不可能的話,其它非授權(quán)解密者無此密鑰是十分困難破譯密文的。
常規(guī)的密鑰加密系統(tǒng)中,建立一種計算的步驟序列或算法來加密解密。密鑰加密系統(tǒng)通常都是設(shè)計成算法是公知的。唯獨需要保密的是密鑰,而該密鑰只能是發(fā)送者和被授權(quán)接受者之間共享。
典型的密鑰提供一個用戶選擇的值,這值和明文一起作為算法的輸入進(jìn)行加密和解密。通常,這種算法通過某種模運算將密鑰值加到明文上來改變明文。
在實際上,密鑰通過保密信道由發(fā)送者秘密地傳送給授權(quán)接收者。這樣,授權(quán)接收者采用公知算法,借助密鑰有效地把密文解密。另一方面,其它不知道密鑰或沒有任何其它密碼破譯方式的人就不得不在該密鑰間隔中一個個的找出可能的密鑰,看看是否能可懂的解密。當(dāng)密鑰間隔很長時,認(rèn)為加密系統(tǒng)有很高的加密強度,而且其解密計算是不可行的。
如果在合理的時間內(nèi),利用合理的資源實際上不能實現(xiàn),這個計算任務(wù)是不可行的計算。如在可能的最快的計算機上計算100年可認(rèn)為是不合理的。類似地,使用100萬億美元專門制造的計算機可認(rèn)為是不合理的。
密鑰系統(tǒng)的一個例子是“一次密鑰體制”“one-time pad”)或Vernam方案,首先把明文編碼為二進(jìn)制比特串并且用模2加法加到密鑰上,把明文轉(zhuǎn)換成密文。密鑰是和明文一樣長的一串隨機比特,而且只能用一次。該方案被證明非常安全,但是不希望的是需要密鑰的每個位對應(yīng)明文的每個位。要求密鑰的位和要傳遞的信息一樣長,而不能再次使用,使得從現(xiàn)代數(shù)據(jù)事務(wù)處理的角度看這種方案是不實用的。
有人已試圖采用偽隨機生成器產(chǎn)生大量的密鑰隨機位。偽隨機生成器通常是用一個反饋移位寄存器來實現(xiàn)的。所產(chǎn)生的偽隨機序列完全取決于移位寄存器中的初始值。初始值可以用作密鑰,因此可以使少量的密鑰位產(chǎn)生一長串“隨機”位。然而,采用偽隨機生成器的一次插入密鑰體制加密系統(tǒng)對已知明文的攻擊很敏感,也就是在知道了一部分密文及其相應(yīng)的明文時是很敏感的。
其它的方法也考慮采用較短密鑰串的密鑰加密系統(tǒng)。在這些方法中較顯著的是“數(shù)據(jù)加密標(biāo)準(zhǔn)”(DES),由美國國家標(biāo)準(zhǔn)局于1977年元月在聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)出版物第46號上公布。自那以后,DES就被確定為一個標(biāo)準(zhǔn)的公共加密方法。根據(jù)DES,加密和解密是按塊進(jìn)行的,每個塊為64位長?;镜乃惴òㄒ幌盗蓄A(yù)定排列的十六次迭代,加入密鑰和在每個64位塊的每個分塊中的預(yù)定置換運算。56位密鑰通過移位寄存器循環(huán)生成十六個迭代值。
在過去十年中DES被正式作為標(biāo)準(zhǔn)采用,但普遍認(rèn)為現(xiàn)時應(yīng)該有一種新的更好的標(biāo)準(zhǔn)來取代。一個原因是56位密鑰太短。它僅能產(chǎn)生大約1017個可能密鑰的密鑰間隔。從現(xiàn)代高速和多處理器計算機來看,在此密鑰長度的密鑰間隔的窮舉在計算上是有可能的(即嘗試每個可能的密鑰,看是否能得到解密的方法)。另一個缺點是基本設(shè)計原理,例如各種不同排列的選擇、置換和所需的迭代次數(shù)都沒有清楚的說明。對有關(guān)該系統(tǒng)中設(shè)有“陷井”(trapdoor)的可能性一直都存爭論。因此,如果用戶不能容易地和精確地鑒定該系統(tǒng)的實際安全性,它就不能是一個真正的公共加密系統(tǒng)。此外,用戶沒有系統(tǒng)的方法修正算法或變換以使系統(tǒng)更安全或增加加密強度。不管怎樣,要增加加密強度,計算機的開銷就要呈指數(shù)增加。這是因為DES,和其它短密鑰方法一樣,基于增加計算量原理獲得加密。相同的短密鑰在不同條件下多次使用以把長的多的明文加密。
另一種方法是RSA(Rivest,Shamir和Adleman)公共密鑰系統(tǒng)。它基于計算復(fù)雜性(computationally complex)的原理獲得加密強度。用戶選擇兩個非常大的素數(shù),最好每個上百位的數(shù)字,產(chǎn)生一對不同的加密與解密的密鑰。加密是用密鑰在模算法下控制取冪完成的。密鑰可做成對任何要對信息加密的用戶是公共的,但它不能導(dǎo)出解密的密鑰。這樣,加密的信息只能由有解密密鑰的用戶讀出。不希望的特性是系統(tǒng)的安全取決于使用很難得到的兩個非常大的素數(shù)。并且,如果找出一種很快的方法分解這兩個大的素數(shù)的乘積,系統(tǒng)就很容易被攻破。
為此,仍需要有一種改進(jìn)的數(shù)據(jù)加密系統(tǒng)。
本發(fā)明總的目的是為數(shù)據(jù)加密和解密提供改進(jìn)的方法和裝置,而不會有前述方法的缺點。
本發(fā)明的一個目的是為加密和解密提供一種方法和裝置,其基本原理是清楚易懂并是可公開的,又不損害它的安全性。為此,本發(fā)明提供了一個真正的能夠作為標(biāo)準(zhǔn)的公共加密系統(tǒng)。
本發(fā)明的另一個目的是為數(shù)據(jù)加密和解密提供一種極其安全的方法和裝置。
本發(fā)明的再一個目的是為數(shù)據(jù)加密和解密提供一種用戶可以選擇加密強度的方法和裝置。
本發(fā)明的又一個目的是為數(shù)據(jù)加密和解密提供一種容易實現(xiàn)和計算開銷小的方法和裝置。
這些和其它的目的是通過產(chǎn)生一個用戶可以選擇的映射實現(xiàn)的,該映射是從一個巨大映射集選出來的。該映射作用于分成塊的明文。明文塊的大小N是用戶可選擇的,每個明文塊都等效于一個N維的明文向量x。該映射是由一組用戶可選擇的映射參數(shù)所指定的,該映射把明文向量x映射為N維的密文向量y。相應(yīng)的逆映射也存在,用于把密文向量y反向映射為明文向量x。映射集中映射的基本原理和形式是可以公開的而不會影響該方法和裝置的安全性。該映射的特征是映射集的大小是塊的大小和每個映射參數(shù)范圍的指數(shù)函數(shù)。
根據(jù)本發(fā)明的一個方面,塊的大小和每個映射參數(shù)的范圍也是保密的,只能通過密鑰在用戶之間秘密使用。這樣,不知道密鑰的人用通常破譯密碼的方法在映射集中嘗試每個映射從而找出明文是不可行的。這是因為他們面臨著在不確定大小的映射集中采用在計算上是不可行的窮舉法任務(wù)。
根據(jù)本發(fā)明的另一方面,塊的大小N和每映射參數(shù)的范圍無需保密。一旦選擇一個足夠大的值產(chǎn)生具有被認(rèn)為是非常大的預(yù)定大小的映射集,塊大小N和參數(shù)范圍作為標(biāo)準(zhǔn)并公開。要破譯密碼的其他人在這個非常大的映射集中仍然面臨在計算上不可行的窮舉法的任務(wù)。
在優(yōu)選的實施例中,映射的形式為yt=Axt+zt而相應(yīng)的逆映射為xt=A-1[yt-zt]這里,xt和yt分為與第t塊相應(yīng)的N維明文和密文向量;A和A-1分別是NxN映射和相應(yīng)的逆映射矩陣;而Zt是對應(yīng)于第t塊的N維第二個分向量。
A和Zt構(gòu)成映射參數(shù),它們是密鑰的一部分。實質(zhì)上,N×N映射矩陣A確定了該映射的空間。如果每個矩陣單元都可以在L范圍內(nèi)變化,那么映射集具有通過排列所有的矩陣單元得出的大小,即LN×N。這是一個指數(shù)函數(shù),而且即使N和L的值不是很大,其映射集也會變得非常之大。例如,如果N=3,L=100,整個映射集就有1018個映射。
在優(yōu)選的實施例中,加入第二個分向量Zt組成每個密文向量以進(jìn)一步增強本方法的安全性。特別是對已知明文的攻擊(attack)及對較小塊的統(tǒng)計攻擊這一潛在薄弱環(huán)節(jié)特別有效。在一種實現(xiàn)中,第二分向量是偽隨機向量,它隨塊的不同而變化。在另一種實現(xiàn)中,第二分向量是非線性函數(shù)或非線性函數(shù)和偽隨機向量的混合。
目前的實現(xiàn)方法沒有常規(guī)方法(加入一串偽隨機數(shù)對一明文串加密)相同的弱點。這是因為該映射發(fā)生在N維空間中,每個偽隨機數(shù)一般不像常規(guī)情況那樣直接加到單個的明文字符上以便把明文字符轉(zhuǎn)換為密文字符,而是加到明文字符的線性組合上。別人來分析這種方法的偽隨機數(shù)的問題在數(shù)學(xué)上稱為非確定的多項式(NP)問題。
本發(fā)明的一個重要方面是提供了映射結(jié)構(gòu),一般地其大小而且特別是具體映射的特性是用戶可以用密鑰隨意選擇的。沒有密鑰,其他人面臨在一個不確定的映射集中用窮舉法找出計算上不可行的任務(wù)。
本發(fā)明的另一個重要方面是計算機開銷只隨塊大小的平方增加,而加密強度呈指數(shù)增加。這樣,在計算機開銷很小的情況下得到很高的加密強度。相反,一般的加密系統(tǒng)計算機開銷隨加密強度的增加呈指數(shù)增長。這是NP的另一種表現(xiàn)形式。
本發(fā)明的其它目的、特點和優(yōu)點都會從后面的優(yōu)選實施例的描述中更好的理解,本發(fā)明的描述應(yīng)結(jié)合附圖。
圖1示意地示出了應(yīng)用于本發(fā)明的一個一般的密鑰加密系統(tǒng);圖2A示出常規(guī)加密系統(tǒng)的計算開銷與加密強度的關(guān)系曲線;圖2B示出本發(fā)明的計算開銷和加密強度的關(guān)系曲線;圖3示出本發(fā)明的加密強度隨映射參數(shù)的指數(shù)函數(shù)增加,映射參數(shù)諸如塊的大小N和每個映射矩陣單元的范圍L;圖4示出根據(jù)本發(fā)明的優(yōu)選實施例的加密裝置的功能方框圖;圖5示出根據(jù)本發(fā)明的優(yōu)選實施例的解密裝置的功能方框圖;圖6A示出塊大小N=9時的基本明文向量單元的各種排列或可能的選擇;和圖6B示出從一個塊中選擇一些單元的實際排列配置,塊單元是按3×3圖安排的。
圖1概要示出應(yīng)用于本發(fā)明的一個一般的密鑰加密系統(tǒng)。用加密裝置或過程30把明文x10加密成密文y20。加密者以用戶可選擇的密鑰k40控制加密過程30。密鑰k是與解密者秘密地共用的,解密者又用它控制解密裝置或過程50,將接收到的密文y解密為明文x。
本發(fā)明的一個重要方面是提供了映射結(jié)構(gòu)以生成映射集。用戶一般可用密鑰選擇映射集的大小和特別是指定的映射特性。沒有密鑰,其他人面臨在不確定的映射集中采用窮舉的計算上是不可行的任務(wù)。
映射將明文映射或加密為密文。每個映射都可由一組映射參數(shù)來確定,這組參數(shù)實質(zhì)上是用戶可選擇的,因為它是由密鑰k導(dǎo)出的。
本發(fā)明將每個明文流分成一塊一塊的明文向量。塊的大小也是用戶通過密鑰可選擇的。如果塊的大小為N,那么該映射把一個N維明文向量映射為對應(yīng)的N維密文向量。
映射的特征是映射集的大小取決于塊的大小和每個映射參數(shù)的范圍。用戶可以通過調(diào)整這些參數(shù)選擇所需要的加密強度等級。如果每個映射參數(shù)有一個范圍L,那么,如后面所述,映射集的大小為LNxN。這樣,密鑰的空間就隨N呈指數(shù)增加。例如,如果L=100,N=3,那么(k)≈1018,這比DES大十倍。如N擴大到9,則(k)≈10162。這就意味著攻擊者即使知道N的大小,在采用窮舉的辦法時需要嘗試10162個密鑰。在優(yōu)選的實施例中,N和L也是保密的,攻擊者面對的是一個不確定的大密鑰空間。
本發(fā)明的另一個重要方面是加密強度可增加到非常高等級而不需要相應(yīng)高的計算開銷。相反,傳統(tǒng)的加密系統(tǒng)的計算開銷隨加密強度的增加呈指數(shù)增長。這是NP的另一種表現(xiàn)形式。
圖2A示出傳統(tǒng)加密系統(tǒng)的計算開銷與加密強度之間的曲線關(guān)系。圖2B示出本發(fā)明的計算開銷與加密強度的曲線關(guān)系。兩圖比較可以看出,傳統(tǒng)加密系統(tǒng)的計算開銷呈指數(shù)增長,而本發(fā)明的計算開銷呈對數(shù)增長。這是因為本發(fā)明的計算開銷隨塊大小的平方增長,而加密強度卻呈指數(shù)增長。
圖3示出本發(fā)明的加密強度隨映射參數(shù)(如塊的大小N,每個映射矩陣單元的范圍L)的指數(shù)函數(shù)增長。圖中還表明了L兩個值之間的關(guān)系。L=2對應(yīng)的情況是每個映射矩陣單元可以如從“0”和“1”兩個數(shù)值中取一個。L=100對應(yīng)的情況是每個映射矩陣單元可以從100個可能值的范圍內(nèi)變化,例如從0到99或者負(fù)49到50。可以看出,本發(fā)明在計算開銷增加很小的情況下可獲得極高的加密強度。加密和解密的方法本發(fā)明的優(yōu)選方法包括以下步驟步驟1.選擇塊的大小N每個明文塊都對應(yīng)一個N維的明文向量。每個N維明文向量都可加密成N維的密文向量。因此,明文x=xi=[x1,x2,…,xN]密文y=y(tǒng)i=[y1,y2,…,yN] (1)i=1,2,…,N初始的明文通常是字符流的形式。通過預(yù)先定義的字符代碼表可把字符表達(dá)方式轉(zhuǎn)換為數(shù)字表達(dá)方式。xi和yi都是以數(shù)字表達(dá)方式編碼的。
一般來說,x1、x2、…、xn沒有必要與進(jìn)來的明文字符流中單元的相同序列對應(yīng)。映射前的初始塊排列可用于混洗塊單元的原始順序。初始塊排列可規(guī)定為加密信息的一部分,通過密鑰從一個用戶傳輸?shù)搅硪粋€用戶。這樣,另一個用戶可執(zhí)行相反的步驟,在密文已解密成明文后把明文重新排列成原來的順序。步驟2.由用戶選定的一組映射參數(shù)A,Zt,…生成第t塊的映射yt=Axt+zt(2)這里,t代表第t個塊或向量的標(biāo)記,A一般說來是一個可逆的NxN映射矩陣A=aij=a11a12…a1Na21a22…a2N······a1Na2N…aNN---(3)]]>i,j=1,2,…,N和zt=(zi)t=[z1,z2,…,zN]t(4)是第二個向量分量,它可根據(jù)具體實施例呈現(xiàn)不同的形式。在一個實施例中,它是隨塊的不同而變化的一個隨機向量,這將在后面更加詳細(xì)地敘述。例如(zi)t=biR(t,ci) (5)這里R(t,Ci)是t的偽隨機函數(shù),bi是一個常數(shù)向量,例如,b=〔b1,b2,…,6N〕,Gi是R的初始值。在另一種實施例中,(Zi)t也可能是xi的非線性函數(shù)。步驟3.用戶之間秘密地共用一個密鑰,把加密信息從一個用戶傳送到另一個用戶用于解密。例如k=〔塊大?。挥成鋮?shù),隨機函數(shù)的詳細(xì)描述;初始塊排列,。。。〕=〔N;A;zt,…;…〕(6)通常為分別控制加密和解密,密鑰k可推導(dǎo)出一組加密或解密參數(shù)。密鑰間隔{k}包括了所有可能的密鑰集,這些密鑰是由在其范圍內(nèi)每個密鑰參數(shù)所有可能的值生成的。例如,如果每個映射矩陣單元具有以可能值的范圍,如那么,給定N,一個密鑰空間中存在的可能密鑰集由下式給出{k}≈LN×N(7)步驟4.由方程(2)生成第t塊的逆映射xi=A-1(yt-zt) (8)逆映射參數(shù)A-1,zt,…是從方程(6)中的密鑰導(dǎo)出的。特別是逆映射矩陣是由對映射矩陣A求逆得到的。
映射或逆映射最好用整數(shù)量來實現(xiàn)以避免舍位問題。因此,所有的映射參數(shù)和明文表示式都是用整數(shù)給出的并且計算是精確的。在密文已解密成明文后,用解密時使用的同一字符代碼可把數(shù)字表示的明文解碼回原來用字符表示的明文。
在優(yōu)選的實施例中,第二向量分量zt不為零。加入該分量構(gòu)成每個密文向量以便進(jìn)一步增強安全性,特別是防止已知明文(known—plaintext)攻擊和在塊較小時統(tǒng)計攻擊的潛在弱點。
在一個實施例中,第二向量分量是逐塊變化的一個偽隨機向量。對第t塊,由方程(2),通過下式給出每個密文向量單元y1=a11x1+a12x2+,…,a1nxN+b1R(t,c1)y2=a21x1+a22x2+,…,a2nxN+b2R(t,c2)yN=aN1x1+aN2x2+,…,aNNxN+bNR(t,cN) (9)密鑰具有參數(shù)k=[N;aij; bf;ci;…)(10)解密由方程(8)給出,并且明文由下式恢復(fù)xt=A-1(yt-zt)在另一個優(yōu)選實施例中,采用一種快速計算把密文轉(zhuǎn)換成明文而無需對NxN映射矩陣A求逆。在此情況下,第二個分量(zi)t最好是非線性函數(shù)或偽隨機函數(shù)。如前面所述的,密文向量單元通常由方程(2)給出yi=aijxj+zi(11)i,j=1,2,…,N這種方法需要從每個明文向量中選出基礎(chǔ)明文向量單元的隨機子集∈{xi}s=s1,s2,…,sM因此{(lán)xi}={xs}u{xr}r=r1,r2,…,rN-M1<M≤N把密文映射定義為xs's的函數(shù)yf=aisxs+zf(12)具有如下特性(a)當(dāng)i=s時ys=assxs+zs(13)且zs是如方程(5)中的隨機值zs=bsR(t,cs)(b)當(dāng)i=r時yr=arsxs+zr(14)這里zr=brG(xr) (15)且 G(xt)是一個非線性函數(shù),例如,G(xr)=xr3(16)由方程(13)得出xs=[ys-bsR(t,cs)]/ass由方程(14)和(15)得出xr=G-1[zr/br]=G-1[(yr-arsxs)/br]=G-1[yr-((ys-bsR(t,cs))ars/ass)/br]例如N=9s=1,5,8那么 i=1,2,…9r=2,3,4,6,7,9而密鑰是k=[N=9;s1=1,s2=5,s3=8;a11,a55,a88;a21,a25,a28,a31,a35,a38,…,a98;b1,b2,…,b9;c1,c5,c8;…] (17)為了加密第t塊,由方程(13)得出y1=a11x1+b1R(t,c2)y5=a55x5+b5R(t,c5)y8=a88x8+b8R(t,c8)由方程(14)得出y2=a21x1+a25x5+a28x8+b2G(x2)y3=a31x1+a35x5+a38x8+b3G(x3)y4=a41x1+a45x5+a48x8+b4G(x4)y6=a61x1+a65x5+a68x8+b6G(x6)y7=a71x1+a75x5+a78x8+b7G(x7)y9=a91x1+a95x5+a98x8+b9G(x9)為了解密第t塊,由方程(13),基礎(chǔ)明文向量單元可很容易由下式得出
x1=[y1-b2R(t,c1)]/a11x5=[y5-b5R(t,c5)]/a55x8=[y8-b8R(t,c8)]/a88由方程(14)和(15),非基礎(chǔ)明文向量單元是x2=G-1[(y2-(a21x1+a25x5+a28x8))/b2]x3=G-1[(y3-(a31x1+a35x5+a38x8))/b3]x4=G-1[(y4-(a41x1+a45x5+a48x8))/b4]x6=G-1((y6-(a61x1+a65x5+a68x8))/b6]x7=G-1[(y7-(a72x2+a75x5+a78x8))/b7]x9=G-1[(y9-(a91x1+a95x5+a98x8))/b9]由方程(16)得出G-1,G-1〔〕是〔〕的立方根。這樣可迅速恢復(fù)明文(x1,x2,…,xx)而不需對一個NxN矩陣求逆。加密和解密裝置圖4是根據(jù)本發(fā)明的一個優(yōu)選實施例的加密裝置的功能方框圖。加密裝置30實質(zhì)上包含了一個明文輸入緩中器200,用于接收輸入的明文,一個存儲器220,處理器240,字符代碼表260和密文輸出緩沖器280。
存儲器220除了別的之外用于存儲控制參數(shù)以控制加密過程。這種控制參數(shù)的例子是N,A,zt,…。如上所述,N是塊的大小,A是NxN映射矩陣,zt是構(gòu)成密文向量yt的第二個分向量的向量。也可以有控制zt的其它參數(shù),如zt=zt(b,c),這里b是N維恒定向量而c是輸入偽隨機數(shù)發(fā)生器的初始值向量。
處理器240包括幾種功能,由圖中的功能框表示,如明文預(yù)處理器241,加密處理器243,塊計數(shù)器245,偽隨機數(shù)發(fā)生器247,以及密鑰處理器249。
在操作中,密鑰k首先被密鑰處理器處理,獲得諸如N,A,zt(b,c)的控制參數(shù),然后這些參數(shù)儲存在存儲器220中。密鑰處理器最好對儲存的密鑰有效的規(guī)則集檢查輸入的密鑰是否有效。如果發(fā)現(xiàn)輸入的密鑰無效,裝置應(yīng)傳達(dá)出信息告訴用戶出了什么問題。在一種實現(xiàn)的方式中,密鑰k包含了一連串的控制參數(shù),密鑰處理器249把這些參數(shù)分析出來后儲存在存儲器220中。在另一個實施例中,密鑰k包含簡化的輸入集,它與需求的控制參數(shù)集比較。處理器249也作為密鑰生成器,它將簡化了的輸入集擴展為完整的控制參數(shù)集,最后儲存在存儲器220中。例如,如果要求密鑰間隔為2256,那么密鑰為256比特長并且可由預(yù)定的密鑰映射來映射為完整的控制參數(shù)集。一旦控制參數(shù)在適當(dāng)位置,即可由處理器240存取。
以字符流的形式輸入到加密裝置30的輸入明文經(jīng)明文輸入緩沖器200緩沖后,由明文預(yù)處理器241處理。
明文預(yù)處理器241按照從存儲器220取出的塊大小參數(shù),把輸入的明文字符流大小N的塊逐塊分析。在一種實現(xiàn)方式中,明文預(yù)處理器也根據(jù)存儲器220中的參數(shù)進(jìn)行初始的塊排列。字符代碼表260用于將每個字符轉(zhuǎn)換為數(shù)值以使得每個塊等效于明文向量x。字符代碼表可選擇地設(shè)置在加密裝置30的外面。
塊計數(shù)器245跟蹤所處理的塊。因此,第t個塊產(chǎn)生明文向量xt。
然后把明文向量xt輸入到加密處理器243,計算出對應(yīng)的密文向量yt。密文向量yt是通過將NxN矩陣A作用于xt,再給它加上第二個分向量zt。矩陣A和第二個分向量可從存儲器220中得到。
在優(yōu)選的實施例中,第二個分量是逐塊變化的隨機分量。偽隨機數(shù)發(fā)生器Rt(c)247對每個塊提供一個偽隨機向量序列。每個序列都取決于初始值向量c。對第t個塊,zt假定該序列中的第t個偽隨機向量。
這樣密文向量由加密處理器243計算出來,然后通過密文輸出緩沖器280從加密裝置30輸出。
圖5是根據(jù)本發(fā)明在一個具體實施例的解密裝置的功能方框圖。解密裝置50在結(jié)構(gòu)上和加密裝置30相似,實質(zhì)上是執(zhí)行加密裝置30的相反操作。它包含一個密文輸入緩沖器300,用于接收輸入的密文,一個存儲器320,一個處理器340,一個字符代碼表360以及明文輸出緩沖器380。
存儲器320除了別的之外用于儲存控制參數(shù)以控制解密。這些控制參數(shù)的例子有N,A,zt(b,c),…,這些參數(shù)同加密的控制參數(shù)一樣,并且也是可從輸入的密鑰中導(dǎo)出的。但在解密裝置中,映射矩陣A不直接用于計算,而是用于導(dǎo)出的逆映射矩陣A-1。
處理器340包括幾種功能,由圖中以功能框表示,如密文預(yù)處理器341、解密處理器343、塊計數(shù)器345、偽隨機數(shù)發(fā)生器347以及密鑰處理器349。這些功能框同加密裝置30中的是對應(yīng)的。
另外,處理器340也包括一個逆處理器344,逆處理器344可由給定的映射矩陣A計算逆映射矩陣A-1。
在操作中,同加密裝置相似,密鑰k首先由密鑰處理器349處理。推導(dǎo)出控制參數(shù)如N,A,zt(b,c),…,然后存入存儲器320。一旦控制參數(shù)在適當(dāng)位置,它們可由處理器340存取。
輸入到解密裝置50以變換的數(shù)字串流的形式的密文經(jīng)密文輔入緩沖器300緩沖后,由密文預(yù)處理器341處理。
密文預(yù)處理器341根據(jù)從存儲器取出的塊大小參數(shù)把輸入的密文流大小為N的塊逐塊分析。這樣,每個塊都等效于密文向量y。
塊計數(shù)器345跟蹤所處理的塊。因此,第t個塊產(chǎn)生密文向量yt。
然后把密文向量yt輸入到解密處理器343,計算出對應(yīng)的明文向量xt。明文向量xt是先從yt減去第二個分向量zt,再將NXN逆映射矩陣A-1作用于所得向量而得到的。逆映射矩陣A-1和第二個分量可以從存儲器320中獲得。第二個分量同加密裝置30中的向量是相同的。
在優(yōu)選的實施例中,第二個分量是逐塊變化的隨機分量。偽隨機數(shù)發(fā)生器Rt(c)347同加密裝置30中的一樣,它提供相同的偽隨機向量序列,該序列用于在加密裝置30中將每個塊隨機化。
初始明文進(jìn)行初始的塊排列后,解密處理器343將響應(yīng)存儲器320中的參數(shù)也執(zhí)行相反的塊排列。
一旦明文向量xt被解密,就被類似加密裝置中所用的字符代碼表360解碼。字符代碼表可選擇地設(shè)置在解密裝置50以外。把明文向量中被編碼數(shù)值解碼為它們原來的字符狀態(tài)。
這樣,恢復(fù)成初始明文后,通過密文輸出緩沖器380從解密裝置50中輸出。
圖4和圖5分別表示了加密和解密裝置的優(yōu)選硬件實施例,它們是圖1所示的加密系統(tǒng)的一部分。本發(fā)明也考慮了采用在軟件控制下用于實現(xiàn)加密裝置30和解密裝置50實現(xiàn)的各種功能的計算機。例如,處理器240和340可以用普通計算機的微處理器。存儲器220,320和緩沖器200,300可用計算機的各種類型存儲器。軟件可放在計算機的一個存儲器中,根據(jù)上述方法控制加密和解密。隨機圖像方案—映射參數(shù)的系統(tǒng)選擇如上所述,本發(fā)明要求用戶從映射集中選擇一種映射。它是利用密鑰表示的,并可從該密鑰導(dǎo)出一組映射參數(shù)。該映射集實質(zhì)上是通過NXN映射矩陣單元在指定范圍內(nèi)排列起來生成的。如上面指出的,即使N和L為中等值,映射集的大小實際上變得非常之大。
在優(yōu)選的實施例中,用一種系統(tǒng)的方法把映射分成不同的組,以易于區(qū)別和辨認(rèn)它們。這樣,用戶能夠有系統(tǒng)地從分類的映射中作出選擇。如果密鑰需要常常更改,或者如果一組密鑰需要指定給一組人,用這種方法是特別預(yù)料到的。
這種方案是通過把塊或明文單元排列起來建立映射分類的。這同在前面快速計算實現(xiàn)中所述的從明文向量中選擇基礎(chǔ)明文向量單元的子集是類似的。用戶隨機選取基礎(chǔ)明文向量單元的子集。在最簡單的實施例中,把剩下的未選取的明文向量單元置零。這樣,僅從被選取的基礎(chǔ)明文向量單元的線性組合得出每個密文向量單元。換言之,密文向量實質(zhì)上被映射成由選取的基礎(chǔ)明文向量單元隔開的子間隔。
一般來說,當(dāng)每個單元取兩個值中的一個時,就有2N種方法來排列N個單元。由二項式定理,2N個選擇可以分組為N個單元中的M個基本向量單元的所有可能排列的和Σ0MC(N,M)=ΣN!M!(N-M)!=2N]]>圖6A列出了塊的大小N=9時的各種排列或基礎(chǔ)明文向量單元的可能選擇。因此共有29=512種排列。
圖6B是在3×3的圖像中從一塊中選擇多個單元的實際排列的結(jié)構(gòu)圖,每個塊中的單元是按照從左到右,從上至下的順序安排的。該結(jié)構(gòu)是按M的遞增順序安排的,并有從#1到#511的結(jié)構(gòu)號(#0結(jié)構(gòu)未出現(xiàn),它相應(yīng)于無基礎(chǔ)向量單元被選擇的不重要的情況)。例如,參照圖6B,用戶可選取結(jié)構(gòu)#54,它規(guī)定基礎(chǔ)明文向量為x=〔x1,0,x3,0,x5,0,0,0,0〕。如果用戶知道密鑰周期地被更改,他們能很容易地利用本方案選出結(jié)構(gòu)的預(yù)定序列,提供相應(yīng)的密鑰序列。
而在另一個實施例中,生成系統(tǒng)的映射參數(shù)的方案可由前面提到的初始塊排列實現(xiàn)。一般來說,明文向量單元x1,x2,…,xN不必對應(yīng)于明文字符流中單元進(jìn)入的順序相同。例如,x1可對應(yīng)字符流的一個塊中第7個字符,而x2可對應(yīng)第1個字符。在N時隙上填入N個單元就有N的階乘種(N1)方法。用戶可隨意選擇初始塊的排列方式或?qū)⑵湔f明編入密鑰中。根據(jù)一個預(yù)定的順序,將塊單元排列成各種不同的結(jié)構(gòu)(或圖象),再根據(jù)另一種預(yù)定的順序?qū)⑵渥x出,就生成了不同的順序。例如,對塊大小為N=9,一個圖象為3×3的矩陣。塊單元〔x1,x2,…,x9〕能夠以從左到右,從上至下順序分配到矩陣中。通過從下至上,從左到右讀出矩陣單元可得到一種不同的排列〔x7,x4,x1,x8,x5,x2,x9,x6,x3〕。一般來說,通過所用的圖像、單元的設(shè)置方式和從圖象中讀出單元的方式的變化可以獲得不同的排列。
雖然上面已經(jīng)敘述本發(fā)明各個方面的實施例是優(yōu)選實施方式,但本領(lǐng)域的技術(shù)人員懂得可以有各種修改。因此,本發(fā)明由所附的權(quán)利要求書的整個范圍保護(hù)。
權(quán)利要求
1.一種密碼系統(tǒng),使用戶將明文加密成密文及將密文解密成明文,其特征在于,該系統(tǒng)包含用戶之間共享的一個密鑰;用來從所述密鑰導(dǎo)出一組用戶可選擇的加密參數(shù)的裝置,每個用戶可選擇的加密參數(shù)有一個數(shù)值范圍;一個產(chǎn)生映射的裝置,根據(jù)該組用戶可選擇的加密參數(shù)產(chǎn)生其映射集中的一個映射,把明文映射成密文;一個解密參數(shù)導(dǎo)出的裝置,用來從所述密鑰導(dǎo)出一組解密參數(shù);一個產(chǎn)生逆映射的裝置,根據(jù)該組解密參數(shù)產(chǎn)生一個與該映射相關(guān)的逆映射,把密文逆映射成明文;和該映射集的大小取決于每個所述用戶可選擇的加密參數(shù)的數(shù)值范圍,因而不知道所述密鑰的人面臨著在大小不確定的映射集之中窮舉法計算的不可行的任務(wù)。
2.根據(jù)權(quán)利要求1所述的密碼系統(tǒng),其特征在于,還包括一個分塊裝置,根據(jù)一個控制塊大小的參數(shù)將明文分成相應(yīng)大小的明文塊或明文向量;其中該映射把明文向量映射為每個相應(yīng)的密文向量;和該組用戶可選擇的加密參數(shù)包括該塊大小的參數(shù)。
3.根據(jù)權(quán)利要求2所述的密碼系統(tǒng),其特征在于該組用戶可選擇的加密參數(shù)包括一個映射矩陣;該映射是這樣的每個密文向量是一個向量和,該向量和包括一個第一向量和分量,該第一向量和分量是由該映射矩陣和相應(yīng)的明文向量的乘積形成的;該組解密參數(shù)包括與該映射矩陣相關(guān)的一個逆映射矩陣;和該逆映射是這樣的每個明文向量是該逆映射矩陣及一個合成向量的乘積,該合成向量是由相應(yīng)的密文向量減去除了第一向量和分量之外的其向量和所產(chǎn)生的。
4.根據(jù)權(quán)利要求3所述的密碼系統(tǒng),其特征在于,還包括生成一組偽隨機向量的裝置,每個塊一個偽隨機向量;其中該向量和包括了一個第二向量和分量,而該第二向量和分量是由該組偽隨機向量中的一個偽隨機向量所形成的。
5.根據(jù)權(quán)利要求4所述的密碼系統(tǒng),其特征在于,每組用戶可選擇的加密和解密參數(shù)都包括用于產(chǎn)生一組偽隨機向量的參數(shù)。
6.根據(jù)權(quán)利要求1所述的密碼系統(tǒng),其特征在于,還包含一個密鑰產(chǎn)生器,從具有預(yù)定長度的輸入產(chǎn)生該密鑰。
7.用戶把明文加密成密文及將密文解密恢復(fù)成明文的密碼系統(tǒng),其特征在于,包括一組加密參數(shù)和一組解密參數(shù),分別控制加密和解密;用戶間共用的一個密鑰;由所述的密鑰推導(dǎo)出加密參數(shù)的所述組的用戶可選擇的部分的裝置;一個產(chǎn)生映射的裝置,根據(jù)該組用戶所選擇的加密參數(shù)產(chǎn)生一個映射集之中的一個映射,把明文映射成密文,該映射集的大小取決于所述組的加密參數(shù);用來從所述密鑰導(dǎo)出所述組解密參數(shù)的用戶可選擇部分的裝置;和一個產(chǎn)生逆映射的裝置,根據(jù)該組解密參數(shù)產(chǎn)生一個與該映射相關(guān)的逆映射,把密文逆映射成明文。
8.一種數(shù)據(jù)加密裝置,用于使明文逐塊地加密成密文,其特征在于,該數(shù)據(jù)加密裝置包含儲存裝置,用來儲存一組加密參數(shù),該組加密參數(shù)包括了一個塊大小的參數(shù)和用于控制明文映射為密文的映射參數(shù),每個映射參數(shù)具有一個可能的數(shù)值范圍;明文處理裝置,根據(jù)塊大小的參數(shù),把輸入的明文逐塊地劃分,因而得到與每塊對應(yīng)的明文向量;一個映射裝置,根據(jù)該組映射參數(shù)產(chǎn)生一個映射集的一個映射,所述映射把每個明文向量映射成相應(yīng)的密文向量;該映射集的大小取決于每個映射參數(shù)的數(shù)值范圍,因而產(chǎn)生一個具有一個數(shù)值范圍大小的映射集;和密文輸出裝置,用來把密文從該數(shù)據(jù)加密裝置中輸出。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)加密裝置,其特征在于,還包括密鑰處理裝置,由輸入的密鑰推導(dǎo)出所述加密參數(shù)用戶可選擇部分,該用戶可選擇部分包括映射參數(shù)。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)加密裝置,其特征在于,還包括一個密鑰產(chǎn)生器,用于從一個預(yù)定長度的輸入產(chǎn)生該密鑰。
11.根據(jù)權(quán)利要求8所述之?dāng)?shù)據(jù)加密裝置,其中所述加密參數(shù)的用戶可選擇部分包括該塊大小的參數(shù);和該映射集的大小取決于塊大小的參數(shù),由此生成一個用戶可選擇大小的映射集。12.根據(jù)權(quán)利要求8所述的數(shù)據(jù)加密裝置,其特征在于,還包括字符編碼裝置,把用字符表示的明文轉(zhuǎn)換為數(shù)字表示。
13.根據(jù)權(quán)利要求8所述的數(shù)據(jù)加密裝置,其特征在于,該映射參數(shù)包括一個映射矩陣;和該映射是這樣的每個密文向量是一個向量和,該向量和包括一個由該映射矩陣和相應(yīng)的明文向量的乘積形成的第一向量和分量。
14.根據(jù)權(quán)利要求13所述的數(shù)據(jù)加密裝置,其特征在于,還包含產(chǎn)生一組偽隨機向量的裝置,每個塊一個偽隨機向量;其中所述向量和包括一個第二向量和分量,而該第二向量和分量是來自該組偽隨機向量的一個偽隨機向量。
15.根據(jù)權(quán)利要求14所述的數(shù)據(jù)加密裝置,其特征在于該映射參數(shù)包括用戶可選擇的參數(shù),用來產(chǎn)生該組偽隨機向量。
16.一種數(shù)據(jù)解密裝置,用于將相關(guān)的加密裝置來的密文逐塊地解密成明文,其特征在于,該數(shù)據(jù)解密裝置包括儲存裝置,用來儲存一組解密參數(shù),該組解密參數(shù)包括一個塊大小的參數(shù)和用于控制密文逆映射為明文的逆映射參數(shù),每個逆映射參數(shù)具有可能的數(shù)值范圍;密文處理裝置,根據(jù)塊大小參數(shù)把輸入的密文分塊,因而得到與每塊對應(yīng)的密文向量;一個逆映射的裝置,根據(jù)該組逆映射參數(shù)產(chǎn)生一個逆映射集中的一個逆映射,所述逆映射把每個密文向量逆映射成相應(yīng)的明文向量;該逆映射集的大小取決于每個逆映射參數(shù)的范圍,因此產(chǎn)生一個具有一個數(shù)值范圍大小的逆映射集;和明文輸出裝置,用來把明文從該數(shù)據(jù)解密裝置中輸出。
17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)解密裝置,其特征在于,還包含密鑰處理裝置,由輸入的密鑰推導(dǎo)出所述解密參數(shù)的用戶可選擇部分,該用戶可選擇部分包括逆映射參數(shù)。
18.根據(jù)權(quán)利要求17所述的數(shù)據(jù)解密裝置,其特征在于,還包括一個密鑰發(fā)生器,從一個預(yù)定長度的輸入產(chǎn)生該密鑰。
19.根據(jù)權(quán)利要求16所述的數(shù)據(jù)解密裝置,其特征在于所述解密參數(shù)的用戶可選擇部分包括該塊大小參數(shù);和該逆映射集的大小取決于塊大小參數(shù),由此生成一個用戶可選擇大小的逆映射集。
20.根據(jù)權(quán)利要求16所述的數(shù)據(jù)解密裝置,其特征在于,還包括字符編碼裝置,把用編碼的數(shù)字表示的明文轉(zhuǎn)換回到字符表示。
21.根據(jù)權(quán)利要求16所述的數(shù)據(jù)解密裝置,其特征在于該相關(guān)的加密裝置把每個密文向量作為一個向量和,該向量和包括一個第一向量和分量,該第一向量和分量是由一個映射矩陣和相應(yīng)的明文向量的乘積形成的;該逆映射參數(shù)包括與該映射矩陣相關(guān)的一個逆映射矩陣;和該逆映射可使每個明文向量是該逆映射矩陣與一個合成向量的乘積,該合成向量是由相應(yīng)的密文向量減去除了其第一向量和分量之外的向量和所產(chǎn)生的。
22.根據(jù)權(quán)利要求21所述的數(shù)據(jù)解密裝置,其特征在于,還包括產(chǎn)生一組偽隨機向量的裝置,每個塊一個偽隨機向量,而且與加密裝置中采用的相同;該加密裝置中的所述向量和還包括了一個第二向量和分量,該第二向量和分量是由該組偽隨機向量的偽隨機向量所形成的。
23.根據(jù)權(quán)利要求22所述的數(shù)據(jù)解密裝置,其特征在于該逆映射參數(shù)包括用戶可選擇的參數(shù),用來產(chǎn)生該組偽隨機向量。
24.一種密碼方法,使用戶將明文加密成密文及將密文解密成明文,其特征在于,該方法包括以下步驟用戶之間共享一個密鑰;從所述密鑰導(dǎo)出一組用戶可選擇的加密參數(shù),每個用戶可選擇的加密參數(shù)有一個可能的數(shù)值范圍;該組用戶可選擇的加密參數(shù),產(chǎn)生一個映射集中的一個映射,把明文映射成密文;從所述密鑰導(dǎo)出一組解密參數(shù);產(chǎn)生與所述逆映射相關(guān)的一個逆映射,把密文映射成明文;和該映射集的大小取決于每個所述組的用戶可選擇的加密參數(shù)的數(shù)值范圍,因此不知密鑰的人面臨著在大小不確定的映射集之中窮舉法計算上是不可行的任務(wù)。
25.根據(jù)權(quán)利要求24所述的密碼方法,其特征在于,還包括以下步驟把明文按塊大小的參數(shù)分成一塊一塊的明文塊或明文向量,每塊的大小是根據(jù)該塊大小的參數(shù);其中該映射將明文向量映射成相應(yīng)的密文向量;和該組用戶可選擇的加密參數(shù)包括該塊大小的參數(shù)。
26.根據(jù)權(quán)利要求24所述之密碼方法,還包含以下步驟從一個預(yù)定長度的輸入產(chǎn)生該密鑰。
27.根據(jù)權(quán)利要求25所述之密碼方法,其中該組用戶可選擇的加密參數(shù)包括一個映射矩陣;該映射是這些的每個密文向量是一個向量和,該向量和包括一個第一向量和分量,該第一向量和分量是由該映射矩陣和相應(yīng)的明文向量的乘積形成;該組解密參數(shù)包括一個與該映射矩陣相關(guān)的逆映射矩陣;和該逆映射是這樣的每個明文向量是該逆映射矩陣及一個合成向量的乘積,該合成向量是由相應(yīng)的密文向量減去除了第一向量和分量之外的向量和所產(chǎn)生的。
28.根據(jù)權(quán)利要求27所述的密碼方法,其特征在于,還包括以下步驟產(chǎn)生一組偽隨機向量,每個塊一個偽隨機向量;其中該向量和包括一個第二向量和分量,而該第二向量和分量是由該組偽隨機向量一個偽隨機向量所形成的。
29.根據(jù)權(quán)利要求28所述的密碼方法,其特征在于所述組的用戶可選擇的加密和解密參數(shù)都包括產(chǎn)生所述組偽隨機向量的參數(shù)。
30.根據(jù)權(quán)利要求25所述的密碼方法,其特征在于,還包括有以下步驟從每個明文向量中選擇明文單元的子集作為基礎(chǔ)明文單元;從每個密文向量中選擇相應(yīng)的密文單元的子集作為基礎(chǔ)密文單元;產(chǎn)生該映射,其中每個密文單元都是一個和,它包括一個第一和分量及一個第二和分量,因此對于所述基礎(chǔ)密文單元;每個第一和分量都是與對應(yīng)的基礎(chǔ)明文單元線性相關(guān)的,該線性關(guān)系是由用戶可選擇的基本系數(shù)確定的;并且它的第二和分量都是逐塊變化的偽隨機數(shù);而且對于不在該子集中的每個密文單元它的第一和分量都是基礎(chǔ)明文單元子集的線性組合,該線性組合由一組用戶可選擇的組合系數(shù)確定的;它的第二和分量都是相應(yīng)的明文單元的非線性函數(shù),該非線性函數(shù)由用戶確定的;產(chǎn)生該逆映射,其中每個基礎(chǔ)明文單元都是合成值的反線性關(guān)系,該合成值是相應(yīng)的密文單元減去除了該和的第一和分量外所得到的;和每個不在該子集中的明文單元都是該非線性函數(shù)的倒數(shù),作用在由相應(yīng)的密文單元減去除了該和的第一和分量外所得到的一個結(jié)果值上。
31.一種密碼方法,使用戶將明文加密成密文及將密文解密成明文,其特征在于,該方法包括以下步驟提供一組加密參數(shù)來控制加密和一組解密參數(shù)來控制解密;用戶之間共享一個密鑰;從所述的密鑰導(dǎo)出加密參數(shù)的用戶可選擇的部分;根據(jù)該組的加密參數(shù)產(chǎn)生一個映射集中的一個映射,把明文映射成密文,該映射集的大小取決于所述組的加密參數(shù);從所述密鑰導(dǎo)出所述組的解密參數(shù)的用戶可選擇部分;和根據(jù)所述組的解密參數(shù)產(chǎn)生與所述映射相關(guān)的一個逆映射,把密文逆映射成明文。
全文摘要
一種密碼裝置和方法提供了一個明文和密文向量之間映射和對應(yīng)的逆映射的映射集。明文(200)分成塊,塊的大小可由用戶選擇,例如N個字符。每個映射在一對N維的明文(200)和密文向量(280)之間映射。映射或?qū)?yīng)的逆映射都是由帶有N×N個矩陣單元的矩陣實現(xiàn)的,其中每個單元可有一個L值的范圍。將矩陣單元在其范圍內(nèi)排列,該映射集的大小就是L
文檔編號H04L9/06GK1121754SQ94191886
公開日1996年5月1日 申請日期1994年3月16日 優(yōu)先權(quán)日1993年5月5日
發(fā)明者劉尊全 申請人:劉尊全