專利名稱:對(duì)稱-密鑰加密的線性變換的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及產(chǎn)生線性變換的方法,該線性變換用在基于二進(jìn)制糾錯(cuò)碼的對(duì)稱-密鑰加密中。
密碼學(xué)在數(shù)字音頻/視頻的版權(quán)保護(hù)領(lǐng)域中的應(yīng)用正在變得越來越重要。這些應(yīng)用包括內(nèi)容加密/解密以及訪問管理功能。對(duì)這樣的應(yīng)用可以使用塊加密。Feistel加密是一個(gè)眾所周知的塊加密族。在Feistel加密中,輸入數(shù)據(jù)塊被進(jìn)行了多個(gè)循環(huán)(round)處理。在每重循環(huán)中都在該塊的兩個(gè)子塊(一半)上進(jìn)行不同的操作。第一個(gè)子塊和循環(huán)函數(shù)的輸出結(jié)合在一起;對(duì)第二個(gè)子塊不作更改。在循環(huán)的結(jié)尾交換這兩個(gè)子塊,確保在下一循環(huán)中處理未經(jīng)改動(dòng)的子塊。循環(huán)函數(shù)把第二個(gè)子塊和循環(huán)密鑰作為輸入。通常,循環(huán)函數(shù)把循環(huán)密鑰和第二個(gè)子塊結(jié)合在一起,例如使用XOR(異或)操作。另外,循環(huán)函數(shù)還在第二個(gè)子塊上執(zhí)行非線性操作和線性變換。通常,非線性變換由置換盒(S-盒)層次組成,置換盒層次由幾個(gè)在更小的子塊上—例如4到8位—并行操作的S-盒組成。在S-盒層次之后,線性操作確保發(fā)生正確的傳播,使得由個(gè)別S-盒引起的位變換在下一循環(huán)中能夠在盡可能多的S-盒上傳播。
Feistel加密的一個(gè)眾所周知的實(shí)例是DES,由16個(gè)循環(huán)組成。在每一循環(huán)中,數(shù)據(jù)的右半部的前32位都被擴(kuò)展成48位。然后,把一個(gè)48位循環(huán)密鑰模2按位加到這48位上面,該密鑰是用密鑰調(diào)度算法從56位DES密鑰計(jì)算得出的。然后S-盒層次在數(shù)據(jù)上執(zhí)行非線性操作。在DES中,S-盒層次由8個(gè)6→4位的S-盒并行組成,即每個(gè)S-盒用一種對(duì)每一S-盒固定的映射表把6-位輸入塊轉(zhuǎn)換成4-位輸出。S-盒層次的輸出是一個(gè)32位的數(shù)據(jù)塊。在這個(gè)32位數(shù)據(jù)塊上執(zhí)行的線性變換是位-置換,它確保由一個(gè)S-盒引起的位變換在接下來的循環(huán)中能在更多其它S-盒上進(jìn)行傳播。DES的缺點(diǎn)是它的密鑰太小,只有56位,考慮到它現(xiàn)在不足以提供高度的安全性。然而,使用更長的密鑰和不同的密鑰調(diào)度算法用于計(jì)算16個(gè)48-位循環(huán)密鑰可以避免窮舉密鑰查找。在公開文獻(xiàn)中公布的DES上最強(qiáng)大的兩種攻擊是微分和線性密碼分析,它們是可以用于大范圍塊加密的通用攻擊。已經(jīng)證明通過更改密鑰長度和/或密鑰調(diào)度算法無法大幅增強(qiáng)DES抵抗這些攻擊的能力。但是,算法的循環(huán)函數(shù)中的變化能夠顯著影響DES對(duì)這些攻擊的抵抗能力。
對(duì)線性變換來說,希望變換能有好的傳播性。最近,S.Vaudenay提出為構(gòu)造線性變換使用線性糾錯(cuò)碼,在“On the Need for Multi-PermutationsCryptanalysis of MD4 and SAFER”(Fast SoftwareEncryption(2nd),LNCS 1008,Springer,1995 286-297頁)中可以找到相關(guān)描述。線性變換的傳播性與相應(yīng)的糾錯(cuò)碼的最小海明距離相關(guān)聯(lián);該距離越高,相關(guān)線性變換矩陣的傳播性越好。Vaudenay提議在有限域上使用最大可分離距離(MDS),它達(dá)到了所謂的單體界限并因此而提供了最優(yōu)傳播。但是,這種結(jié)構(gòu)的缺點(diǎn)是由此產(chǎn)生的線性變換包含附加的數(shù)學(xué)結(jié)構(gòu),即在有限域(以及它的所有子域)上用于該結(jié)構(gòu)的線性,在密碼分析中可以用到它。
本發(fā)明的一個(gè)目的是提供可變換線性變換,由非奇(nonsingular)二進(jìn)制矩陣表示,用在基于優(yōu)化二進(jìn)制糾錯(cuò)碼并在位-級(jí)別上帶有保障最優(yōu)傳播特征的對(duì)稱-密鑰加密中。這種變換相對(duì)MDS結(jié)構(gòu)的優(yōu)點(diǎn)是它更不規(guī)則,結(jié)果是避免了最后產(chǎn)生的線性變換的附加數(shù)學(xué)結(jié)構(gòu),它可以用在密碼分析中。
為了實(shí)現(xiàn)本發(fā)明的目的,對(duì)從糾錯(cuò)碼導(dǎo)出的矩陣進(jìn)行了一些列擴(kuò)展,這樣該代碼的長度就等于維數(shù)和結(jié)果矩陣的兩倍,它可以用作線性變換的基礎(chǔ),是非奇的。這就避免了基于循環(huán)函數(shù)的非均一性的攻擊。
像從屬權(quán)利要求2的方法中所定義的那樣,為了找到合適的列可以(偽)隨機(jī)地產(chǎn)生新列。
像從屬權(quán)利要求3的方法中所定義的那樣,對(duì)矩陣C進(jìn)行置換以找到線性變換矩陣以及有預(yù)定多-位權(quán)重的相關(guān)線性糾錯(cuò)碼。像從屬權(quán)利要求4的方法中所定義的那樣,這個(gè)多-位權(quán)重確保在加密器的S-盒上的正確傳播。例如,對(duì)由多個(gè)并行操作的S-盒組成的S-盒層次來說,其中每個(gè)S-盒提供m-位輸出,它與查看相關(guān)二進(jìn)制糾錯(cuò)碼中的字的m-位部分的傳播有關(guān),可以用所有非零代碼字上最小m-位權(quán)重來表伐示。
將參考附圖中的實(shí)施方案闡明本發(fā)明的這些特征和其它特征,并使它們更顯而易見。
圖1顯示加密系統(tǒng)的框圖;圖2顯示結(jié)合了線性變換的加密方法的一個(gè)循環(huán);圖3說明了循環(huán)函數(shù)的步驟;圖4顯示了S-盒構(gòu)造的優(yōu)選排列;以及圖5顯示了產(chǎn)生線性變換矩陣的步驟。
為了說明本發(fā)明起見,以電子代碼簿模式把加密系統(tǒng)描述成塊加密,在該加密系統(tǒng)中中使用了線性變換。那些本領(lǐng)域的技術(shù)人員也可以用其它模式使用本系統(tǒng)。這些模式包括DES的標(biāo)準(zhǔn)FIPS操作模式,即操作的加密塊鏈鎖(CBC),加密反饋(CFB)和輸出反饋(OFB)操作模式。另外,本系統(tǒng)也可用在眾所周知的偽-隨機(jī)數(shù)發(fā)生器結(jié)構(gòu),消息驗(yàn)證代碼(MAC)和操作保護(hù)代碼(MDC)中。
圖1顯示了一個(gè)示范加密設(shè)備100的框圖。加密設(shè)備100包括獲取數(shù)字輸入塊X的輸入110。數(shù)字輸入塊X可以是任意適當(dāng)大小。該設(shè)備還包括加密處理器120,以把數(shù)字輸入塊X轉(zhuǎn)換成數(shù)字輸出塊E(X)。有利的是,數(shù)字輸出塊的長度和數(shù)字輸入塊基本相等。設(shè)備100包括輸出數(shù)字輸出塊的輸出130。在優(yōu)選實(shí)施方案中,加密處理器通過把數(shù)字輸入塊和密鑰位K合并在一起來把數(shù)字輸入塊轉(zhuǎn)換成數(shù)字輸出塊,產(chǎn)生輸出塊E(X,K),它非線性依賴于輸入塊X和密鑰K。為了獲得密鑰(或者輸送給密鑰調(diào)度器的初始密鑰),該加密設(shè)備還包括了第二個(gè)輸入140。可以用通用計(jì)算機(jī),如PC,或用專用加密/解密設(shè)備來實(shí)現(xiàn)該加密設(shè)備。可以用多種方式獲得數(shù)字輸入塊,例如通過通信網(wǎng)絡(luò),從像硬盤或軟盤這樣的數(shù)據(jù)存儲(chǔ)介質(zhì)獲取,或者直接由用戶輸入。同樣,也可以多種方式來輸出數(shù)字輸出塊,例如通過通信網(wǎng)絡(luò)輸出,存儲(chǔ)在數(shù)據(jù)存儲(chǔ)介質(zhì)上或者顯示給用戶。優(yōu)選地,對(duì)這個(gè)終端使用安全裝置。加密處理器可以是通用處理器,例如用在個(gè)人計(jì)算機(jī)中的處理器,但也可以是專用加密處理器。處理器通常在所配程序(固件)的控制下進(jìn)行操作以依照本發(fā)明執(zhí)行算法的步驟。這個(gè)計(jì)算機(jī)程序產(chǎn)品通常是從后備存儲(chǔ)獲得的,例如硬盤或ROM。該計(jì)算機(jī)程序產(chǎn)品在被發(fā)布到像CD-ROM這樣的存儲(chǔ)介質(zhì)上或者通過像公共Internet這樣的網(wǎng)絡(luò)發(fā)布之后可以被存儲(chǔ)在后備存儲(chǔ)上。像加密密鑰這樣的敏感信息,優(yōu)選地應(yīng)該以安全方式進(jìn)行發(fā)布和存儲(chǔ)。做這些事情的技術(shù)通常都已知道,不再對(duì)它們進(jìn)行描述。該加密設(shè)備可以部分或全部實(shí)現(xiàn)在一塊智能卡上。
將用塊加密中的循環(huán)函數(shù)f的形式把由密碼處理器依照本發(fā)明執(zhí)行的線性變換描述成一個(gè)示范性應(yīng)用程序。其實(shí)本領(lǐng)域的技術(shù)人員也能夠在其它加密系統(tǒng)中使用線性變換,也可在除了下面詳細(xì)描述的加密器之外的加密器中使用線性變換。
符號(hào)和定義下面是用在示范算法描述中的符號(hào)。Z2n是所有長度為n(≥1)的二進(jìn)制向量的集合,加法Z2n×Z2n→Z2n被定義為按坐標(biāo)的模2加法(也稱為異或,或XOR)。例如,(1,0,1,0)和(0,1,1,0)是Z24的元素,(1,0,1,0)(0,1,1,0)=(1,1,0,0)。此外,定義標(biāo)量乘法·Z2n×Z2n→Z2n為1·x=x,0·x=(0,0,...,0)∈Z2n,對(duì)所有x∈Z2n。如果n是偶數(shù)并且x∈Z2n,那么定義x(L)∈Z2n/2和x(R)∈Z2n/2分別為x的左半部和右半部。例如,如果x=(1,0,1,1,0,0,1,0)∈Z28,那么x(L)=(1,0,1,1)∈Z24,x(R)=(0,0,1,0)∈Z24,即x=(x(L)||x(R))。向量x∈Z2n的元素(也稱為位)從左到右編號(hào)按0到n-1編號(hào),即x=(x0,x1,x2...xn-1)。定義兩個(gè)元素x∈Z2n和y∈Z2n之間的海明距離dHZ2n×Z2n→Z為兩個(gè)向量中不相同位的數(shù)量,即dH(x,y)=#{xi≠yi}| i=0,1,...,n-1}。定義元素x∈Z2n的海明權(quán)重wHZ2n→Z為非零位的數(shù)量,即wH(x)=#{xi≠0|i=0,1,2,...,n-1}。
Z2上的k×m矩陣的集合表示為Z2k×m。Z2上的k×k同一矩陣表示為Ik。符號(hào)||還用來表示連接行數(shù)相同的矩陣,即如果A∈Z24×6且B∈Z24×8,那么C=(A||B)∈Z24×14。
(塊)長度為n的二進(jìn)制糾錯(cuò)碼C是Z2n的線性子空間。這個(gè)子空間的元素被稱為代碼字。如果該子空間的維數(shù)是K,那么就稱C為[n,k]代碼??梢杂冒l(fā)生器矩陣G∈Z2k×n表示這樣的代碼,對(duì)它來說行形成C的基,即C={mG|∈Z2k}。定義代碼的最小距離為在任意兩個(gè)不同代碼字之間的最小距離,即d=min{dH(x,y)|x,y∈C且x≠y}。帶有最小海明距離d的[n,k]代碼也被稱為[n,k,d]代碼。注意dH(x,y)=wH(x y),這意味著線性代碼的最小海明距離等于所有非零代碼字上的最小海明權(quán)重。
塊加密結(jié)構(gòu)示范的塊加密是Feistel加密并由16個(gè)循環(huán)組成(同DES相似)。塊長度等于64位,密鑰長度等于128位。以C=(K,X)表示在密鑰K∈Z2128下面以電子密碼簿中(ECB)模式把純文本X∈Z264加密成它的加密文本C∈Z264。
循環(huán)函數(shù)由f表示并且是從Z240×Z232到Z232的映射。這個(gè)循環(huán)函數(shù)引入了本發(fā)明的線性變換,下面將對(duì)它進(jìn)行詳細(xì)描述。該循環(huán)函數(shù)的第一個(gè)輸入?yún)?shù)是循環(huán)密鑰Ki∈Z240(這里i指示循環(huán)號(hào),i=1,2,...16)。這些循環(huán)密鑰是從128位密鑰K以及所謂的密鑰調(diào)度算法計(jì)算出來的??梢杂萌我夂线m的密鑰調(diào)度算法,但下面不對(duì)其進(jìn)行詳細(xì)描述。第二個(gè)輸入?yún)?shù)是在循環(huán)i之后的中間結(jié)果的右半部。這個(gè)中間結(jié)果由Xi∈Z264(i=0,1,...16)和X=(X0(R)||X0(L))表示。
用這個(gè)符號(hào)計(jì)算加密文本C∈Z264由下列步驟組成,如圖2所示1. 計(jì)算Xi(R)=Xi-1(L)f(Ki,Xi-1(R))并設(shè)置Xi(L)=Xi-1(R),i=1,2,...,15。
2. 計(jì)算X16(L)=X15(L)f(K16,X15(R))并設(shè)置X16(R)=X15(R)。定義加密文本為C=(X16(L)||X16(R))。
圖2A顯示了用于前15(i=1,2,...15)個(gè)循環(huán)的加密結(jié)構(gòu)。圖2B顯示了最后一個(gè),也就是第16個(gè)循環(huán)。注意圖2B中的不規(guī)則交換和圖2A的先前循環(huán)的比較。通常用Feistel結(jié)構(gòu)完成這個(gè)交換,因?yàn)檫@種情況下解密算法(即計(jì)算X=E-1(K,C))和加密算法(帶有次序顛倒的循環(huán)密鑰)相同。它在密碼傳感中沒有意義。
循環(huán)函數(shù)圖3顯示了循環(huán)函數(shù)f的優(yōu)選實(shí)施方案的總體框圖。首先在310步把循環(huán)密鑰的一8部分,例如32位,加到數(shù)據(jù)位上。接下來,在320步中S-盒執(zhí)行非線性置換,優(yōu)選地提供對(duì)微分和線性密碼分析的最優(yōu)(本地)抵抗。另外,優(yōu)選地使帶有預(yù)定最大概率的非-直接(本地)特征與(循環(huán))密鑰有關(guān),下面會(huì)更詳細(xì)地描述這一點(diǎn)。最后,在330步用線性變換提供多重循環(huán)上的高傳播性。下面將更詳細(xì)地描述從糾錯(cuò)碼產(chǎn)生這樣的線性變換的方法。
Feistel結(jié)構(gòu)對(duì)循環(huán)函數(shù)的滿射沒有任何限制。然而,優(yōu)選地循環(huán)函數(shù)對(duì)固定(循環(huán))密鑰的每種選擇都是雙射的。這就避免了基于循環(huán)函數(shù)的非均一性的攻擊。
圖4提供了結(jié)合S-盒的優(yōu)選排列更詳細(xì)的情況。在這個(gè)示范系統(tǒng)中循環(huán)函數(shù)f是從Z240×Z232到Z232的映射。第一個(gè)輸入?yún)?shù)是循環(huán)密鑰Ki∈Z240,第二個(gè)是中間結(jié)果Xi-1的右半部。輸出由f(Ki,Xi-1(R))∈Z232表示。在這個(gè)圖中,定義Ki(1)∈Z232和Ki(2)∈Z28為Ki=(Ki(1)||Ki(2))。在310步中發(fā)生了密鑰加操作,隨后在320中是密鑰有關(guān)置換盒(S-盒)層次。在這個(gè)實(shí)例中,S-盒層次由8個(gè)較小的S-盒(S0,S1,S2...S7)組成,每一個(gè)在數(shù)據(jù)塊的1/8上進(jìn)行操作。S-盒變換是從Z28× Z232到Z232的映射。循環(huán)i中的第一個(gè)輸入?yún)?shù)是Ki(2),第二個(gè)是密鑰加的中間結(jié)果,即Xi-1(R)Ki(1)。S-盒變換的32位輸出由S(Ki(2),Xi-1(R)Ki(1))表示。下面將給出對(duì)這個(gè)映射的描述。最后,在330步中應(yīng)用從Z232到Z232的線性變換。輸入是S(Ki(2),Xi-1(R)Ki(1)),它的輸出由L(S(Ki(2),Xi-1(R)Ki(1)))表示。用這個(gè)符號(hào)通過下列公式給出函數(shù)ff(Ki,Xi-1(R))=L(S(Ki(2),Xi-1(R)Ki(1)))S-盒原則上可以在塊加密中使用任意合適的S-盒層次。在這里所描述的優(yōu)選實(shí)施方案中,每個(gè)S-盒在一個(gè)4-位的子塊上進(jìn)行操作。也可以使用其它大小的子塊。優(yōu)選地,對(duì)每個(gè)S-盒要使用一組至少兩個(gè)預(yù)定的置換,并且每次在使用S-盒之前以一種(偽)隨機(jī)方式選中這些置換中的一個(gè)。優(yōu)選地,為這個(gè)選擇使用循環(huán)密鑰。在優(yōu)選實(shí)施方案中,每個(gè)S-盒與兩個(gè)置換相關(guān)聯(lián),并用循環(huán)密鑰的一個(gè)預(yù)定位來選擇使用這兩個(gè)置換中的哪一個(gè)。使用相對(duì)小一些的S-盒,例如一個(gè)S-盒在4-位子塊上操作,通常將需要一行并行S-盒,每個(gè)S-盒與各自的至少兩個(gè)非線性置換相關(guān)聯(lián)。
圖4說明了在32-位塊上操作并使用4-位S-盒的塊加密的優(yōu)選實(shí)施方案,結(jié)果是并行使用8個(gè)S-盒,它們中的每一個(gè)由兩個(gè)置換組成。對(duì)這個(gè)實(shí)施方案使用下面的符號(hào)。S-盒變換的第一個(gè)輸入?yún)?shù)Ki(2)中的位由kj(i)(j=0,1,...7)表示,即Ki(2)=(k0(i),k1(i),...,k7(i))。定義向量Nj(i)∈Z24(j=0,1,2,...,7)為Xi-1(R)Ki(1)=(N0(i)||N1(i)...N7(i))。S-盒映射由8個(gè)映射Sj的連接組成Z2×Z24→Z24(j=0,1,...,7)。第一個(gè)輸入?yún)?shù)是密鑰位kj(i),它選擇為Sj使用兩個(gè)置換中的哪一個(gè)。第二個(gè)輸入?yún)?shù)是Nj(i),它是為Sj選中的4-位置換的輸入。這個(gè)置換的相應(yīng)4-位輸出也是該S-盒的輸出,由Sj(kj(i),Nj(i))。用這個(gè)符號(hào)給出函數(shù)SS(Ki(2),Xi-1(R)Ki(1))=(S0(k0(i),N0(i))||S1(k1(i),N1(i))||...||S1(k1(i),N1(i)))。
可以使用任意合適的S-盒層次。優(yōu)選地,使用依照共同未決的專利應(yīng)用PHNL000365(EP...)的S-盒。
線性變換矩陣在S-盒置換函數(shù)之后執(zhí)行線性變換L。在帶有32-位子塊的優(yōu)選實(shí)施方案中,LZ232→Z232。使用所描述的優(yōu)選S-盒結(jié)構(gòu),這個(gè)線性變換的輸入是向量S(Ki(2),Xi-1(R)Ki(1))。這個(gè)向量的坐標(biāo)用yj(i)=(j=0,1,...,31)表示,即S(Ki(2),Xi-1(R)Ki(1))=(y0(i),y1(i),...,y31(i))?,F(xiàn)在可以把映射L描述為向量-矩陣乘法,矩陣由A∈Z232×32表示L(S(Ki(2),Xi-1(R)Ki(1))=L((y0(i),y1(i),...,y31(i)))=(y0(i),y1(i),...,y31(i))A。
構(gòu)造線性變換矩陣線性變換矩陣L,由L(x)=xA定義,被構(gòu)造用來滿足下列設(shè)計(jì)標(biāo)準(zhǔn)1. Z2上的線性。
2. 可逆性,即矩陣A是Z2上的非奇矩陣。
3. 高傳播性。
函數(shù)L的構(gòu)造是基于二進(jìn)制線性糾錯(cuò)碼的。映射L和二進(jìn)制糾錯(cuò)碼的發(fā)生器矩陣G=(Ik||A)∈Z2k×2k相同。注意對(duì)所有的代碼字(x||xA)∈Z22k和x∈Z2k來說,左半部x對(duì)應(yīng)于L的輸入,而右半部xA對(duì)應(yīng)于輸出。注意對(duì)所有二進(jìn)制糾錯(cuò)碼滿足設(shè)計(jì)標(biāo)準(zhǔn)(1),而當(dāng)且僅當(dāng)A是Z2上的非奇矩陣時(shí)滿足(2)。還要注意可以用代碼字的最小海明權(quán)重來表達(dá)標(biāo)準(zhǔn)(3);最短距離越高,傳播性越好。
下面將針對(duì)32位塊(即k=32并且A∈Z232×32)說明A的構(gòu)造并用擴(kuò)展Bose-Chaudhuri-Hocquenghem(XBCH)代碼作為用最小海明距離等于12來構(gòu)造a[64,32]代碼的起點(diǎn)。眾所周知這樣的代碼是最優(yōu)的,即任意二進(jìn)制[64,32]代碼的最小海明距離小于或等12。既然代碼是線性的,這意味著任意非零代碼字的最小海明權(quán)重至少是12。注意這意味著映射L的傳播性在位-級(jí)上是最優(yōu)的,在t位輸入(小規(guī)模)改變的情況下意味著輸出中至少max{0,12-t}位的改變。
按照下列步驟構(gòu)造包含矩陣A的二進(jìn)制[64,32,12]代碼的發(fā)生器矩陣,如圖5所示(i) 在510步獲得標(biāo)準(zhǔn)格式的發(fā)生器矩陣G”(即G”=(I32||B),B∈Z232×28),它對(duì)應(yīng)于二進(jìn)制線性糾錯(cuò)碼。優(yōu)選地用下列方式構(gòu)造發(fā)生器矩陣G”,從Bose-Chaudhuri-Hocquenghem(BCH)代碼開始(a) 在512步中,用發(fā)生器多項(xiàng)式g(x)=x27+x22+x21+x19+x18+x17+x15+x8+x4+x+1為二進(jìn)制[63,36,11]BCH代碼構(gòu)造發(fā)生器矩陣G∈Z236×63,這里G的行j(j=0,1,...,35)對(duì)應(yīng)于多項(xiàng)式xjg(x)。更精確地說,如果g(x)=∑i=0,1,...,27gixi,gi∈Z2,矩陣的第一行由(g0,g1,...,g27,0,0,...,0)∈Z263給出。發(fā)生器矩陣的第j(j=1,2,...,35)行由第一行向右循環(huán)移動(dòng)j位而產(chǎn)生。
(b) 在514步,通過刪除G的前四行和前四列把這個(gè)代碼縮短到[59,32,11]。
(c) 在518步,通過給每個(gè)代碼字添加奇偶校驗(yàn)符號(hào)把這個(gè)縮短的代碼擴(kuò)展到[60,32,12]代碼。注意通過添加奇偶校驗(yàn),一列的添加導(dǎo)致最小距離的增加。由G’表示這個(gè)[60,32,12]代碼的32×60發(fā)生器矩陣。
(d) 在520步,在G’上執(zhí)行高斯消去以獲得標(biāo)準(zhǔn)格式的發(fā)生器矩陣G”,即G”=(I32||B),B∈Z232×28。注意這是縮短的[60,32,12]XBCH代碼的發(fā)生器矩陣(ii)用4列來擴(kuò)展B,這樣產(chǎn)生的矩陣C∈Z232×32是Z2上的非奇矩陣。優(yōu)選地這4列是(偽)隨機(jī)選中的(a) 創(chuàng)建4個(gè)帶有32個(gè)(偽)隨機(jī)選中的二進(jìn)制元素的列,(b) 通過用這4個(gè)新列擴(kuò)展B來創(chuàng)建測(cè)試矩陣(本質(zhì)上新加的列的列位置并不重要)(c) 檢查測(cè)試矩陣是否可逆。對(duì)這個(gè)測(cè)試可以使用任意合適的方法,即基于高斯消去的方法。
(d) 如果測(cè)試矩陣是可逆的話,就停止處理(已經(jīng)找到了一個(gè)矩陣),否則通過產(chǎn)生至少一個(gè)新列來重新啟動(dòng)。應(yīng)該理解除了使用隨機(jī)創(chuàng)建方法之外還可以用任意合適的方式產(chǎn)生這四個(gè)列的元素。
因?yàn)橛枚?位S-盒構(gòu)造循環(huán)函數(shù),還希望在這個(gè)多-位級(jí)別上有好的傳播性。對(duì)4-位S-盒來說,可以按照下列各項(xiàng)表示這一點(diǎn)(其它數(shù)量的位的變體也很適合本領(lǐng)域的技術(shù)人員)。如果定義代碼字c∈Z232的4-位向量ni(i=0,1,...,7)為c=(n0||n1||...||n7),那么定義c的半字節(jié)權(quán)重為NW(c)=#{i||ni≠(0,0,0,0),i=0,1,2,...,7}。可以用所有非零代碼字上的最小半字節(jié)權(quán)重來表示半字節(jié)-級(jí)別上的傳播性;這個(gè)最小權(quán)重越高,半字節(jié)-級(jí)別上的傳播性越好。位了在多-位級(jí)別(例如半字節(jié)級(jí)別)上達(dá)到高傳播性,在530步中選擇兩個(gè)置換矩陣P1,P2∈Z232×32,這樣帶有發(fā)生矩陣(I||P1||P2)的[64,32,12]代碼中的所有代碼字都有高的半字節(jié)權(quán)重。最后找到的矩陣A=P1CP2用于線性變換。在優(yōu)選實(shí)施方案中,置換矩陣P1和P2是(偽)隨機(jī)產(chǎn)生的。可以驗(yàn)證由(I||A)產(chǎn)生的代碼的最小半字節(jié)權(quán)重等于7。
下表中給出了用這種方式產(chǎn)生的線性變換矩陣A的行(a0是第一行,a1是第二行,...,a31是最后一行)。注意向量-矩陣乘積對(duì)應(yīng)于行ak的異或,對(duì)這一點(diǎn)來說yk(i)=1(k=0,1,...,31)。
與MDS代碼的比較在對(duì)稱-密鑰加密中使用基于MDS代碼的線性變換有別于S。Vaudenay,“On the Need for Multi-PermutationsCryptanalysis ofMD4 and SAFER”,F(xiàn)ast Software Encryption(2nd),LNCS 1008,Springer,1995,286-297頁。下面的表格比較了在依照本發(fā)明基于XBCH的矩陣中所用的結(jié)構(gòu)的半字節(jié)權(quán)重分布和MDS代碼的(半字節(jié))權(quán)重分布。該記錄表示帶有給定半字節(jié)權(quán)重的非零代碼字的數(shù)量。
從這個(gè)表中可以看出,兩種結(jié)構(gòu)的半字節(jié)權(quán)重分布非常接近。XBCH結(jié)構(gòu)的最小半字節(jié)權(quán)重僅比MDS結(jié)構(gòu)的最小權(quán)重小2,可以表示它對(duì)于本標(biāo)準(zhǔn)是最優(yōu)的。然而,MDS結(jié)構(gòu)的缺點(diǎn)是它包含附加的數(shù)學(xué)結(jié)構(gòu),例如相關(guān)線性變換的F16(的子域)上的線性,它可以用在塊加密的密碼分析中。即可以通過從F16→F16的映射描述S-盒(并從而完成塊加密)。此外,在本文檔中描述的結(jié)構(gòu)確保了位-級(jí)別上的最優(yōu)傳播。
權(quán)利要求
1.一種產(chǎn)生用在對(duì)稱-密鑰加密中的線性變換矩陣的方法,該方法包括-產(chǎn)生二進(jìn)制[n,k,d]糾錯(cuò)碼,由標(biāo)準(zhǔn)形式G=(Ik||B)的發(fā)生器矩陣G∈Z2k×n表示,而且B∈Z2k×(n-k),k<n<2k,并且d是二進(jìn)制糾錯(cuò)碼的最小距離;-用2k-n列擴(kuò)展矩陣B,這樣產(chǎn)生的矩陣C是非奇的,并且-從矩陣C產(chǎn)生矩陣A。
2.權(quán)利要求1中的方法,其中用2k-n列擴(kuò)展矩陣B的步驟包括以迭代方式-(偽)隨機(jī)產(chǎn)生2k-n列,每列有k個(gè)二進(jìn)制元素;-形成測(cè)試矩陣,由B的n-k列和所產(chǎn)生的2k-n列組成;并且-檢查測(cè)試矩陣是否是非奇矩陣,直到找到非奇的測(cè)試矩陣為止;并-用找到的測(cè)試矩陣作為矩陣C。
3.權(quán)利要求1中的方法,其中從矩陣C產(chǎn)生矩陣A的步驟包括-確定兩個(gè)置換矩陣P1,P2∈Z2k×k,這樣一個(gè)[2k,k,d]糾錯(cuò)碼,由發(fā)生器矩陣(I||P1CP2)表示,中的所有代碼字都有預(yù)定的多-位權(quán)重;并且-用P1CP2作為矩陣A。
4.權(quán)利要求3中的方法,其中加密包括循環(huán)函數(shù)和帶有在m-位子塊上操作的S-盒的S-盒層次,并且所有非零代碼字上的最小預(yù)定多-位權(quán)重等于預(yù)定m-位權(quán)重。
5.權(quán)利要求3中的方法,其中確定兩個(gè)置換矩陣P1和P2的步驟包括用(偽)隨機(jī)方式迭代產(chǎn)生矩陣。
6.權(quán)利要求1中的方法,其中加密包括在32-位塊上操作的循環(huán)函數(shù),并且其中產(chǎn)生[n,k,d]糾錯(cuò)碼的步驟包括-產(chǎn)生二進(jìn)制擴(kuò)展Bose-Chaudhuri-Hocquenghem(XBCH)[64,32,12]代碼;并且-通過刪除4行把這個(gè)代碼縮短到[60,32,12]縮短XBCH代碼。
7.一種計(jì)算機(jī)程序產(chǎn)品,運(yùn)行該程序產(chǎn)品使處理器執(zhí)行權(quán)利要求1的方法。
8.一種以加密方式把輸入數(shù)據(jù)塊轉(zhuǎn)換成輸出數(shù)據(jù)塊的系統(tǒng);數(shù)據(jù)塊包括n個(gè)數(shù)據(jù)位;該系統(tǒng)包括-接收輸入數(shù)據(jù)塊的輸入;-存儲(chǔ)線性變換矩陣A的存儲(chǔ)器,矩陣A是依照權(quán)利要求1的方法產(chǎn)生的,-密碼處理器,用線性變換矩陣A在在輸入數(shù)據(jù)塊或輸入數(shù)據(jù)塊的導(dǎo)數(shù)上執(zhí)行線性變換操作;和輸出,輸出處理過的輸入數(shù)據(jù)塊。
全文摘要
一種產(chǎn)生用在對(duì)稱-密鑰加密中的線性變換矩陣A的方法,包括產(chǎn)生一個(gè)二進(jìn)制[n,k,d]糾錯(cuò)碼,其中k<n<2k,并且d是該二進(jìn)制糾錯(cuò)碼的最小距離。該代碼由標(biāo)準(zhǔn)格式G=(I
文檔編號(hào)H04L9/06GK1398467SQ01803008
公開日2003年2月19日 申請(qǐng)日期2001年7月20日 優(yōu)先權(quán)日2000年8月3日
發(fā)明者P·L·A·雷爾斯 申請(qǐng)人:皇家菲利浦電子有限公司