專(zhuān)利名稱(chēng):用于加密和解密數(shù)據(jù)塊的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于加密和解密被稱(chēng)為塊密碼的數(shù)據(jù)塊的設(shè)備和方法,輸入塊與 輸出塊的大小是相同的。
背景技術(shù):
所述操作是使用密鑰來(lái)控制的,所述密鑰或者可以具有和所述塊一樣的大小,或 者可以具有不同的大小,通常是較大的大小。本發(fā)明涉及與不對(duì)稱(chēng)方法相對(duì)的對(duì)稱(chēng)加密/解密方法。所述對(duì)稱(chēng)方法的特點(diǎn)在 于,使用相同的密鑰去加密和解密數(shù)據(jù),而不對(duì)稱(chēng)方法使用第一密鑰加密數(shù)據(jù),以及使用第 二密鑰解密數(shù)據(jù)。眾所周知的方法是DES (56位密鑰)、CAST (128位密鑰)、Blowfish (448位密鑰)、 Twofish (256位密鑰)和Rijndael (又被稱(chēng)為AES,256位密鑰)。根據(jù)所考慮的應(yīng)用,它們 具有它們自己的優(yōu)缺點(diǎn)。已經(jīng)公布了幾個(gè)描述這些方法的專(zhuān)利。專(zhuān)利US 5,214,703描述了稱(chēng)為IDEA 的 方法,其是基于對(duì)于64位塊長(zhǎng)度的8. 5循環(huán)操作加密過(guò)程,每個(gè)循環(huán)使用從主密鑰導(dǎo)出的6 個(gè)子密鑰。核心是由使用加法模(modulo) 216、乘法模216+1和逐位異-或運(yùn)算的Lai-Massey 方案組成的。對(duì)于加密方法的兩個(gè)主要要求是相對(duì)于任何形式的密碼分析的健壯性和計(jì)算速 度。對(duì)于健壯性的一個(gè)關(guān)鍵因素是由擴(kuò)散效應(yīng)實(shí)現(xiàn)的,即當(dāng)在輸入數(shù)據(jù)中一個(gè)位改變時(shí),以 不可預(yù)測(cè)的方式影響所有輸出位。所述計(jì)算速度主要是由所需要的數(shù)學(xué)和邏輯操作的類(lèi)型決定的。較復(fù)雜的操作 (除法、乘法)可能延長(zhǎng)執(zhí)行加密過(guò)程的時(shí)間。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種提供與高運(yùn)行速度相結(jié)合的高級(jí)別安全性的新的加密 方法。這個(gè)目的是由基于主密鑰R而將數(shù)據(jù)X的塊加密或者解密為數(shù)據(jù)Y的方法來(lái)實(shí)現(xiàn) 的,該方法使用幾個(gè)串聯(lián)連接的模塊,每個(gè)模塊使用從主密鑰R導(dǎo)出的子密鑰RA,并且包括 以下步驟-輸入至少兩個(gè)初始值XOL與X0R,-混合所述至少兩個(gè)值XOL與XOR以形成混合的值Xl,-通過(guò)將所述子密鑰RA的第一部分RAH與所述值Xl混合而獲得值X2,
-通過(guò)把所述值X2應(yīng)用到替換層(substitutionlayer)而獲得值X3,所述替換 層包括至少一個(gè)替換盒(substitution box) (sbox),每個(gè)替換盒包含至少一個(gè)常數(shù)表,對(duì) 于所述常數(shù)表,輸入作為指針,所指向的常數(shù)作為輸出,-通過(guò)基于值X3使用多排列(multi-permutation)類(lèi)型的擴(kuò)散盒(diffusion box)而獲得值X4,-通過(guò)將所述子密鑰RA的第二部分RAL與所述值X4混合而獲得值X5,-通過(guò)對(duì)所述值X5應(yīng)用替換層而獲得值X6,-通過(guò)將所述子密鑰RA的第一部分RAH與所述值X6混合而獲得值X7,-使將所述值X7與初始的至少兩個(gè)值XOL與XOR混合以獲得至少兩個(gè)值X8L與 X8R,X8L與X8R表示所述模塊的輸出值X8,所述方法使用至少兩個(gè)模塊,其中對(duì)于每個(gè)模塊,新的子密鑰RA是從主密鑰R 產(chǎn)生的,所述第一模塊的初始值XO是所述輸入數(shù)據(jù)X的部分,最后的模塊的輸出值X8L 與X8H形成輸出數(shù)據(jù)Y,并且所述方法還包括以下步驟在把所述值X8L和X8R應(yīng)用到下 一個(gè)模塊的輸入XOR與XOL之前,對(duì)所述值X8L或者X8R中的至少一個(gè)應(yīng)用正形性函數(shù) (orthomorphism function)。所述方法的兩個(gè)主要部分是替換層與多排列矩陣。所述替換層的目的是把輸入值變換為沒(méi)有簡(jiǎn)單代數(shù)關(guān)系的輸出值。這就是為什么 最快的方式是使用包含常數(shù)的查找表,其可以實(shí)現(xiàn)期望的混淆結(jié)果。由于在這個(gè)實(shí)施例中輸入數(shù)據(jù)具有32位的長(zhǎng)度,因此,常數(shù)的數(shù)量將是232個(gè)值, 每個(gè)值是32位長(zhǎng)。根據(jù)優(yōu)選實(shí)施例,所述輸入數(shù)據(jù)被分成8位長(zhǎng)的組,由此將常數(shù)的數(shù)量減少到256 個(gè)字節(jié)。然后32位或者64位的輸入數(shù)據(jù)被分成8位的字節(jié),并且被應(yīng)用于替換盒以獲得 8位的輸出。所述輸入數(shù)據(jù)被用作地址指針,以及所指向的常數(shù)是所述輸出。根據(jù)所述實(shí)現(xiàn)方法,所述常數(shù)表對(duì)于所有輸入數(shù)據(jù)(32位或者64位)的組都是一 樣。在另一個(gè)實(shí)施例中,所述常數(shù)表對(duì)于所述輸入數(shù)據(jù)的每個(gè)組是不同的。在這個(gè)表中存儲(chǔ)的常數(shù)是由等于表寬度的多個(gè)比特所編碼的、全部不同的固定排 列的數(shù)字。所述方法的第二個(gè)主要部分是多排列矩陣。所述多排列矩陣是方陣,所述方陣具 有每個(gè)可能的方形子矩陣有不同于零的行列式的屬性;所述矩陣的元素是有限域的元素。 所述混合操作包括用輸入元素的矢量乘所述矩陣,產(chǎn)生被定義為所述輸出的矢量。
圖1示出了在64位形式中的主模塊的框圖;圖2示出了包括具有兩個(gè)模塊的例子的主要過(guò)程;圖3示出了在64位形式中的主模塊的內(nèi)部部分;圖4示出了在128位形式中的主模塊的框圖;圖5示出了正形性函數(shù)的框圖;圖6示出了用于產(chǎn)生所述替換盒的子系統(tǒng);
圖7示出了在128位形式中的主模塊的內(nèi)部部分;圖8示出了在128位形式中包括具有兩個(gè)模塊的例子的主要過(guò)程;和圖9示出了所述替換盒的另一種形式。
具體實(shí)施例方式圖1示出了所述加密(或者解密)處理的構(gòu)架,其表示模塊MOD。以每個(gè)為32位 的兩個(gè)部分XOL和XOR所表示的64位的輸入數(shù)據(jù)XO首先在混合單元MX內(nèi)被混合以獲得 Xl值。所述混合單元是為了提供兩倍于32位數(shù)據(jù)的32位映像(image)。這可以用不同的 方法實(shí)現(xiàn),例如使用異或(XOR)函數(shù)、通過(guò)模的相加、或者通過(guò)使用任何組法則。下一步驟通過(guò)塊f32說(shuō)明,所述塊f32具有32位輸入Xl和32位輸出X7、以及使 用子密鑰RA。這個(gè)塊的詳細(xì)描述是參照?qǐng)D3給出的(見(jiàn)下文)。所述塊f32的輸出X7被應(yīng)用于和兩個(gè)輸入XOL和XOH相連接的兩個(gè)混合塊MX。所產(chǎn)生的數(shù)據(jù)X8L和X8R表示所述模塊MOD的兩個(gè)64位輸出X8。圖2示出了使用至少兩個(gè)模塊MOD的整個(gè)處理。所述輸入數(shù)據(jù)X首先被應(yīng)用于分 離模塊SP,所述分離模塊把所述64位輸入X轉(zhuǎn)換為兩個(gè)輸出值XOLl和XORl,每個(gè)是32位長(zhǎng)。所述分離模塊SP的功能可以用不同的方式實(shí)現(xiàn),例如選擇低位的比特用于XOLl 和高位的比特用于XORl,或者每個(gè)奇比特用于XOLl和偶比特用于XORl??梢允褂脤?duì)所述 輸入數(shù)據(jù)X進(jìn)行劃分的其它方法,只要X的所有位被包括在XOLl和XORl內(nèi)。所述輸出XOLl和XORl然后用作第一模塊MODl中的輸入。所述第一模塊在使用 第一個(gè)子密鑰RAl的同時(shí)處理所述數(shù)據(jù)。對(duì)于XOLl和XORl的處理與根據(jù)圖1描述的相 同。所述第一模塊MODl的輸出是兩個(gè)輸出X8L1和X8R1。正形性函數(shù)被應(yīng)用于所述輸出中 的一個(gè),例如圖2上示出的X8L1。由所述正形性函數(shù)得到的所述輸出稱(chēng)為X0L2。由通過(guò)第 一個(gè)模塊MODl的處理得到的另一個(gè)值X8R1以及由所述正形性函數(shù)得到的輸出X0L2被用 作第二處理模塊M0D2中的輸入。所述第二模塊M0D2將基于第二個(gè)子密鑰RA2處理其輸入 數(shù)據(jù)。所述第二模塊的輸出在圖2上被稱(chēng)為X8L2和X8R2。組合這些輸出以形成在組合器 (assembler)模塊AS內(nèi)的加密數(shù)據(jù)Y。所述模塊AS具有與所述分離模塊SP相同的功能, 但是逆向地工作。應(yīng)當(dāng)注意,重構(gòu)輸出Y的方式可以不同于所述分離模塊SP,但是目的是相 同的。X8L2和X8R2的所有位將出現(xiàn)在所述輸出Y中。圖3詳細(xì)地示出了圖1的塊f32的功能。在所述塊中,32位長(zhǎng)度數(shù)據(jù)Xl是輸入。 所述數(shù)據(jù)通過(guò)分離塊SPMU被分成8位長(zhǎng)度的塊(Xla、Xlb、Xlc、Xld),還在圖3中被表示為 XI'。所述塊具有和關(guān)于圖2的塊SP所描述的功能相同的功能。這些8位塊的每一個(gè)與 所述子密鑰RA的第一部分RAH混合,以獲得值X2a、X2b、X2c、X2d(形成所述值X2)。這個(gè) 混合操作和關(guān)于圖1的塊MX所描述的混合操作是相同的。所述兩個(gè)子密鑰RAH和RAL的產(chǎn)生是通過(guò)所述分離模塊SP進(jìn)行的。所述模塊具 有與在圖1中描述的模塊相同的功能。這些值X2a至X2d的每一個(gè)被應(yīng)用到替換層,替換層包括至少一個(gè)替換盒(sbox), 每個(gè)替換盒包含常數(shù)表,對(duì)于所述常數(shù)表,輸入作為指針,所指向的常數(shù)作為輸出。所述輸 出數(shù)據(jù)在圖3上稱(chēng)為X3a、X3b、X3c、X3d (形成所述值X3)。
6
產(chǎn)生所述常數(shù)表的一種方法是使用偽隨機(jī)發(fā)生器。其將刪除所有重復(fù)的值,以使 得在所述表中的每個(gè)常數(shù)是唯一的。所述數(shù)據(jù)被輸入(4,4)多排列類(lèi)型的擴(kuò)散盒Mu4中。所述擴(kuò)散盒的輸出數(shù)據(jù)分 別稱(chēng)為乂如3413 34(3 34(1(形成所述值乂4)。所述擴(kuò)散盒包括用輸入向量(X4a、X4b、X4c、 X4d)乘方陣4x4Mu4,方陣4x4Mu4的元素屬于具有256個(gè)元素的有限域;這些元素被表示為 Mu(i,j),其中i是指行標(biāo)、而j是指列標(biāo)。用矢量(X4a、X4b、X4c、X4d)乘所述矩陣Mu4的 結(jié)果是矢量(Y4a、Y4b、Y4c、Y4d),其中這些值如下面這樣獲得Y4a =Mu4(l, 1) kX4a+Mu4(l,2) kX4b+Mu4(l,3) kX4c+Mu4(l,4) kX4d
Y4b =Mu4(2,1)-kX4a+Mu4(2,2)-kX4b+Mu4(2,3)-kX4c+Mu4(2,4)-kX4d
Y4c =Mu4(3,1)-kX4a+Mu4(3,2)-kX4b+Mu4(3,3)-kX4c+Mu4(3,4)-kX4d
Y4d =Mu4 (4,1)-kX 4a+Mu4(4,2)-kX 4b+Mu4(4,3)-kX 4c+Mu4(4,4)-kX4d
這里“+ ”表示在有限域中加法,“:k ”表示其乘法。選擇Mu4的元素,以使得估
計(jì)上述四個(gè)表達(dá)式所需要的計(jì)算的量是最小的。與常數(shù)“1”(此后被表示為“單位元 (identity) ”)相乘的數(shù)量因此被選擇為盡可能地大。所述數(shù)據(jù)然后與所述子密鑰RA的第二部分RAL混合,以獲得值X5a、X5b、X5c、 X5d(形成所述值X5)。這些值X5a至X5d的每個(gè)然后被應(yīng)用到替換塊(sbox),以獲得值X6a、X6b、X6c、 X6d(形成所述值X6)。這些值與所述子密鑰RA的第一部分RAH混合,以獲得新的值X7a、 X7b、X7c、X7d (形成所述值 X7)。然后,這些值X7a、X7b、X7c、X7d被組合以在所述組合器模塊AS內(nèi)形成輸出數(shù)據(jù) X7,如關(guān)于圖2所描述的那樣。所述數(shù)據(jù)對(duì)應(yīng)于在圖1中的塊f32的輸出數(shù)據(jù)X7。在加密處理期間,所述主密鑰R分為幾個(gè)子密鑰,每個(gè)模塊MOD —個(gè)子密鑰。在圖 3的例子中,第一子密鑰RAl結(jié)合所述模塊MODl被使用,以及第二子密鑰RA2結(jié)合所述模塊 M0D2被使用。為了基于數(shù)據(jù)Y和密鑰R獲得數(shù)據(jù)X,應(yīng)用與參照?qǐng)D3所描述的處理相同的處理, 僅有的區(qū)別是以相反次序產(chǎn)生所述子密鑰。所述子密鑰RA2于是應(yīng)用于第一模塊M0D1,以 及所述子密鑰RAl應(yīng)用于第二模塊M0D2。根據(jù)本發(fā)明的一般原理,串聯(lián)連接的模塊MOD的數(shù)量不限于兩個(gè)模塊。為了獲得 好的健壯性,經(jīng)驗(yàn)表明,為了獲得可以適用于加密處理的結(jié)果,9個(gè)循環(huán)是最佳的。為了獲得 更好的健壯性,所述數(shù)量可以擴(kuò)大至12或者更多。圖4描述了被設(shè)計(jì)用于處理128位長(zhǎng)度數(shù)據(jù)的模塊M0D64的實(shí)施例。所述輸入 XOLL和XOLR在混合單元MX內(nèi)被混合在一起以形成輸出值X1L,并且以同樣的方式,所述值 XORL和XORR被混合在一起以形成所述值X1R。下一步以層f64說(shuō)明,所述層f64具有兩個(gè)32位輸入XlL和X1R,以及具有兩個(gè)32 位輸出X7L和X7R,以及使用子密鑰RA。這個(gè)塊的詳細(xì)描述是參照?qǐng)D7給出的(見(jiàn)下文)。這些輸出的每一個(gè)在相同的混合單元MX內(nèi)與所述模塊M0D64的兩個(gè)輸入數(shù)據(jù)混 合。在本例子中,所述輸出值X7L分別與輸入XOLL和XOLR混合,以及所述輸出值X7R分別 與輸入XORL和XORR混合。其它混合組合也是可能的,例如以交叉配置將所述輸出值X7L 與XOLL和XORR混合。
圖5是所述正形性函數(shù)的實(shí)施例的示例。所述輸入數(shù)據(jù)標(biāo)記為ZI,以及所述輸出 數(shù)據(jù)標(biāo)記為Z0。所述數(shù)據(jù)長(zhǎng)度對(duì)于這個(gè)功能不是個(gè)問(wèn)題。所述輸入數(shù)據(jù)ZI首先分為與分 離模塊SP相同大小的兩個(gè)值ZL和ZR。然后所述兩個(gè)值通過(guò)所謂的MX混合單元被混合, 以及所述單元的輸出被應(yīng)用于所述組合器單元AS。另一個(gè)分離值ZR不用改變直接被應(yīng)用 于組合器模塊AS。所述模塊包括兩個(gè)輸入,以及組合這些數(shù)據(jù)以形成輸出值Z0。這個(gè)模塊 與所述分離模塊SP相反地工作。這個(gè)實(shí)施例的特殊性是,所述組合器模塊的輸入相對(duì)于所 述分離模塊SP的輸出是交叉的。所述分離模塊SP的右邊輸出ZR被應(yīng)用到所述組合器模 塊AS的左邊輸入,以及在與所述分離模塊SP的另一個(gè)輸出混合之后,所述分離模塊SP的 左邊輸出ZL被應(yīng)用到所述組合器模塊AS的右邊輸入。至于所考慮的替換盒,存在有執(zhí)行所述功能的不同可能。我們先前已經(jīng)描述了唯 一基于常數(shù)表的方法。減少表大小的第一步是分離所述輸入,以及把所述部分應(yīng)用到更小 的表中。圖3的例子示出了通過(guò)8位數(shù)據(jù)長(zhǎng)度而工作的替換盒,由此嵌入了 256個(gè)常數(shù)的表。在某些情況下,特別是其中存儲(chǔ)器大小成問(wèn)題的情況下,要尋求其它的選擇。這種 選擇參考圖6和9被描述。圖3示出了所述替換盒的子系統(tǒng)Cbox,所述子系統(tǒng)包括被分為兩個(gè)輸入CL和CR 的一個(gè)輸入C、以及兩個(gè)輸出CL'和CR'。所述子系統(tǒng)的中心是所述模塊TA,其包括2W2)個(gè)元素的常數(shù)表,每個(gè)元素具有 η/2個(gè)位,其中η是輸入值C的長(zhǎng)度。對(duì)于具有8位長(zhǎng)度的輸入,常數(shù)表包括16 (24)個(gè)元素,每個(gè)元素是4位長(zhǎng)度。這 些元素是在考慮每個(gè)元素有唯一值的情況下隨機(jī)產(chǎn)生的。圖9描述了如何使用所述模塊Cbox來(lái)建立替換盒。所述輸入值CI首先分成兩個(gè) 部分CLl和CR1,以及被應(yīng)用于第一模塊Cboxl,如參照?qǐng)D3描述的那樣。所述模塊Cboxl 的輸出被發(fā)送到下一模塊Cbox2。所述第一模塊的其中一個(gè)輸出,在此情況下是CLl',在 應(yīng)用到第二模塊CVBox2之前,被給到正形性函數(shù)OR。所述替換盒的運(yùn)行通常使用至少兩個(gè)子系統(tǒng)Cbox,每個(gè)子系統(tǒng)具有不同的常數(shù)表 TA。在所說(shuō)明的例子中,所述替換盒是使用三個(gè)子系統(tǒng)Cbox形成的,所述最后子系統(tǒng)的輸 出不具有根據(jù)本實(shí)施例的正形性函數(shù)OR。圖7是在圖3中描述的實(shí)施例的另一種形式,被設(shè)計(jì)用于64位長(zhǎng)度的數(shù)據(jù)。設(shè)計(jì) 用于32位的所述結(jié)構(gòu)大部分被復(fù)制來(lái)處理64位的數(shù)據(jù)。所述輸入數(shù)據(jù)Xl被分成具有8位 長(zhǎng)度的元素(Xla至Xlh)的矢量,以及以和關(guān)于圖3描述的相同方式而被處理。主要區(qū)別 在于擴(kuò)散盒Mu8,所述擴(kuò)散盒是具有256個(gè)元素的有限域的8X8個(gè)元素的方陣。所述矩陣 的元素被表示為Mu8(i,j),其中i表示行標(biāo),j表示列標(biāo)。對(duì)于輸入向量(X3a,... , X3h), 通過(guò)矩陣MuS的相乘以下列方式給出了輸出矢量(Y3a,Y3h) ( “ + ”是加法,是在 有限域中的乘法)Y3a = Mu8(l,l) * X3a +Mu8(l,2) * X3b +Mu8(l,3) * X3c+Mu8(l,4) * X3d+Mu8(l,5) * X3e+Mu8(l,6) * X 3f+Mu8 (1,7) * X3g+Mu8(l,8) * X3h ;Y3b = Mu8(2,l) * X3a+Mu8(2,2) * X3b+Mu8(2,3) * X3c+Mu8(2,4)
8*X3d+Mu8(2,5) * X3e+Mu8(2,6) * X 3f+Mu8 (2Y3c = Mu8(3,l) * X3a+Mu8(3,2) *
*X3d+Mu8(3,5) * X3e+Mu8(3,6) * X 3f+Mu8 (3Y3d = Mu8(4,l) * X3a+Mu8(4,2) *
*X3d+Mu8 (4,5) * X3e+Mu8 (4,6) * X 3f+Mu8 (4Y3e = Mu8(5,l) * X3a+Mu8(5,2) *
*X3d+Mu8(5,5) * X3e+Mu8(5,6) * X 3f+Mu8 (5Y3f = Mu8(6,l) * X3a+Mu8(6,2) *
*X3d+Mu8 (6,5) * X3e+Mu8 (6,6) * X 3f+Mu8 (6Y3g = Mu8(7,l) * X3a+Mu8(7,2) *
*X3d+Mu8(7,5) * X3e+Mu8(7,6) * X 3f+Mu8 (7Y3h = Mu8(8,l) * X3a+Mu8(8,2) *
7) * X3g+Mu8(2,8 X3b+Mu8(3,3) * 7) * X3g+Mu8(3,8 X3b+Mu8(4,3) * 7) * X3g+Mu8 (4,8 X3b+Mu8(5,3) * 7) * X3g+Mu8(5,8 X3b+Mu8(6,3) * 7) * X3g+Mu8 (6,8 X3b+Mu8(7,3) * 7) * X3g+Mu8(7,8 X3b+Mu8(8,3) *
女 X3h ; X3c+Mu8(3 女 X3h ; X3c+Mu8(4 女 X3h ; X3c+Mu8(5 女 X3h ; X3c+Mu8(6 女 X3h ; X3c+Mu8(7 女 X3h ; X3c+Mu8(8
* X3d+Mu8 (8,5) * X3e+Mu8 (8,6) * X3f+Mu8 (8,7) * X3g+Mu8 (8,8) * X3h;圖8描述了使用所述模塊M0D64的兩個(gè)循環(huán)的運(yùn)行的全部處理。所述分離模塊SP 把所述128位長(zhǎng)度輸入數(shù)據(jù)X劃分為四個(gè)部分,即XOLLl、X0LR1、X0RL1和XORRl (形成所述 值X0)。然后,在被用作下一個(gè)模塊M0D64-2的輸入之前,所述模塊M0D64-1的結(jié)果中的兩 個(gè)部分被應(yīng)用于正形性函數(shù)OR。關(guān)于所述模塊M0D64的輸出的正形性函數(shù)OR的位置不是確定的。其可以根據(jù)所 述方法的實(shí)現(xiàn)來(lái)選擇兩個(gè)左輸出或者兩個(gè)右輸出。所述輸出Y是直接從最后的模塊M0D64獲得的,在這些輸出的一個(gè)中沒(méi)有正形性 函數(shù)OR。在使用多于兩個(gè)的模塊M0D64的情況下,所述正形性函數(shù)OR被設(shè)置在每個(gè)模塊 M0D64之間。即使在優(yōu)選實(shí)施例中,無(wú)論模塊的數(shù)量,所述正形性函數(shù)OR的位置都是相 同的,然而,在另一個(gè)實(shí)施例中,所述正形性函數(shù)OR的位置可以被改變成連接到所述模塊 M0D64的不同的輸出。
權(quán)利要求
一種基于主密鑰R而將數(shù)據(jù)X的塊加密或者解密為數(shù)據(jù)Y的方法,該方法用于加密和解密被稱(chēng)為塊密碼的數(shù)據(jù)塊,其中輸入塊與輸出塊的大小是相同的,所述方法使用至少兩個(gè)串聯(lián)連接的主模塊(MOD),每個(gè)主模塊(MOD)使用從所述主密鑰(R)得到的子密鑰(RA),包括以下步驟 輸入至少兩個(gè)初始值X0L與X0R, 混合所述至少兩個(gè)值X0L與X0R以形成混合的值X1, 通過(guò)將所述子密鑰RA的第一部分RAH與所述值X1混合而獲得值X2, 通過(guò)把所述值X2應(yīng)用到替換層而獲得值X3,所述替換層包括至少一個(gè)替換盒(sbox),每個(gè)替換盒包含常數(shù)表,對(duì)于所述表,輸入作為指針,以及所指向的常數(shù)作為輸出,通過(guò)使用偽隨機(jī)發(fā)生器來(lái)產(chǎn)生所述常數(shù)表, 通過(guò)基于值X3使用多排列類(lèi)型的擴(kuò)散盒而獲得值X4, 通過(guò)將所述子密鑰RA的第二部分RAL與所述值X4混合而獲得值X5, 通過(guò)對(duì)所述值X5應(yīng)用替換塊而獲得值X6, 通過(guò)將所述子密鑰RA的第一部分RAH與所述值X6混合而獲得值X7, 將所述值X7與所述初始的至少兩個(gè)值X0L與X0R混合以獲得至少兩個(gè)值X8L與X8R,X8L與X8R表示所述模塊的輸出值X8,其中對(duì)于每個(gè)主模塊(MOD),新的子密鑰(RA)是從主密鑰(R)產(chǎn)生的,第一主模塊的初始值X0L和X0R是所述輸入數(shù)據(jù)X的子集,最后的主模塊的輸出值X8L與X8H形成所述輸出數(shù)據(jù)Y,以及所述方法還包括以下步驟在把所述值X8L和X8R應(yīng)用到下一個(gè)主模塊的輸入X0R與X0L之前,對(duì)所述值X8L或者X8R中的至少一個(gè)應(yīng)用正形性函數(shù)。
2.根據(jù)權(quán)利要求1的加密或者解密方法,其中所述輸入數(shù)據(jù)是64位長(zhǎng)度的,以及所述 輸入數(shù)據(jù)X被分成兩個(gè)32位長(zhǎng)度的初始值X0L與X0H,并且所述兩個(gè)輸出值X8L與X8H形 成所述輸出數(shù)據(jù)Y。
3.根據(jù)權(quán)利要求1的加密或者解密方法,其中所述輸入數(shù)據(jù)是128位長(zhǎng)度的,以及所述 輸入數(shù)據(jù)X被分成四個(gè)32位長(zhǎng)度的初始值X0LL、X0LR、X0RL與X0RR,以及所述四個(gè)輸出值 X8LL、X8LR、X8RL與X8RR形成128位的輸出數(shù)據(jù)Y,所述值XI的第一部分X1L是通過(guò)將所 述值X0LL與X0LR混合而獲得的,以及所述值XI的第二部分X1R是通過(guò)將所述值X0RL與 X0RR混合而獲得的,所述值X7的第一部分X7L與所述四個(gè)初始值X0LL、X0LR、X0RL和X0RR 中的兩個(gè)進(jìn)行混合,以及所述值X7的第二部分X7R與所述初始值X0LL、X0LR、X0RL和X0RR 中的另兩個(gè)部分進(jìn)行混合。
4.根據(jù)權(quán)利要求1的加密或者解密方法,其中所述替換層包括幾個(gè)替換盒(sbox),每 個(gè)盒具有8位輸入和8位輸出,所述替換層的輸入被分成8位長(zhǎng)度的部分。
5.根據(jù)權(quán)利要求4的加密或者解密方法,其中所述替換盒(sbox)的常數(shù)表(TA)包含 對(duì)于給定輸入的唯一輸出。
6.根據(jù)權(quán)利要求4的加密或者解密方法,其中用于每個(gè)替換盒(sbox)的常數(shù)表是相同的。
7.根據(jù)權(quán)利要求4的加密或者解密方法,其中用于每個(gè)替換盒(sbox)的常數(shù)表是不同的。
8.根據(jù)權(quán)利要求4的加密或者解密方法,其中所述替換盒(sbox)的常數(shù)表是在每個(gè)主模塊運(yùn)行中被改變的。
9.根據(jù)權(quán)利要求1的加密或者解密方法,其中所述數(shù)據(jù)長(zhǎng)度是64位,以及所述擴(kuò)散盒 是矩陣函數(shù)Y3 = M * X4,所述變?cè)狹定義4 ★ 4的加法、與常數(shù)的乘法、或者單位元,所述 變?cè)狹中的至少一行和一列包括三個(gè)單位元。
10.根據(jù)權(quán)利要求9的加密或者解密方法,其中所述變?cè)狹的剩余的行和剩余的列包括 兩個(gè)單位元。
11.根據(jù)權(quán)利要求1的加密或者解密方法,其中所述數(shù)據(jù)長(zhǎng)度是128位,以及所述擴(kuò)散 盒是矩陣函數(shù)Y3 = N * X3,所述變?cè)狽定義8女8的加法、與常數(shù)的乘法、或者單位元,所 述變?cè)狽中的至少一行和一列包括七個(gè)單位元。
全文摘要
本發(fā)明公開(kāi)了一種用于加密和解密數(shù)據(jù)塊的設(shè)備和方法?;谥髅荑€R而將數(shù)據(jù)X的塊加密或者解密為數(shù)據(jù)Y的方法使用幾個(gè)串聯(lián)連接的模塊,每個(gè)模塊使用從主密鑰R導(dǎo)出的子密鑰RA,該方法包括輸入初始值X0L與X0R并混合這些值以形成X1,通過(guò)RA的RAH與X1混合而獲得值X2,通過(guò)把X2應(yīng)用到替換層而獲得值X3,替換層包括各自包含常數(shù)表的替換盒,通過(guò)基于值X3使用多排列類(lèi)型的擴(kuò)散盒而獲得值X4,通過(guò)將RA的RAL與X4混合而獲得值X5,通過(guò)對(duì)X5應(yīng)用替換層獲得值X6,通過(guò)將RAH與X6混合而獲得值X7,將X7與X0L與X0R混合以獲得X8L與X8R,X8L與X8R表示輸出值X8,該方法使用至少兩個(gè)模塊,對(duì)于每個(gè)模塊,從主密鑰R產(chǎn)生新RA,第一模塊的X0是X的一部分,X8L與X8H形成輸出Y。
文檔編號(hào)H04L9/06GK101944992SQ201010294888
公開(kāi)日2011年1月12日 申請(qǐng)日期2004年5月19日 優(yōu)先權(quán)日2003年5月23日
發(fā)明者帕斯卡爾·君諾德, 瑟基·瓦登納 申請(qǐng)人:納格拉影像股份有限公司