專利名稱:實(shí)現(xiàn)高速加密處理的設(shè)備、方法和存儲媒體的制作方法
本申請基于在日本提交的申請?zhí)枮镠10-116758和H10-116759的申請,因此結(jié)合它的內(nèi)容作為參考。
本發(fā)明涉及一種在基于密鑰的塊單元中加密/解密數(shù)據(jù)的加密處理設(shè)備、在加密處理設(shè)備中使用的加密處理方法、和存儲加密處理程序的加密處理程序的存儲媒體。本發(fā)明尤其涉及在不降低安全性的情況下,通過減少替換表數(shù)據(jù)的數(shù)量和產(chǎn)生替換表數(shù)據(jù)的頻率實(shí)現(xiàn)高速加密處理的加密處理技術(shù)。
近幾年來,當(dāng)通過數(shù)字通信的各種類型信息通信例如匯款已經(jīng)變得普遍時,防止被未經(jīng)允許的第三方竊聽和篡改保護(hù)重要消息的技術(shù)的需求已經(jīng)增長。這種有效改進(jìn)安全性的技術(shù)的代表是一種叫做密碼的技術(shù)。
在使用密碼的通信系統(tǒng)中,原始消息叫做“明文”,轉(zhuǎn)換明文以使第三方無法理解的結(jié)果叫做“密文”,對明文的轉(zhuǎn)換叫做“加密”,和為恢復(fù)原始明文對密文的逆轉(zhuǎn)換叫做“解密”。
加密和解密的模式由一種算法和用作算法參數(shù)的密鑰確定。算法指定一族轉(zhuǎn)換,而密鑰指定族的一種轉(zhuǎn)換。通常來說,算法在加密處理設(shè)備中不變,而密鑰在裝置中經(jīng)常會變。
假設(shè)密文易受到竊聽。由攻擊者在不知道算法和密鑰情況下解碼捕獲的密文以獲得原始消息的行為叫做“密碼分析”。
這里,這個攻擊者(以下稱“密碼分析者”)在假設(shè)已經(jīng)獲知密文的情況下進(jìn)行密碼分析。
僅從密文中得到秘密的明文或密鑰的密碼分析叫做“只對密文的攻擊”,而從任意的密文和明文對中確定密鑰并相應(yīng)于給定的密文指定明文的密碼分析叫做“已知明文的攻擊”。
一個傳統(tǒng)密碼系統(tǒng)的例子是偽隨機(jī)數(shù)加法類型的密碼。
在這種技術(shù)中,發(fā)送者和接收者每個都秘密地持有相同的密鑰并通過將密鑰用作包含相同算法的隨機(jī)數(shù)發(fā)生器的啟動源產(chǎn)生隨機(jī)數(shù)目的預(yù)定比特長度(以下稱“塊”)。在加密過程中發(fā)送者對隨機(jī)數(shù)和每塊明文中的對應(yīng)比特進(jìn)行異或運(yùn)算以產(chǎn)生密文。在解密過程中接收者對隨機(jī)數(shù)和每塊密文中的對應(yīng)比特進(jìn)行異或運(yùn)算以得到原始的明文。
使“M”為每塊明文、“C”為每塊密文、“R”為隨機(jī)數(shù)、和“(+)”為對應(yīng)比特的異或運(yùn)算。加密和解密可以分別表示為C=M(+)R …(公式1)M=C(+)R …(公式2)這種密碼的缺點(diǎn)在于它易于受到已知明文的攻擊。
假設(shè)已經(jīng)知道一對明文塊和密文塊。用下面的公式3可以得到隨機(jī)數(shù)R,而且結(jié)果可以得到其它的明文塊。
R=M(+)C …(公式3)因此,通過已知明文的攻擊密碼分析者可以很容易解碼偽隨機(jī)數(shù)加法類型的密文。
另一方面,例如數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)和快速數(shù)據(jù)加密算法(FEAL)的加密系統(tǒng)對已知明文的攻擊相對安全。這些方法的詳細(xì)資料,參見由Kyoritsu出版的Eiji okamoto的加密理論概論。
在這些加密系統(tǒng)中,數(shù)據(jù)分成64比特的塊并在塊單元中緊密移動。在DES算法的情形下,每塊重復(fù)16次包含替換移位的數(shù)據(jù)移動過程。
一個由DES和FEAL表示的塊密碼的例子是Blowfish密碼(這種密碼的詳細(xì)資料參見由Spinger-Verlag出版的,計(jì)算機(jī)科學(xué)會議記錄中Ross Anderson(版)的快速軟件加密、卷809第191-204頁,Bruce Schneier的“一種新型可變長度密鑰、64比特塊密碼(Blowfish)的描述”)。
下面是對Blowfish密碼的描述。
圖1表示使用Blowfish密碼的數(shù)據(jù)加密裝置的結(jié)構(gòu)。
圖中,數(shù)據(jù)加密裝置3010大致由數(shù)據(jù)移動單元3011、級數(shù)控制單元3012、子密鑰產(chǎn)生單元3013、和替換表數(shù)據(jù)產(chǎn)生單元3014組成。
替換表數(shù)據(jù)產(chǎn)生單元3014根據(jù)替換表數(shù)據(jù)產(chǎn)生算法從64比特的輸入密鑰數(shù)據(jù)中產(chǎn)生32K比特的替換表數(shù)據(jù)(每個32比特長的1024個表值)。替換表數(shù)據(jù)產(chǎn)生算法并不是本發(fā)明的主要方面,因此這里省略對它的解釋。
子密鑰產(chǎn)生單元3013根據(jù)子密鑰產(chǎn)生算法從64比特的輸入密鑰數(shù)據(jù)中產(chǎn)生256比特的數(shù)據(jù)并把256比特的數(shù)據(jù)分成8組32比特的子密鑰數(shù)據(jù)SK0-SK7。由于子密鑰產(chǎn)生算法并不是本發(fā)明的主要方面,因此這里省略對它的解釋。
數(shù)據(jù)移動單元3011用由替換表數(shù)據(jù)產(chǎn)生單元3014產(chǎn)生的32K比特的替換表數(shù)據(jù)和由子密鑰產(chǎn)生單元3013產(chǎn)生的32比特的子密鑰數(shù)據(jù)進(jìn)行64比特的輸入明文數(shù)據(jù)(以下稱“明文塊”)的數(shù)據(jù)移動,并輸出所得到的64比特的數(shù)據(jù)。通常來說,數(shù)據(jù)移動重復(fù)16次以產(chǎn)生64比特的密文數(shù)據(jù)(以下稱“密文塊”)。
級數(shù)控制單元3012控制由數(shù)據(jù)移動單元3011進(jìn)行的數(shù)據(jù)移動的次數(shù)以便從明文塊產(chǎn)生密文塊。級數(shù)控制單元3012計(jì)算每個明文塊進(jìn)行的數(shù)據(jù)移動的次數(shù)。如果所計(jì)次數(shù)小于預(yù)定次數(shù),級數(shù)控制單元3012就將數(shù)據(jù)移動單元3011的輸出數(shù)據(jù)輸入到數(shù)據(jù)移動單元3011。如果所計(jì)次數(shù)達(dá)到預(yù)定次數(shù),級數(shù)控制單元3012就輸出為密文塊的輸出數(shù)據(jù)。
這里,子密鑰SK0用于進(jìn)行明文塊的第一次數(shù)據(jù)移動,并接著一個一個地使用子密鑰SK1-SK7重復(fù)數(shù)據(jù)移動。子密鑰SK7之后,再用子密鑰SK1。
圖2表示使用Blowfish密碼的數(shù)據(jù)解密裝置的結(jié)構(gòu)。
圖中,數(shù)據(jù)解密裝置4010大致由數(shù)據(jù)移動單元4011、級數(shù)控制單元4012、子密鑰產(chǎn)生單元4013、和替換表數(shù)據(jù)產(chǎn)生單元4014組成。
數(shù)據(jù)移動單元4011、子密鑰產(chǎn)生單元4013、和替換表數(shù)據(jù)產(chǎn)生單元4014和圖1的數(shù)據(jù)移動單元3011、子密鑰產(chǎn)生單元3013、和替換表數(shù)據(jù)產(chǎn)生單元3014相同。
級數(shù)控制單元4012控制由數(shù)據(jù)移動單元4011進(jìn)行的數(shù)據(jù)移動的次數(shù)以便從密文塊產(chǎn)生明文塊。級數(shù)控制單元4012計(jì)算由每個密文塊進(jìn)行的數(shù)據(jù)移動的次數(shù)。如果所計(jì)次數(shù)小于預(yù)定次數(shù),級數(shù)控制單元4012就將數(shù)據(jù)移動單元4011的輸出數(shù)據(jù)輸入到數(shù)據(jù)移動單元4011。如果所計(jì)次數(shù)達(dá)到預(yù)定次數(shù),級數(shù)控制單元4012就輸出為明文塊的輸出數(shù)據(jù)。
這里,子密鑰SK7用于進(jìn)行密文塊的第一次數(shù)據(jù)移動,并接著一個一個地用子密鑰SK6-SK0重復(fù)數(shù)據(jù)移動。子密鑰SK0之后再用子密鑰SK7。
圖3表示圖1所示的數(shù)據(jù)移動單元3011的詳細(xì)結(jié)構(gòu)。數(shù)據(jù)移動單元3011包括第一異或運(yùn)算單元3111、第二異或運(yùn)算單元3112、和數(shù)據(jù)轉(zhuǎn)換單元3113。
第一異或運(yùn)算單元3111對32比特的子密鑰數(shù)據(jù)和64比特的輸入數(shù)據(jù)的高32比特(圖3的“X1”)的對應(yīng)比特進(jìn)行異或并輸出作為結(jié)果的32比特的數(shù)據(jù)S0。S0輸入到數(shù)據(jù)轉(zhuǎn)換單元3113并同時成為64比特的輸出數(shù)據(jù)的低32比特(圖3的“Y0”)。
數(shù)據(jù)轉(zhuǎn)換單元3113是所謂的f函數(shù)。數(shù)據(jù)轉(zhuǎn)換單元3113用32K比特的替換表數(shù)據(jù)轉(zhuǎn)換32比特的數(shù)據(jù)S0并輸出32比特的轉(zhuǎn)換數(shù)據(jù)S1。
第二異或運(yùn)算單元3112對32比特的數(shù)據(jù)S1和64比特的輸入數(shù)據(jù)的低32比特(圖3的“X0”)的對應(yīng)比特進(jìn)行異或并輸出作為結(jié)果的32比特的數(shù)據(jù)Y1。Y1成為64比特輸出數(shù)據(jù)的高32比特。
更特別地,數(shù)據(jù)移動單元3011按如下操作。
(1)首先,64比特的輸入數(shù)據(jù)分成高32比特X1和低32比特X0。
(2)第一異或運(yùn)算單元3111對32比特的數(shù)據(jù)X1和32比特的子密鑰數(shù)據(jù)的對應(yīng)比特進(jìn)行異或。結(jié)果,32比特的數(shù)據(jù)S0產(chǎn)生并置為64比特的輸出數(shù)據(jù)的低32比特Y0。
(3)數(shù)據(jù)轉(zhuǎn)換電路3113轉(zhuǎn)換32比特的數(shù)據(jù)S0并輸出32比特的轉(zhuǎn)換數(shù)據(jù)S1。
(4)第二異或運(yùn)算單元3112對32比特的數(shù)據(jù)S1和32比特的數(shù)據(jù)X0的對應(yīng)比特進(jìn)行異或。結(jié)果,產(chǎn)生32比特的數(shù)據(jù)并置為64比特的輸出數(shù)據(jù)的高32比特Y1。
接著從數(shù)據(jù)移動單元3011輸出由Y1和Y0組成的64比特的輸出數(shù)據(jù)和時鐘同時(未示出)。
圖4表示圖2所示的數(shù)據(jù)移動單元4011的詳細(xì)結(jié)構(gòu)。
數(shù)據(jù)移動單元4011包括第一異或運(yùn)算單元4111、第二異或運(yùn)算單元4112、和數(shù)據(jù)轉(zhuǎn)換單元4113。
第一異或運(yùn)算單元4111對32比特的子密鑰數(shù)據(jù)和64比特的輸入數(shù)據(jù)的低32比特(圖4的“Z0”)的對應(yīng)比特進(jìn)行異或并輸出作為結(jié)果的32比特的數(shù)據(jù)W1。W1成為64比特的輸出數(shù)據(jù)的高32比特。同時,為32比特的數(shù)據(jù)T0的Z0輸入到數(shù)據(jù)轉(zhuǎn)換單元4113。
數(shù)據(jù)轉(zhuǎn)換單元4113和數(shù)據(jù)轉(zhuǎn)換單元3113一樣是所謂的f函數(shù)。數(shù)據(jù)轉(zhuǎn)換單元4113用32K比特的替換表數(shù)據(jù)轉(zhuǎn)換32比特的數(shù)據(jù)T0并輸出32比特的轉(zhuǎn)換數(shù)據(jù)T1。
第二異或運(yùn)算單元4112對32比特的數(shù)據(jù)T1和64比特的輸入數(shù)據(jù)的高32比特(圖4的“Z1”)的對應(yīng)比特進(jìn)行異或運(yùn)算并輸出作為結(jié)果的32比特的數(shù)據(jù)W0。W0成為64比特輸出數(shù)據(jù)的低32比特。
數(shù)據(jù)移動單元4011的詳細(xì)操作與數(shù)據(jù)移動單元3011的類似,因此省略對它的解釋。
圖5表示圖3所示的數(shù)據(jù)轉(zhuǎn)換單元3113的詳細(xì)結(jié)構(gòu)。
數(shù)據(jù)轉(zhuǎn)換單元3113包括第一替換表數(shù)據(jù)存儲單元3201、第二替換表數(shù)據(jù)存儲單元3202、第三替換表數(shù)據(jù)存儲單元3203、第四替換表數(shù)據(jù)存儲單元3204、第一加法單元3205、第二加法單元3206、和異或運(yùn)算單元3207。
32K比特的替換表數(shù)據(jù)從高位比特分成四組8K比特的替換表數(shù)據(jù)R3、R2、R1、和R0。
32比特的輸入數(shù)據(jù)S0從高位比特分成四組8比特的數(shù)據(jù)V3、V2、V1、和V0。
第一至第四替換表數(shù)據(jù)存儲單元3201-3204存儲四組8K比特的替換表數(shù)據(jù)R3、R2、R1、和R0,其中每組8K比特的替換表數(shù)據(jù)從高位比特分成每個32比特長的256個表值。四組8比特的數(shù)據(jù)V3、V2、V1、和V0分別輸入到第一至第四替換表數(shù)據(jù)存儲單元3201-3204,并且第一至第四替換表數(shù)據(jù)存儲單元3201-3204分別指定并輸出基于V3-V1的256個所存表值的其中一個。本例中,存在第一替換表數(shù)據(jù)存儲單元3201的256個32比特表值以比特降低的順序設(shè)置為Tab1
、Tab1[1]、…、和Tab1[255]。類似的,存在第二替換表數(shù)據(jù)存儲單元3202的256個32比特的表值設(shè)置為Tab2
、Tab2[1]、…、和Tab2[255]。存在第三替換表數(shù)據(jù)存儲單元3203的256個32比特的表值設(shè)置為Tab3
、Tab3[1]、…、和Tab3[255]。存在第四替換表數(shù)據(jù)存儲單元3204的256個32比特的表值設(shè)置為Tab4
、Tab4[1]、…、和Tab4[255]。
第一加法單元3205對從第一替換表數(shù)據(jù)存儲單元3201輸出的32比特的表值和從第二替換表數(shù)據(jù)存儲單元3202輸出的32比特的表值進(jìn)行算術(shù)加,并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)。
當(dāng)從第一替換表數(shù)據(jù)存儲單元3201輸出的32比特的表值設(shè)置為“J3”、從第二替換表數(shù)據(jù)存儲單元3202輸出的32比特的表值設(shè)置為“J2”、和從第一加法單元3205輸出的32比特的數(shù)據(jù)設(shè)置為“Q0”時,上述加法表示為Q0=(J3+J2)mod(2^32)其中“a^b”表示a的“b”次冪,而且“αmodβ”表示當(dāng)α除以β時的余數(shù)。這些表示法應(yīng)用于下面給出的公式。
異或運(yùn)算單元3207對32比特的數(shù)據(jù)Q0和從第三替換表數(shù)據(jù)存儲單元3203輸出的32比特的表值的對應(yīng)比特進(jìn)行異或運(yùn)算,并輸出作為結(jié)果的32比特的數(shù)據(jù)。
當(dāng)從第三替換表數(shù)據(jù)存儲單元3203輸出的32比特的表值設(shè)置為“J1”和從異或運(yùn)算單元3207輸出的32比特的數(shù)據(jù)設(shè)置為“Q1”時,異或運(yùn)算單元3207的運(yùn)算表示為Q1=Q0(+)J1其中“α(+)β”表示α和β的對應(yīng)比特的異或運(yùn)算。
第二加法單元3206對32比特的數(shù)據(jù)Q1和從第四替換表數(shù)據(jù)存儲單元3204輸出的32比特的表值進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)。
當(dāng)從第四替換表數(shù)據(jù)存儲單元3204輸出的32比特的表值設(shè)置為“J0”、和從第二加法單元3206輸出的32比特的數(shù)據(jù)設(shè)置為“Q2”時,第二加法單元3206的操作表示為Q2=(Q1+J0)mod(2^32)其中Q2是數(shù)據(jù)轉(zhuǎn)換單元3113的32比特的輸出數(shù)據(jù)S1。
下面是數(shù)據(jù)轉(zhuǎn)換單元3113的操作。
(1)32K比特的輸入替換表數(shù)據(jù)從高位比特分成四組每組由256個32比特的表值組成的替換表數(shù)據(jù)R3、R2、R1、和R0。接著R3-R0分別存入第一至第四替換表數(shù)據(jù)存儲單元3201-3204。
(2)32比特的輸入數(shù)據(jù)S0從高位比特分成四組8比特的數(shù)據(jù)V3、V2、V1和V0,接著它們分別輸入到第一至第四替換表數(shù)據(jù)存儲單元3201-3204。
(3)第一至第四替換表數(shù)據(jù)存儲單元3201-3204分別指定并輸出基于V3-V0的256個存儲表值的其中一個。結(jié)果,分別從第一至第四替換表數(shù)據(jù)存儲單元3201-3204輸出四組32比特的表值J3-J0。
(4)第一加法單元3205對J3和J2進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)Q0。
(5)異或運(yùn)算單元3207對Q0和J1的對應(yīng)比特進(jìn)行異或運(yùn)算并輸出作為結(jié)果的32個比特的數(shù)據(jù)Q1。
(6)第二加法單元3206對Q1和J0進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特Q2(=S1)。
使用上述數(shù)據(jù)移動單元3011的數(shù)據(jù)密碼系統(tǒng)的安全性極大地依賴于在數(shù)據(jù)轉(zhuǎn)換單元3113進(jìn)行的轉(zhuǎn)換操作地?cái)?shù)據(jù)移動函數(shù)。由于數(shù)據(jù)轉(zhuǎn)換單元3113裝備有彼此分別操作的四個替換表數(shù)據(jù)存儲單元3201-3204,所以密碼系統(tǒng)對密碼分析和其它未經(jīng)允許的攻擊有高安全性。
圖4所示地?cái)?shù)據(jù)轉(zhuǎn)換單元4113具有和數(shù)據(jù)轉(zhuǎn)換單元3113同樣的結(jié)果因此這里不解釋了。
相對塊密碼所用的代表性的密碼分析技術(shù)是微分密碼分析和線性密碼分析。第三個例子的密碼系統(tǒng)已經(jīng)設(shè)計(jì)為增強(qiáng)抵抗對這種密碼分析技術(shù)。
在由Springer-Verlag出版的E.Biham&A.Shamir的數(shù)據(jù)加密標(biāo)準(zhǔn)的微分密碼分析、和在1993年密碼和信息安全研討會(SCIS′93)會議記錄SCIS93-3CM.Matsui的“DES密碼(I)的線性密碼分析方法”中詳細(xì)描述了微分密碼分析和線性密碼分析。
微分密碼分析和線性密碼分析屬于通過分析大量明文和密文對指定密鑰數(shù)據(jù)的已知明文地攻擊。這些密碼分析技術(shù)是在用相同的密鑰數(shù)據(jù)已經(jīng)產(chǎn)生要解碼的密文的所有密文塊的前提下建立的。
因此,通過使用不同的密鑰數(shù)據(jù)加密每個明文塊,有可能加強(qiáng)相對這些密碼分析技術(shù)的密碼安全性。
這里,因?yàn)楸仨殲楦嗟拿魑膲K準(zhǔn)備更多組的密鑰數(shù)據(jù),所以準(zhǔn)備密鑰數(shù)據(jù)的組數(shù)與明文塊的數(shù)目相同是不切實(shí)際的。為避免這種情況,在美國專利4074066(通過塊鏈驗(yàn)證消息和檢測傳輸誤差(日本專利1250077))公開了一種使用前一個密文塊為可變信息以更新密鑰數(shù)據(jù)的方法。根據(jù)這種方法,不需要準(zhǔn)備與明文塊相同數(shù)目的密鑰數(shù)據(jù)組,當(dāng)加密明文塊時隨時更新密鑰數(shù)據(jù)。由于每次加密明文塊都從原始密鑰數(shù)據(jù)產(chǎn)生新的密鑰數(shù)據(jù),所以在不增加密鑰數(shù)據(jù)數(shù)量的情況下可以增強(qiáng)對微分密碼分析和線性密碼分析的保護(hù)。
但是,必須在第二個例子的數(shù)據(jù)移動單元3011中存儲大量的替換密鑰數(shù)據(jù)(32K比特),所以就硬件和軟件工具的簡化來說存在問題。而且,需要大量的處理時間以產(chǎn)生如此大量的替換密鑰數(shù)據(jù)。但是,由于會降低密碼的安全性,所以不想減少替換表數(shù)據(jù)的數(shù)量。
當(dāng)?shù)谌齻€例子的密鑰鏈方法應(yīng)用到第二個例子的Blowfish密碼時,將產(chǎn)生下面的問題。
如上所述,第二個例子的Blowfish密碼從輸入的密鑰數(shù)據(jù)中產(chǎn)生32K比特的替換表數(shù)據(jù),而第三個例子的密鑰鏈接方法在每次加密明文塊時都更新密鑰數(shù)據(jù)。相應(yīng)地,當(dāng)密鑰鏈方法用于Blowfish密碼時,每次加密明文塊時都產(chǎn)生新的替換表數(shù)據(jù)。由于替換表數(shù)據(jù)的數(shù)量很大(32K比特),所以產(chǎn)生這種替換表數(shù)據(jù)的頻率將導(dǎo)致處理器極大的負(fù)擔(dān)并嚴(yán)重降低密碼的處理速度。由于它可能導(dǎo)致密碼安全性的降低,同樣不希望減少所產(chǎn)生的替換表數(shù)據(jù)的數(shù)目。
上述困難不僅存在于Blowfish密碼還存在于用輸入的密鑰數(shù)據(jù)產(chǎn)生的替換表數(shù)據(jù)進(jìn)行加密處理的其它的塊密碼。
考慮到上述的問題,本發(fā)明目的是在例如基于輸入的密鑰數(shù)據(jù)產(chǎn)生替換表數(shù)據(jù)以用于加密處理的Blowfish密碼的塊密碼中,提供一種通過減少替換表數(shù)據(jù)的數(shù)量和產(chǎn)生替換表數(shù)據(jù)的頻率,在不降低安全性的情況下實(shí)現(xiàn)高速加密處理的加密處理設(shè)備、加密處理方法、和存儲加密處理程序的存儲媒體。
上述目的可以通過用若干組替換數(shù)據(jù)加密處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù)的加密處理設(shè)備來完成,該加密處理設(shè)備包括存儲(2^N)組每組具有預(yù)定比特?cái)?shù)的替換數(shù)據(jù)的存儲單元,其中N是不小于2的整數(shù);將(N×M)比特長的輸入數(shù)據(jù)分成M組每組N比特長的子數(shù)據(jù)的劃分單元,其中M是不小于2的整數(shù);接收M組N比特的子數(shù)據(jù)、和對M組N比特的子數(shù)據(jù)進(jìn)行合并處理結(jié)果得到的至少一組N比特的輸入合并數(shù)據(jù)的任何一個輸入、為輸入的每組N比特指定存儲單元的(2^N)組替換數(shù)據(jù)的其中一組、和輸出為輸入的每組N比特指定的這組替換數(shù)據(jù)的替換單元;對從替換單元輸出的至少一組替換數(shù)據(jù)執(zhí)行大量不同的固定轉(zhuǎn)換的固定轉(zhuǎn)換執(zhí)行單元,以產(chǎn)生M組每組具有預(yù)定比特?cái)?shù)的轉(zhuǎn)換數(shù)據(jù);和基于由固定轉(zhuǎn)換執(zhí)行單元產(chǎn)生的M組轉(zhuǎn)換數(shù)據(jù),產(chǎn)生(N×M)比特長輸出數(shù)據(jù)的輸出數(shù)據(jù)產(chǎn)生單元。
根據(jù)這種結(jié)構(gòu),用少量的替換表數(shù)據(jù)就能得到高的密碼安全性,因此可以實(shí)現(xiàn)就簡化硬件/軟件工具來說更好的加密處理設(shè)備。
這里,預(yù)定數(shù)目可以是(N×M),其中替換單元從存儲單元的(2^N)組替換數(shù)據(jù)中分別為M組N比特的子數(shù)據(jù)指定M組替換數(shù)據(jù),并輸出M組每組(N×M)比特長的替換數(shù)據(jù),其中固定轉(zhuǎn)換執(zhí)行單元分別對從替換單元輸出的M組替換數(shù)據(jù)執(zhí)行M種不同的固定轉(zhuǎn)換,以產(chǎn)生M組每組(N×M)比特長的轉(zhuǎn)換數(shù)據(jù),并且其中輸出數(shù)據(jù)產(chǎn)生單元對所產(chǎn)生的M組轉(zhuǎn)換數(shù)據(jù)進(jìn)行合并處理以產(chǎn)生(N×M)比特長的輸出數(shù)據(jù)。
根據(jù)這種結(jié)構(gòu),替換表數(shù)據(jù)的長度在不降低安全性的情況下減小到傳統(tǒng)技術(shù)中替換表數(shù)據(jù)長度的1/M,因此可以實(shí)現(xiàn)就簡化硬件/軟件工具來說更好的加密處理設(shè)備。
這里,預(yù)定數(shù)目可以是N,其中替換單元包括對M組N比特的子數(shù)據(jù)進(jìn)行全程合并處理以產(chǎn)生一組N比特的輸入合并數(shù)據(jù),為這組N比特的輸入合并數(shù)據(jù)指定存儲單元中(2^N)組替換數(shù)據(jù)的其中一組,并輸出所指定的N比特長的這組替換數(shù)據(jù),其中固定轉(zhuǎn)換執(zhí)行單元對從替換單元輸出的這組替換數(shù)據(jù)進(jìn)行M種不同的固定轉(zhuǎn)換,以產(chǎn)生M組每組N比特長的轉(zhuǎn)換數(shù)據(jù),并且其中輸出數(shù)據(jù)產(chǎn)生單元包括對每組M組子數(shù)據(jù)和不同于相應(yīng)于這組子數(shù)據(jù)的M組轉(zhuǎn)換數(shù)據(jù)的一組進(jìn)行各自的合并處理,以產(chǎn)生M組每組N比特長的輸出合并數(shù)據(jù);和將由輸出合并單元產(chǎn)生的M組輸出合并數(shù)據(jù)結(jié)合以形成(N×M)比特長的輸出數(shù)據(jù)的結(jié)合單元。
根據(jù)這種結(jié)構(gòu),替換表數(shù)據(jù)的長度在不降低安全性的情況下減小到傳統(tǒng)技術(shù)中替換表數(shù)據(jù)長度的1/M,因此可以實(shí)現(xiàn)就簡化硬件/軟件工具來說更好的加密處理設(shè)備。
上述目的也可以由產(chǎn)生一組替換表數(shù)據(jù)和用這組替換表數(shù)據(jù)加密處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù)的加密處理設(shè)備來完成,該加密處理設(shè)備包括存儲一組密鑰數(shù)據(jù)的密鑰數(shù)據(jù)存儲單元;存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲單元;將輸入數(shù)據(jù)分成每個具有預(yù)定比特?cái)?shù)的輸入塊并一個一個地輸出輸入塊的塊產(chǎn)生單元;當(dāng)在加密處理指定數(shù)目的輸入塊后立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并用所產(chǎn)生的這組替換表數(shù)據(jù)替換替換表數(shù)據(jù)存儲單元中的一組替換表數(shù)據(jù)的替換表數(shù)據(jù)產(chǎn)生單元;當(dāng)在加密處理輸入塊的前一個輸入塊后加密處理該輸入塊時,通過用作為加密處理前一個輸入塊的結(jié)果所產(chǎn)生的輸出塊對這組密鑰數(shù)據(jù)進(jìn)行比特轉(zhuǎn)換,轉(zhuǎn)換密鑰數(shù)據(jù)存儲單元的一組密鑰數(shù)據(jù)的密鑰數(shù)據(jù)轉(zhuǎn)換單元;和用替換表數(shù)據(jù)存儲單元的一組替換表數(shù)據(jù)和由密鑰數(shù)據(jù)轉(zhuǎn)換單元產(chǎn)生的任何一組轉(zhuǎn)換的密鑰數(shù)據(jù)和在密鑰數(shù)據(jù)存儲單元中存儲的一組密鑰數(shù)據(jù),加密處理由塊產(chǎn)生單元輸出的輸入塊以產(chǎn)生輸出塊的加密處理單元。
上述目的也可以由產(chǎn)生一組替換表數(shù)據(jù)和用這組替換表數(shù)據(jù)和加密處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù)的加密處理設(shè)備來完成,該加密處理設(shè)備包括存儲一組密鑰數(shù)據(jù)的密鑰數(shù)據(jù)存儲單元;存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲單元;將輸入數(shù)據(jù)分成每個具有預(yù)定比特?cái)?shù)的輸入塊并一個一個地輸出輸入塊的塊產(chǎn)生單元;當(dāng)在加密處理指定數(shù)目的輸入塊后立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并用所產(chǎn)生的這組替換表數(shù)據(jù)替換替換表數(shù)據(jù)存儲單元中的一組替換表數(shù)據(jù)的替換表數(shù)據(jù)產(chǎn)生單元;當(dāng)在加密處理輸入塊的前一個輸入塊后加密處理該輸入塊時,通過用前一個輸入塊進(jìn)行比特轉(zhuǎn)換,轉(zhuǎn)換密鑰數(shù)據(jù)存儲單元的一組密鑰數(shù)據(jù)的密鑰數(shù)據(jù)轉(zhuǎn)換單元;和用替換表數(shù)據(jù)存儲單元的一組替換表數(shù)據(jù)和由密鑰數(shù)據(jù)轉(zhuǎn)換單元產(chǎn)生的任何一組轉(zhuǎn)換的密鑰數(shù)據(jù)和在密鑰數(shù)據(jù)存儲單元中存儲的一組密鑰數(shù)據(jù),加密處理由塊產(chǎn)生單元輸出的輸入塊以產(chǎn)生輸出塊的加密處理單元。
上述目的也可以由產(chǎn)生一組替換表數(shù)據(jù)和用這組替換表數(shù)據(jù)和加密處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù)的加密處理設(shè)備來完成,該加密處理設(shè)備包括存儲一組密鑰數(shù)據(jù)的密鑰數(shù)據(jù)存儲單元;存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲單元;將輸入數(shù)據(jù)分成每個具有預(yù)定比特?cái)?shù)的輸入塊并一個一個地輸出輸入塊的塊產(chǎn)生單元;當(dāng)在加密處理指定數(shù)目的輸入塊后立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并用所產(chǎn)生的這組替換表數(shù)據(jù)替換替換表數(shù)據(jù)存儲單元中的一組替換表數(shù)據(jù)的替換表數(shù)據(jù)產(chǎn)生單元;當(dāng)在加密處理輸入塊的前一個輸入塊后加密處理該輸入塊時,通過用加密處理前一個輸入塊的過程中所產(chǎn)生的中間塊對這組密鑰數(shù)據(jù)進(jìn)行比特轉(zhuǎn)換,轉(zhuǎn)換密鑰數(shù)據(jù)存儲單元的一組密鑰數(shù)據(jù)的密鑰數(shù)據(jù)轉(zhuǎn)換單元;和通過使用替換表數(shù)據(jù)存儲單元的一組替換表數(shù)據(jù)和由密鑰數(shù)據(jù)轉(zhuǎn)換單元產(chǎn)生的任何一組轉(zhuǎn)換的密鑰數(shù)據(jù)和在密鑰數(shù)據(jù)存儲單元中存儲的一組密鑰數(shù)據(jù),加密處理由塊產(chǎn)生單元輸出的輸入塊,以產(chǎn)生加密處理輸入塊的過程中的中間塊并產(chǎn)生作為加密處理輸入塊結(jié)果的輸出塊的加密處理單元。
根據(jù)這種結(jié)構(gòu),當(dāng)每次加密處理輸入塊更新密鑰數(shù)據(jù)時,由密鑰數(shù)據(jù)得到的替換表數(shù)據(jù)不相應(yīng)于密鑰數(shù)據(jù)的每次更新而更新而是僅當(dāng)加密處理指定數(shù)目的輸入塊時更新。相應(yīng)地,在不降低安全性的情況下可以實(shí)現(xiàn)進(jìn)行高速加密處理的加密處理設(shè)備。
本發(fā)明的這些和其它的目的、優(yōu)點(diǎn)和特征在結(jié)合說明本發(fā)明特定實(shí)施例的附圖的下面描述中將變得更加明顯。在附圖中圖1表示使用Blowfish密碼的數(shù)據(jù)加密裝置3010的結(jié)構(gòu);圖2表示使用Blowfish密碼的數(shù)據(jù)解密裝置4010的結(jié)構(gòu);圖3表示圖1所示的數(shù)據(jù)移動單元3011的詳細(xì)結(jié)構(gòu);圖4表示圖2所示的數(shù)據(jù)移動單元4011的詳細(xì)結(jié)構(gòu);圖5表示圖3所示的數(shù)據(jù)轉(zhuǎn)換單元3113的詳細(xì)結(jié)構(gòu);圖6表示本發(fā)明第一個實(shí)施例的加密通信系統(tǒng)的結(jié)構(gòu);圖7表示圖6所示的數(shù)據(jù)加密裝置10的詳細(xì)結(jié)構(gòu);圖8表示圖6所示的數(shù)據(jù)解密裝置20的詳細(xì)結(jié)構(gòu);圖9表示圖7所示的數(shù)據(jù)移動單元101的詳細(xì)結(jié)構(gòu);圖10表示圖8所示的數(shù)據(jù)移動單元201的詳細(xì)結(jié)構(gòu);圖11表示圖9所示的數(shù)據(jù)轉(zhuǎn)換單元300的詳細(xì)結(jié)構(gòu);圖12表示本發(fā)明第二個實(shí)施例的數(shù)據(jù)轉(zhuǎn)換單元500的詳細(xì)結(jié)構(gòu);圖13表示本發(fā)明第三個實(shí)施例的加密通信系統(tǒng)的結(jié)構(gòu);圖14表示圖13所示的數(shù)據(jù)加密裝置60的詳細(xì)結(jié)構(gòu);圖15表示圖13所示的數(shù)據(jù)解密裝置70的詳細(xì)結(jié)構(gòu);圖16表示圖14所示的數(shù)據(jù)加密單元601的詳細(xì)結(jié)構(gòu);圖17表示圖15所示的數(shù)據(jù)解密單元701的詳細(xì)結(jié)構(gòu);圖18表示第t塊的實(shí)際密鑰數(shù)據(jù)、輸入密鑰數(shù)據(jù)和替換表數(shù)據(jù)的對應(yīng)關(guān)系。
如果圖5所示的第一至第四替換表數(shù)據(jù)存儲單元3201-3204共享一組替換表數(shù)據(jù),那么在數(shù)據(jù)轉(zhuǎn)換單元3113存儲的替換表數(shù)據(jù)的數(shù)量會減少到原來數(shù)量的1/4,盡管會產(chǎn)生下面的安全性問題。
例如,當(dāng)圖5中V2=V3時,由于第一替換表數(shù)據(jù)存儲單元3201和第二替換表數(shù)據(jù)存儲單元3202共享一組替換表數(shù)據(jù)并相應(yīng)地J2=J3,所以第一加法單元3205對兩個相等的值進(jìn)行算術(shù)加。這種密碼系統(tǒng)僅具有低的數(shù)據(jù)移動函數(shù)并因此對未經(jīng)允許的攻擊不安全。
本發(fā)明第一個實(shí)施例的加密處理設(shè)備從一組替換表數(shù)據(jù)中檢索大量表值并進(jìn)行不同的固定轉(zhuǎn)換,例如對大量的表值進(jìn)行不同的移位比特長度的旋轉(zhuǎn)和不同常數(shù)的加法。通過這樣做,加密處理設(shè)備在減少替換表數(shù)據(jù)的數(shù)量而不降低安全性的情況下實(shí)現(xiàn)加密和解密(以下稱“加密處理”)。
圖6表示本發(fā)明第一個實(shí)施例的加密通信系統(tǒng)的結(jié)構(gòu)。
在圖6和本說明書所用的其它圖中,每個用雙線方框標(biāo)識的成分(例如圖6中的數(shù)據(jù)加密裝置10和數(shù)據(jù)解密裝置20)將在下面的圖中詳細(xì)說明。
圖6的加密通信系統(tǒng)包括發(fā)射機(jī)1和接收機(jī)2。
發(fā)射機(jī)1和接收機(jī)2例如是視頻服務(wù)器系統(tǒng)中的服務(wù)器和終端以發(fā)射/接收數(shù)字圖象信息。
發(fā)射機(jī)1裝備有數(shù)據(jù)加密裝置10和發(fā)射單元11。
數(shù)據(jù)加密裝置10用256比特的密鑰數(shù)據(jù)和8K比特的替換表數(shù)據(jù)(256個每個32比特長的表值)加密64比特單元的明文數(shù)據(jù)以產(chǎn)生密文數(shù)據(jù)。這里,明文例如是數(shù)字編碼的音頻或圖象信息。而且,在發(fā)射機(jī)1和接收機(jī)2中已經(jīng)秘密持有相同的密鑰數(shù)據(jù)和替換表數(shù)據(jù)。
發(fā)射單元11對由數(shù)據(jù)加密裝置10產(chǎn)生的密文數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換、調(diào)制、和放大以將所得到的發(fā)射信號輸出到傳輸線3。
接收機(jī)2裝備有數(shù)據(jù)解密裝置20和接收單元21。
接收單元21通過傳輸線3接收來自發(fā)射單元11的發(fā)射信號并對發(fā)射信號進(jìn)行發(fā)射單元11的逆處理以恢復(fù)密文數(shù)據(jù)。
數(shù)據(jù)解密裝置20用256比特的密鑰數(shù)據(jù)和8K比特的替換表數(shù)據(jù)(每個32比特長的256個表值)解密64比特單元的加密電文數(shù)據(jù)以得到解密電文數(shù)據(jù)(原始明文數(shù)據(jù))。
這里得到的解密的電文數(shù)據(jù)例如是數(shù)字編碼的音頻或圖象信息。這種信息接著由專用解碼器(未說明)解碼并通過揚(yáng)聲器或顯示器再生。
圖7表示圖6所示的數(shù)據(jù)加密裝置10的詳細(xì)結(jié)構(gòu)。
該數(shù)據(jù)加密裝置10大致由數(shù)據(jù)移動單元101、級數(shù)控制單元102、和密鑰控制單元103組成。
密鑰控制單元103從高位將256比特的密鑰數(shù)據(jù)分成8組32比特的子密鑰數(shù)據(jù)K0-K7。每次將64比特的數(shù)據(jù)輸入到數(shù)據(jù)移動單元101時,密鑰控制單元103一次將子密鑰數(shù)據(jù)K0-K7的一個輸出到數(shù)據(jù)移動單元101。子密鑰數(shù)據(jù)K7后,再輸出子密鑰數(shù)據(jù)K0。
數(shù)據(jù)移動單元101用8K比特的替換表數(shù)據(jù)和32比特的子密鑰數(shù)據(jù)對64比特的輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)移動并輸出所得到的64比特的數(shù)據(jù)。
級數(shù)控制單元102控制由數(shù)據(jù)移動單元101執(zhí)行的數(shù)據(jù)移動的次數(shù)以便由明文塊產(chǎn)生密文塊。級數(shù)控制單元102計(jì)算由每個明文塊執(zhí)行的數(shù)據(jù)移動的次數(shù)。如果所計(jì)次數(shù)少于預(yù)定次數(shù),就將數(shù)據(jù)移動單元101輸出的64比特的數(shù)據(jù)輸入到數(shù)據(jù)移動單元101中再移動。如果所計(jì)次數(shù)等于預(yù)定次數(shù),級數(shù)控制單元102輸出數(shù)據(jù)移動單元101的64比特的輸出數(shù)據(jù)作為密文塊。本實(shí)施例中,預(yù)定次數(shù)設(shè)為8。
圖8表示圖6所示的數(shù)據(jù)解密裝置20的詳細(xì)結(jié)構(gòu)。
該數(shù)據(jù)解密裝置20大致由數(shù)據(jù)移動單元201、級數(shù)控制單元202、和密鑰控制單元203組成。
密鑰控制單元203從高位將256比特的密鑰數(shù)據(jù)分成8組32比特的子密鑰數(shù)據(jù)K0-K7。每次將64比特的數(shù)據(jù)輸入到數(shù)據(jù)移動單元201時,密鑰控制單元203每次將子密鑰數(shù)據(jù)K0-K7的一個輸出到數(shù)據(jù)移動單元201。子密鑰數(shù)據(jù)K0后,再輸出子密鑰數(shù)據(jù)K7。
數(shù)據(jù)移動單元201和圖7的數(shù)據(jù)移動單元101相同。
級數(shù)控制單元202控制由數(shù)據(jù)移動單元201執(zhí)行的數(shù)據(jù)移動的次數(shù)以便由密文塊中產(chǎn)生64比特的解密電文數(shù)據(jù)(以下稱“解密電文塊”)。級數(shù)控制單元202計(jì)算由每個密文塊執(zhí)行的數(shù)據(jù)移動的次數(shù)。如果所計(jì)次數(shù)少于預(yù)定次數(shù),就將數(shù)據(jù)移動單元201輸出的64比特的數(shù)據(jù)輸入到數(shù)據(jù)移動單元201中再移動。如果所計(jì)次數(shù)達(dá)到預(yù)定次數(shù),級數(shù)控制單元202輸出數(shù)據(jù)移動單元201的64比特的輸出數(shù)據(jù)作為解密電文塊。這里,預(yù)定數(shù)設(shè)為8。
圖9表示圖7所示的數(shù)據(jù)移動單元101的詳細(xì)結(jié)構(gòu)。
數(shù)據(jù)移動單元101包括第一異或運(yùn)算單元1011、第二異或運(yùn)算單元1012、和數(shù)據(jù)轉(zhuǎn)換單元300。
數(shù)據(jù)移動單元101大致類似于圖3所示的數(shù)據(jù)移動單元3011。
第一異或運(yùn)算單元1011與圖3所示的第一異或運(yùn)算單元3111相同。
第二異或運(yùn)算單元1012與圖3所示的第二異或運(yùn)算單元3112相同。
數(shù)據(jù)轉(zhuǎn)換單元300用8K比特的替換表數(shù)據(jù)轉(zhuǎn)換32比特的數(shù)據(jù)S0并輸出32比特的轉(zhuǎn)換數(shù)據(jù)S1。
圖10表示圖8所示的數(shù)據(jù)移動單元201的詳細(xì)結(jié)構(gòu)。
數(shù)據(jù)移動單元201包括第一異或運(yùn)算單元2011、第二異或運(yùn)算單元2012、和數(shù)據(jù)轉(zhuǎn)換單元301數(shù)據(jù)移動單元201大致類似于圖4所示的數(shù)據(jù)移動單元411。
第一異或運(yùn)算單元2011與圖4所示的第一異或運(yùn)算單元4111相同。
第二異或運(yùn)算單元2012與圖3所示的第二異或運(yùn)算單元4112相同。
數(shù)據(jù)轉(zhuǎn)換單元301與圖9所示的數(shù)據(jù)轉(zhuǎn)換單元300相同。
圖11表示圖9所示的數(shù)據(jù)轉(zhuǎn)換單元300的詳細(xì)結(jié)構(gòu)。
該數(shù)據(jù)轉(zhuǎn)換單元300包括替換表數(shù)據(jù)存儲單元3001、第一表值轉(zhuǎn)換單元3002、第二表值轉(zhuǎn)換單元3003、第三表值轉(zhuǎn)換單元3004、第一加法單元3005、第二加法單元3006、和異或運(yùn)算單元3007。
將32比特的輸入數(shù)據(jù)S0從高位比特分成4組8比特的數(shù)據(jù)A3、A2、A1、和A0。
替換表數(shù)據(jù)存儲單元3001從高位比特將8K比特的輸入替換表數(shù)據(jù)分成256個32比特的表值并存儲這256個表值。在該替換表數(shù)據(jù)存儲單元3001中,輸入四組8比特的數(shù)據(jù)A3-A0。替換表數(shù)據(jù)存儲單元3001基于A3-A0從存儲的256個表值中指定四個表值,并輸出為A3-A0指定的分別為B3、B2、B1、和B0的四個表值。在該指定中,在替換表數(shù)據(jù)存儲單元3001中存儲的256個32比特的表值按比特下降的順序設(shè)置為Tab
、Tab[1]、…、和Tab[255]。
第一表值轉(zhuǎn)換單元3002對32比特的輸入表值B2從高位比特進(jìn)行循環(huán)1比特移位轉(zhuǎn)換并輸出32比特的轉(zhuǎn)換數(shù)據(jù)C2。
第二表值轉(zhuǎn)換單元3003對32比特的輸入表值B1從高位比特進(jìn)行循環(huán)2比特移位轉(zhuǎn)換并輸出32比特的轉(zhuǎn)換數(shù)據(jù)C1。
第三表值轉(zhuǎn)換單元3004對32比特的輸入表值B0從高位比特進(jìn)行循環(huán)3比特移位轉(zhuǎn)換并輸出32比特的轉(zhuǎn)換數(shù)據(jù)C0。
第一加法單元3005對從替換表數(shù)據(jù)存儲單元3001輸出的32比特的表值B3和從第一表值轉(zhuǎn)換單元3002輸出的32比特的數(shù)據(jù)C2進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)D0。
該計(jì)算表示為D0=(B3+C2)mod(2^32)異或運(yùn)算單元3007對32比特的數(shù)據(jù)D0和從第二表值轉(zhuǎn)換單元3003輸出的32比特的數(shù)據(jù)C1的對應(yīng)比特進(jìn)行異或運(yùn)算,并輸出作為結(jié)果的32比特的數(shù)據(jù)D1。
該計(jì)算表示為D1=D0(+)C1第二加法單元3006對32比特的數(shù)據(jù)D1和從第三表值轉(zhuǎn)換單元3004輸出的32比特的數(shù)據(jù)C0進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)D2。
該計(jì)算表示為D2=(D1+C0)mod(2^32)從第二加法單元3006輸出的32比特的數(shù)據(jù)D2成為數(shù)據(jù)轉(zhuǎn)換單元300的32比特的輸出數(shù)據(jù)S1。
下面將描述數(shù)據(jù)轉(zhuǎn)換單元300的操作。
(1)將8K比特的輸入替換表數(shù)據(jù)(256個32比特的表值)存入替換表數(shù)據(jù)存儲單元3001。
(2)將32比特的輸入數(shù)據(jù)S0從高位比特分成四組8比特的數(shù)據(jù)A3-A0。
(3)替換表數(shù)據(jù)存儲單元3001基于四組8比特的輸入數(shù)據(jù)A3-A0從256個存儲的表值中指定四個表值并輸出分別為A3-A0指定的表值為B3-B0的這四個32比特的表值。
(4)第一表值轉(zhuǎn)換單元3002從高位比特對表值B2進(jìn)行循環(huán)1比特移位轉(zhuǎn)換并輸出轉(zhuǎn)換數(shù)據(jù)C2。第二表值轉(zhuǎn)換單元3003從高位比特對表值B1進(jìn)行循環(huán)2比特移位轉(zhuǎn)換并輸出轉(zhuǎn)換數(shù)據(jù)C1。第三表值轉(zhuǎn)換單元3004從高位比特對表值B0進(jìn)行循環(huán)3比特移位轉(zhuǎn)換并輸出轉(zhuǎn)換數(shù)據(jù)C0。
(5)第一加法單元3005對32比特的表值B3和32比特的轉(zhuǎn)換數(shù)據(jù)C2進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)D0。
(6)異或運(yùn)算單元3007對32比特的數(shù)據(jù)D0和32比特的轉(zhuǎn)換數(shù)據(jù)C1的對應(yīng)比特進(jìn)行異或運(yùn)算,并輸出作為結(jié)果的32比特的數(shù)據(jù)D1。
(7)第二加法單元3006對32比特的數(shù)據(jù)D1和32比特的轉(zhuǎn)換數(shù)據(jù)C0進(jìn)行算術(shù)加并忽略第32個比特前的進(jìn)位輸出作為結(jié)果的低32比特的數(shù)據(jù)D2(S1)。
使用上述數(shù)據(jù)移動單元101的數(shù)據(jù)加密系統(tǒng)的安全性極大地依賴于數(shù)據(jù)轉(zhuǎn)換單元300中進(jìn)行的轉(zhuǎn)換操作的數(shù)據(jù)移動函數(shù)。數(shù)據(jù)轉(zhuǎn)換單元300從替換表數(shù)據(jù)存儲單元3001的一組替換表數(shù)據(jù)中檢索四個表值并對第一至第三表值轉(zhuǎn)換單元3002-3004中的三個四個表值用不同的比特長度進(jìn)行循環(huán)比特移位轉(zhuǎn)換。相應(yīng)地,類似于用四組替換表數(shù)據(jù)的密碼系統(tǒng)的高度安全性可以僅通過一組替換表數(shù)據(jù)完成。
因此,第一個實(shí)施例的加密通信系統(tǒng)對密碼分析和其它未經(jīng)允許的攻擊有高的安全性。
圖10的數(shù)據(jù)轉(zhuǎn)換單元301的結(jié)構(gòu)類似于數(shù)據(jù)轉(zhuǎn)換單元300,所以這里省略對它的解釋。
下面是對圖9的數(shù)據(jù)移動單元101加密明文和圖10的數(shù)據(jù)移動單元201恢復(fù)明文的原理的解釋。
如上所述,圖9數(shù)據(jù)移動單元101的X1、X0、Y1、Y0、S0、和S1具有下面的關(guān)系S0=Ki(+)X1 …(公式4)S1=F(R,S0) …(公式5)Y1=S1(+)X0 …(公式6)Y0=S0 …(公式7)其中“Ki”表示32比特的子密鑰數(shù)據(jù)、“R”表示8K比特的替換表數(shù)據(jù)、和“(+)”表示異或運(yùn)算。而且,“F(R,α)”其中R是表值而α是輸入數(shù)據(jù),表示數(shù)據(jù)轉(zhuǎn)換單元300的輸出數(shù)據(jù)。
同時,圖10數(shù)據(jù)移動單元201的Z1、Z0、W1、W0、和T1具有下面的關(guān)系T1=F(R,Z0) …(公式8)W1=Ki(+)Z0 …(公式9)W0=T1(+)Z1 …(公式10)假設(shè)數(shù)據(jù)移動單元101的輸出數(shù)據(jù)輸入到數(shù)據(jù)移動單元201。即,
Y1=Z1 …(公式11)Y0=Z0 …(公式12)(1)根據(jù)公式7和12,Y0=Z0=S0 …(公式13)(2)根據(jù)公式13,公式9表示為W1=Ki(+)S0…(公式14)(3)這里,異或具有下面的性質(zhì)β(+){β(+)γ}=γ…(公式15)當(dāng)公式4代到公式14時,用公式15結(jié)果可以表示為W1=Ki(+){Ki(+)X1}=X1…(公式16)(4)根據(jù)公式8和13,T1=F(R,S0) …(公式17)(5)根據(jù)公式5和17,S1=T1 …(公式18)(6)用公式11和18公式10表示為W0=S1(+)Y1 …(公式19)(7)當(dāng)公式6代到公式19時,用公式15結(jié)果可以表示為W0=S1(+){S1(+)X0}=X0…(公式20)從公式16和20中,明顯由數(shù)據(jù)移動單元101加密的明文數(shù)據(jù)可以由數(shù)據(jù)移動單元201恢復(fù)。
下面,圖7數(shù)據(jù)加密裝置10加密明文數(shù)據(jù)和圖8數(shù)據(jù)解密裝置20恢復(fù)明文數(shù)據(jù)的原理。
首先,數(shù)據(jù)加密裝置10按如下的方式用256比特的密鑰數(shù)據(jù)K和8K比特的替換表數(shù)據(jù)R加密明文塊A以產(chǎn)生密文塊A。
密鑰控制單元103一個一個地將32比特的子密鑰數(shù)據(jù)K0-K7輸入到數(shù)據(jù)移動單元101。同時,在加密明文塊A的過程中重復(fù)使用替換表數(shù)據(jù)R。
數(shù)據(jù)移動單元101用子密鑰數(shù)據(jù)K0和替換表數(shù)據(jù)R對明文塊A進(jìn)行數(shù)據(jù)移動以產(chǎn)生中間塊A1。數(shù)據(jù)移動單元101接著用子密鑰數(shù)據(jù)K1和替換表數(shù)據(jù)R對中間塊A1進(jìn)行數(shù)據(jù)移動以產(chǎn)生中間塊A2。
以同樣的方式,通過使用替換表數(shù)據(jù)R數(shù)據(jù)移動單元101分別用子密鑰數(shù)據(jù)K2-K7對中間塊A2-A6進(jìn)行數(shù)據(jù)移動。結(jié)果,產(chǎn)生密文塊A。
另一方面,數(shù)據(jù)解密裝置20按如下的方式用與數(shù)據(jù)加密裝置10相同的256比特的密鑰數(shù)據(jù)K和8K比特的替換表數(shù)據(jù)R解密密文塊A以產(chǎn)生解密電文塊A(明文塊A)。
密鑰控制單元203一個一個地將32比特的子密鑰數(shù)據(jù)K7-K0輸入到數(shù)據(jù)移動單元201。同時,在解密密文塊A的過程中重復(fù)使用替換表數(shù)據(jù)R。
數(shù)據(jù)移動單元201用子密鑰數(shù)據(jù)K7和替換表數(shù)據(jù)R對密文塊A進(jìn)行數(shù)據(jù)移動以產(chǎn)生中間塊A6。數(shù)據(jù)移動單元201接著用子密鑰數(shù)據(jù)K6和替換表數(shù)據(jù)R對中間塊A6進(jìn)行數(shù)據(jù)移動以產(chǎn)生中間塊A5。
以同樣的方式,通過使用替換表數(shù)據(jù)R數(shù)據(jù)移動單元201分別用子密鑰數(shù)據(jù)K5-K0對中間塊A5-A1進(jìn)行數(shù)據(jù)移動。結(jié)果,產(chǎn)生解密電文塊A。
因此證明了由數(shù)據(jù)加密裝置10加密的明文數(shù)據(jù)可以由數(shù)據(jù)解密裝置20恢復(fù)。
下面將解釋數(shù)據(jù)加密裝置10的安全性。
當(dāng)與圖5中傳統(tǒng)的數(shù)據(jù)轉(zhuǎn)換單元3113比較時,圖11的數(shù)據(jù)轉(zhuǎn)換單元300包括第一至第三表值轉(zhuǎn)換單元3002-3004。對于這種結(jié)構(gòu),除了僅存儲一組替換表數(shù)據(jù)之外,數(shù)據(jù)轉(zhuǎn)換單元300實(shí)際上起到了存有四組替換表數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換單元3113相同的作用。例如,圖11中當(dāng)A2=A3時,由于A2和A3用相同的替換表數(shù)據(jù),所以B2=B3。但是,B2由第一表值轉(zhuǎn)換單元3002轉(zhuǎn)換成C2,因此第一加法單元3005將不對兩個相同的值進(jìn)行算術(shù)加。這種密碼系統(tǒng)可以保持高的數(shù)據(jù)移動功能并因此對未經(jīng)允許的攻擊安全。
相應(yīng)地,具有上述數(shù)據(jù)轉(zhuǎn)換單元300的加密處理設(shè)備在不降低密碼安全性的情況下可以將替換表數(shù)據(jù)的數(shù)量減少到具有數(shù)據(jù)轉(zhuǎn)換單元3113的傳統(tǒng)加密處理設(shè)備的1/4。
因此本發(fā)明在保持高的密碼安全性的同時,在用替換表數(shù)據(jù)的例如Blowfish密碼的塊密碼中,通過大幅度減少所存的數(shù)據(jù)量簡化硬件和軟件工具。
本發(fā)明第二個實(shí)施例的加密處理設(shè)備從一組替換表數(shù)據(jù)中檢索一個表值并對所檢索的表值進(jìn)行例如不同比特長的旋轉(zhuǎn)和不同常數(shù)的加法的不同的固定轉(zhuǎn)換。通過這樣做,加密處理設(shè)備在減少替換表數(shù)據(jù)數(shù)量而不降低安全性的情況下完成加密處理。
在第二個實(shí)施例中,圖9和10所示的第一個實(shí)施例中的數(shù)據(jù)轉(zhuǎn)換單元300和數(shù)據(jù)轉(zhuǎn)換單元301已經(jīng)替換為數(shù)據(jù)轉(zhuǎn)換單元500和數(shù)據(jù)轉(zhuǎn)換單元501。而且,第一實(shí)施例所用的替換表數(shù)據(jù)的數(shù)量在第二個實(shí)施例中已經(jīng)減少到1/4(2K比特)。
圖12表示第二個實(shí)施例的數(shù)據(jù)轉(zhuǎn)換單元500的詳細(xì)結(jié)構(gòu)。
數(shù)據(jù)轉(zhuǎn)換單元500包括替換表數(shù)據(jù)存儲單元5001、第一輸入轉(zhuǎn)換單元5002、第二輸入轉(zhuǎn)換單元5003、第三輸入轉(zhuǎn)換單元5004、第四輸入轉(zhuǎn)換單元5005、第一異或運(yùn)算單元5006、第二異或運(yùn)算單元5007、第三異或運(yùn)算單元5008、第一表值轉(zhuǎn)換單元5009、第二表值轉(zhuǎn)換單元5010、第三表值轉(zhuǎn)換單元5011、第一表值加法單元5012、第二表值加法單元5013、第三表值加法單元5014、和第四表值加法單元5015。
輸入到數(shù)據(jù)轉(zhuǎn)換單元500的32比特的數(shù)據(jù)S0從高位比特分成4組8比特的數(shù)據(jù)E3、E2、E1、和E0。
第一輸入轉(zhuǎn)換單元5002對8比特的數(shù)據(jù)E3從高位比特進(jìn)行循環(huán)1比特移位轉(zhuǎn)換并輸出8比特的轉(zhuǎn)換數(shù)據(jù)F3。
第二輸入轉(zhuǎn)換單元5003對8比特的數(shù)據(jù)E2從高位比特進(jìn)行循環(huán)2比特移位轉(zhuǎn)換并輸出8比特的轉(zhuǎn)換數(shù)據(jù)F2。
第三輸入轉(zhuǎn)換單元5004對8比特的數(shù)據(jù)E1從高位比特進(jìn)行循環(huán)3比特移位轉(zhuǎn)換并輸出8比特的轉(zhuǎn)換數(shù)據(jù)F1。
第一異或運(yùn)算單元5006對從第一輸入轉(zhuǎn)換單元5002輸出的轉(zhuǎn)換數(shù)據(jù)F3和從第二輸入轉(zhuǎn)換單元5003輸出的轉(zhuǎn)換數(shù)據(jù)F2的對應(yīng)比特進(jìn)行異或,并輸出作為結(jié)果的8比特的數(shù)據(jù)G2。
第二異或運(yùn)算單元5007對從第一異或運(yùn)算單元5006輸出的數(shù)據(jù)G2和從第三輸入轉(zhuǎn)換單元5004輸出的轉(zhuǎn)換數(shù)據(jù)F1的對應(yīng)比特進(jìn)行異或,并輸出作為結(jié)果的8比特的數(shù)據(jù)G1。
第四輸入轉(zhuǎn)換單元5005對從第二異或運(yùn)算單元5007輸出的數(shù)據(jù)G1從高位比特進(jìn)行循環(huán)5比特移位轉(zhuǎn)換,并輸出8比特的轉(zhuǎn)換數(shù)據(jù)F0。
第三異或運(yùn)算單元5008對8比特的數(shù)據(jù)E0和從第四輸入轉(zhuǎn)換單元5005輸出的8比特的轉(zhuǎn)換數(shù)據(jù)F0的對應(yīng)比特進(jìn)行異或,并輸出作為結(jié)果的8比特的數(shù)據(jù)G0。
替換表數(shù)據(jù)存儲單元5001將2K比特的輸入替換表數(shù)據(jù)從高位比特分成256個每個8比特長的表值,并存儲這256個表值?;趶牡谌惢蜻\(yùn)算單元5008輸出的數(shù)據(jù)G0,替換表數(shù)據(jù)存儲單元5001指定256個存儲表值的其中一個并輸出為H0的指定表值。
第一表值轉(zhuǎn)換單元5009從高位比特對從替換表數(shù)據(jù)存儲單元5001輸出的8比特表值H0進(jìn)行循環(huán)1比特移位轉(zhuǎn)換并輸出8比特的轉(zhuǎn)換數(shù)據(jù)I2。
第二表值轉(zhuǎn)換單元5010從高位比特對8比特的表值H0進(jìn)行循環(huán)2比特移位轉(zhuǎn)換并輸出8比特的轉(zhuǎn)換數(shù)據(jù)I1。
第三表值轉(zhuǎn)換單元5011從高位比特對8比特的表值H0進(jìn)行循環(huán)3比特移位轉(zhuǎn)換并輸出8比特的轉(zhuǎn)換數(shù)據(jù)I0。
第一加法單元5012對從第一輸入轉(zhuǎn)換單元5002輸出的8比特的轉(zhuǎn)換數(shù)據(jù)F3和從替換表數(shù)據(jù)存儲單元5001輸出的8比特的表值H0進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J0。
該計(jì)算表示為J0=(F3+H0)mod(2^8)第二加法單元5013對從第二輸入轉(zhuǎn)換單元5003輸出的8比特的轉(zhuǎn)換數(shù)據(jù)F2和從第一表值轉(zhuǎn)換單元5009輸出的8比特的轉(zhuǎn)換數(shù)據(jù)I2進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J3。
該計(jì)算表示為J3=(F2+I2)mod(2^8)第三加法單元5014對從第三輸入轉(zhuǎn)換單元5004輸出的8比特的轉(zhuǎn)換數(shù)據(jù)F1和從第二表值轉(zhuǎn)換單元5010輸出的8比特的轉(zhuǎn)換數(shù)據(jù)I1進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J2。
該計(jì)算表示為J2=(F1+I1)mod(2^8)第四加法單元5015對8比特的數(shù)據(jù)E0和從第三表值轉(zhuǎn)換單元5011輸出的8比特的轉(zhuǎn)換數(shù)據(jù)I0進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J1。
該計(jì)算表示為J1=(E0+I0)mod(2^8)
第二加法單元5013的輸出數(shù)據(jù)J3、第三加法單元5014的輸出數(shù)據(jù)J2、第四加法單元5015的輸出數(shù)據(jù)J1、第一加法單元5012的輸出數(shù)據(jù)J0以這種順序結(jié)合以形成數(shù)據(jù)轉(zhuǎn)換單元500的32比特的輸出數(shù)據(jù)S1。
具有上述結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)換單元500按如下方式操作。
(1)將2K比特的輸入替換表數(shù)據(jù)(256個8比特的表值)存入替換表數(shù)據(jù)存儲單元5001。
(2)將32比特的輸入數(shù)據(jù)S0從高位比特分成四組8比特的數(shù)據(jù)E3-E0。
(3)第一輸入轉(zhuǎn)換單元5002、第二輸入轉(zhuǎn)換單元5003、第三輸入轉(zhuǎn)換單元5004、第四輸入轉(zhuǎn)換單元5005、第一異或運(yùn)算單元5006、第二異或運(yùn)算單元5007、和第三異或運(yùn)算單元5008對E3-E0進(jìn)行各自的比特操作。結(jié)果,產(chǎn)生8比特的數(shù)據(jù)G0。
(4)替換表數(shù)據(jù)存儲單元5001基于數(shù)據(jù)G0指定256個表值中的其中一個并輸出為H0的指定的表值。
(5)第一表值轉(zhuǎn)換單元5009從高位比特對表值H0進(jìn)行循環(huán)1比特移位轉(zhuǎn)換并輸出轉(zhuǎn)換數(shù)據(jù)I2。第二表值轉(zhuǎn)換單元5010從高位比特對表值H0進(jìn)行循環(huán)2比特移位轉(zhuǎn)換并輸出轉(zhuǎn)換數(shù)據(jù)I1。第三表值轉(zhuǎn)換單元5011從高位比特對表值H0進(jìn)行循環(huán)3比特移位轉(zhuǎn)換并輸出轉(zhuǎn)換數(shù)據(jù)I0。
(6)第二加法單元5013對轉(zhuǎn)換數(shù)據(jù)I2和從第二輸入轉(zhuǎn)換單元5003輸出的轉(zhuǎn)換數(shù)據(jù)F2進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J3。第三加法單元5014對轉(zhuǎn)換數(shù)據(jù)I1和從第三輸入轉(zhuǎn)換單元5004輸出的轉(zhuǎn)換數(shù)據(jù)F1進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J2。第四加法單元5015對轉(zhuǎn)換數(shù)據(jù)I0和8比特?cái)?shù)據(jù)E0進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J1。第一加法單元5012對表值H0和從第一輸入轉(zhuǎn)換單元5002輸出的轉(zhuǎn)換數(shù)據(jù)F3進(jìn)行算術(shù)加并忽略第8個比特前的進(jìn)位輸出作為結(jié)果的低8比特的數(shù)據(jù)J0。
(7)8個比特的數(shù)據(jù)J3、J2、J1、和J0以這種順序結(jié)合以形成數(shù)據(jù)轉(zhuǎn)換單元500的32比特的輸出數(shù)據(jù)S1。
第二個實(shí)施例的使用上述數(shù)據(jù)移動單元101的數(shù)據(jù)加密系統(tǒng)的安全性極大地依賴于在數(shù)據(jù)轉(zhuǎn)換單元500中進(jìn)行的轉(zhuǎn)換操作的數(shù)據(jù)移動函數(shù)。數(shù)據(jù)轉(zhuǎn)換單元500從替換表數(shù)據(jù)存儲單元5001中存儲的一組替換表數(shù)據(jù)中檢索一個表值、通過對第一至第三表值轉(zhuǎn)換單元5009-5011中的表值進(jìn)行循環(huán)比特移位轉(zhuǎn)換從檢索的表值中產(chǎn)生三個轉(zhuǎn)換值、并用表值和三個轉(zhuǎn)換值產(chǎn)生輸出數(shù)據(jù)。相應(yīng)地,僅用一組替換表數(shù)據(jù),上述密碼系統(tǒng)可以保持類似于用四組替換表數(shù)據(jù)的密碼系統(tǒng)的安全性程度。
因此,第二個實(shí)施例的加密通信系統(tǒng)對密碼分析和其它未經(jīng)允許的攻擊有高的安全性。
第二個實(shí)施例的數(shù)據(jù)轉(zhuǎn)換單元501的結(jié)構(gòu)類似于數(shù)據(jù)轉(zhuǎn)換單元500,因此這里省略對它的解釋。
值得注意的是在第一和第二實(shí)施例中的數(shù)據(jù)加密裝置10和數(shù)據(jù)解密裝置20的每個成分不僅可以由具有例如異或的邏輯電路的專用硬件來實(shí)現(xiàn),也可以由多用途的微處理器、控制程序、存儲替換表數(shù)據(jù)的ROM、和作為工作域的RAM組成的計(jì)算機(jī)系統(tǒng)的軟件來實(shí)現(xiàn)。
在第一和第二實(shí)施例中,異或運(yùn)算單元1011、1012、2011、和2012已經(jīng)用于合并32比特的子密鑰數(shù)據(jù)與32比特的輸入數(shù)據(jù)和合并32比特的數(shù)據(jù)與32比特的數(shù)據(jù)。但是,能逆操作的例如帶進(jìn)位的全加法器的其它的設(shè)備,可以代替異或運(yùn)算單元來使用。這里值得注意的是在上述實(shí)施例操作中第一異或運(yùn)算單元2011和第二異或運(yùn)算單元2012分別應(yīng)當(dāng)是第一異或運(yùn)算單元1011和第一異或運(yùn)算單元1012的逆操作。而且,想用簡單的操作以避免處理速度的降低。
在上述實(shí)施例的數(shù)據(jù)加密裝置10和數(shù)據(jù)解密裝置20中,由數(shù)據(jù)移動單元101或201對一個輸入數(shù)據(jù)塊所進(jìn)行的數(shù)據(jù)移動次數(shù)已經(jīng)設(shè)為8。但是,本發(fā)明并不僅限于此。如果一個輸入數(shù)據(jù)塊的數(shù)據(jù)移動頻率設(shè)為小于8,就將少于256比特的密鑰數(shù)據(jù)輸入到數(shù)據(jù)加密裝置10和數(shù)據(jù)解密裝置20中。另一方面,如果一個輸入數(shù)據(jù)塊的數(shù)據(jù)移動頻率設(shè)為大于8,就將大于256比特的密鑰數(shù)據(jù)輸入到數(shù)據(jù)加密裝置10和數(shù)據(jù)解密裝置20中。也有可能通過重復(fù)使用256比特的密鑰數(shù)據(jù)的相同的子密鑰數(shù)據(jù),增加數(shù)據(jù)移動的頻率而不增加輸入密鑰數(shù)據(jù)的長度。
在數(shù)據(jù)轉(zhuǎn)換單元300和301中的第一至第三表值轉(zhuǎn)換單元3002-3004、數(shù)據(jù)轉(zhuǎn)換單元500和501中的第一至第四輸入轉(zhuǎn)換單元5002-5005、和數(shù)據(jù)轉(zhuǎn)換單元500和501中的第一至第三表值轉(zhuǎn)換單元5009-5011中,只要處理相同數(shù)據(jù)的轉(zhuǎn)換單元在移位比特長度上不同,從高位比特所移位的比特的長度并不局限于在上述實(shí)施例中所使用的。而且,如果基于子密鑰數(shù)據(jù)確定移位比特長度,就可以得到更有效的數(shù)據(jù)移動函數(shù)。例如,由32比特的子密鑰數(shù)據(jù)的第0-4個比特代表的值0-31的其中一個可以設(shè)置為第一表值轉(zhuǎn)換單元3002的移位比特長度、由32比特的子密鑰數(shù)據(jù)的第8-12個比特代表的值0-31的其中一個可以設(shè)置為第二表值轉(zhuǎn)換單元3003的移位比特長度、和由32比特的子密鑰數(shù)據(jù)的第16-20個比特代表的值0-31的其中一個可以設(shè)置為第三表值轉(zhuǎn)換單元3004的移位比特長度。
而且,在數(shù)據(jù)轉(zhuǎn)換單元300和301中的第一至第三表值轉(zhuǎn)換單元3002-3004和數(shù)據(jù)轉(zhuǎn)換單元500和501中的第一至第三表值轉(zhuǎn)換單元5009-5011中,只要從一個輸入值中指定一個輸出值,就可以使用在第一和第二實(shí)施例中所使用轉(zhuǎn)換的不同的轉(zhuǎn)換。也就是說,可以使用輸入的預(yù)轉(zhuǎn)換值不能從輸出的轉(zhuǎn)換值恢復(fù)的單向轉(zhuǎn)換。值得注意的是由一個數(shù)據(jù)轉(zhuǎn)換單元包括的表值轉(zhuǎn)換單元所分別進(jìn)行的轉(zhuǎn)換應(yīng)當(dāng)彼此不同。而且,想用簡單的操作以避免處理速度的降低。
雖然第一和第二實(shí)施例的每個異或運(yùn)算單元和數(shù)據(jù)轉(zhuǎn)換單元已經(jīng)在以8或32比特為單位進(jìn)行數(shù)據(jù)轉(zhuǎn)換,但是仍然可以代替使用不同的比特長度。例如,當(dāng)通過多用途的64比特的CPU實(shí)現(xiàn)本發(fā)明時,可以在以64比特位單位進(jìn)行數(shù)據(jù)轉(zhuǎn)換。由于有可能減少處理時間,所以僅轉(zhuǎn)換輸入數(shù)據(jù)的一半(例如32比特的輸入數(shù)據(jù)的低16比特)也是可能的。
在第一和第二實(shí)施例中,得到作為三個表值轉(zhuǎn)換單元的不同的固定轉(zhuǎn)換的結(jié)果的三個轉(zhuǎn)換值和一個不轉(zhuǎn)換的表值已經(jīng)用作四個替換表數(shù)據(jù)存儲單元得到的四個表值的替換值。相反,四個表值轉(zhuǎn)換單元可用于進(jìn)行四種不同的固定轉(zhuǎn)換以產(chǎn)生作為四個表值替換值的四個轉(zhuǎn)換值。這里,由四個表值轉(zhuǎn)換單元所進(jìn)行的四種不同的固定轉(zhuǎn)換可以包括不轉(zhuǎn)換。當(dāng)四種不同的固定轉(zhuǎn)換的一個為不轉(zhuǎn)換時,整體結(jié)果將與用三個表值轉(zhuǎn)換單元的情形相同。這里談到的不轉(zhuǎn)換例如是當(dāng)四個表值轉(zhuǎn)換單元用不同的比特長度進(jìn)行循環(huán)比特移位轉(zhuǎn)換時循環(huán)0比特移位轉(zhuǎn)換,或當(dāng)四個表值轉(zhuǎn)換單元進(jìn)行不同常數(shù)的加法時加數(shù)為0。即,只要從一個表值或可以沒有必要彼此不同的四個表值中得到四個不同的值,關(guān)于表值轉(zhuǎn)換單元的改變是可能的。
而且,作為用四個替換表數(shù)據(jù)存儲單元得到的四個表值的替換品,用上述實(shí)施例的三個或四個表值轉(zhuǎn)換單元已經(jīng)產(chǎn)生四個值,盡管本發(fā)明并不局限于這些數(shù)目。
本發(fā)明第三實(shí)施例的加密處理設(shè)備通過變換實(shí)際的密鑰數(shù)據(jù)利用最接近的前面的密碼正文塊更新輸入密鑰數(shù)據(jù),而不更新替換表數(shù)據(jù)。通過那樣做,該加密處理設(shè)備在不丟失安全性的情況下實(shí)現(xiàn)高速處理,減少了替換表數(shù)據(jù)產(chǎn)生頻率,而更新對于每個輸入塊的密碼處理的輸入密鑰數(shù)據(jù)。
圖13表示根據(jù)本發(fā)明第三實(shí)施例的一個加密通信系統(tǒng)的結(jié)構(gòu)。
這個加密通信系統(tǒng)包括一個發(fā)送機(jī)6和一個接收機(jī)7。
發(fā)送機(jī)6配備一個數(shù)據(jù)加密設(shè)備60和一個發(fā)送單元61。
數(shù)據(jù)加密設(shè)備60使用640比特的加密密鑰數(shù)據(jù)加密以64比特為單位的明文。這里,明文例如是數(shù)字編碼的音頻或圖象信息,而相同的640比特加密密鑰數(shù)據(jù)事先由發(fā)送機(jī)6和接收機(jī)7秘密持有。
發(fā)送單元61在由數(shù)據(jù)加密設(shè)備60產(chǎn)生的密碼正文數(shù)據(jù)上執(zhí)行并到串變換,并且輸出在傳輸線8上輸出獲得的傳輸信號。
接收機(jī)7配備一個數(shù)據(jù)解密設(shè)備70和一個接收單元71。
接收單元71從發(fā)送單元61經(jīng)傳輸線8接收傳輸信號并且執(zhí)行關(guān)于傳輸信號的發(fā)送單元61的反向處理以便恢復(fù)密碼正文數(shù)據(jù)。
數(shù)據(jù)解密設(shè)備70使用640比特加密密鑰數(shù)據(jù)解密以64比特為單位的密碼正文數(shù)據(jù)以便獲得解密的正文數(shù)據(jù)(原始明文數(shù)據(jù))。
這個解密正文數(shù)據(jù),例如是,數(shù)字編碼的音頻或圖象信息,接著該信息被一個專用解碼器(未示出)解碼并且經(jīng)一個揚(yáng)聲器或一個顯示器重放。
圖14表示圖13所示的數(shù)據(jù)加密設(shè)備60的詳細(xì)結(jié)構(gòu)。
這個數(shù)據(jù)加密設(shè)備60包括一個數(shù)據(jù)加密單元601,一個替換表數(shù)據(jù)產(chǎn)生單元602,一個輸入密鑰產(chǎn)生單元603,和一個密鑰控制單元604。
密鑰控制單元604將來自最高位比特的640比特加密密鑰數(shù)據(jù)分成10組64比特實(shí)際密鑰數(shù)據(jù)K
-K[9]。無論何時加密1024個明文塊,密鑰控制單元604一次輸出K
-K[9]中的一個到替換表數(shù)據(jù)產(chǎn)生單元602和輸入密鑰產(chǎn)生單元603。在實(shí)際的密鑰數(shù)據(jù)K[9]后,再次輸出實(shí)際密鑰數(shù)據(jù)K
。
當(dāng)從密鑰控制單元604接收64比特實(shí)際密鑰數(shù)據(jù)時,替換表數(shù)據(jù)產(chǎn)生單元602根據(jù)在Blowfish密碼中使用的替換表數(shù)據(jù)產(chǎn)生算法產(chǎn)生32K比特替換表數(shù)據(jù)(每個是32比特長的1024個表值)。接著替換表數(shù)據(jù)產(chǎn)生單元602輸出產(chǎn)生的替換表數(shù)據(jù)到數(shù)據(jù)加密單元601。
輸入密鑰產(chǎn)生單元603存儲從密鑰控制單元604接收的64比特實(shí)際密鑰數(shù)據(jù)。每次由數(shù)據(jù)加密單元601產(chǎn)生一個密碼塊,輸入密鑰產(chǎn)生單元603對于該密碼塊中的相應(yīng)比特和存儲的64比特實(shí)際密鑰數(shù)據(jù)執(zhí)行一個異或操作并且輸出結(jié)果到數(shù)據(jù)加密單元601作為對于下一個明文塊加密的輸入密鑰數(shù)據(jù)。因?yàn)榧用艿谝幻魑膲K時沒有密碼塊,輸入密鑰產(chǎn)生單元603發(fā)現(xiàn)對于一個64比特初始值IV(下文,“初始塊IV”)的相應(yīng)比特和實(shí)際密鑰數(shù)據(jù)的異或操作并且輸出該計(jì)算結(jié)果到數(shù)據(jù)加密單元601作為用于加密第一明文塊的輸入密鑰數(shù)據(jù)。這個64比特初始塊IV已經(jīng)預(yù)先存儲在輸入密鑰產(chǎn)生單元603中。
這里,一旦產(chǎn)生32個密碼正文塊,輸入密鑰產(chǎn)生單元603例如可以執(zhí)行對于在存儲的實(shí)際密鑰數(shù)據(jù)中的相應(yīng)比特和初始塊IV的異或操作代替最近產(chǎn)生的密碼正文塊。在這種情況下,利用將計(jì)算的實(shí)際密鑰數(shù)據(jù)的異或操作的目的是初始化每次加密的32明文塊。
數(shù)據(jù)加密單元601使用64比特輸入密鑰數(shù)據(jù)和32比特替換表數(shù)據(jù)加密以64比特為單位的明文數(shù)據(jù)以便產(chǎn)生密碼正文數(shù)據(jù)。另外,當(dāng)數(shù)據(jù)加密單元601從替換表數(shù)據(jù)產(chǎn)生單元602接收新的32K比特替換表數(shù)據(jù)時更新該替換表數(shù)據(jù)。
圖15表示圖13所示的數(shù)據(jù)解密設(shè)備70的詳細(xì)結(jié)構(gòu)。
這個數(shù)據(jù)解密設(shè)備70包括一個數(shù)據(jù)解密單元701,一個替換表數(shù)據(jù)產(chǎn)生單元702,一個輸入密鑰產(chǎn)生單元703,和一個密鑰控制單元704。
密鑰控制單元704將來自最高位比特的640比特加密密鑰數(shù)據(jù)分成10組64比特實(shí)際密鑰數(shù)據(jù)K
-K[9]。無論何時解密1024個密碼正文塊,密鑰控制單元704一次輸出K
-K[9]中的一個到替換表數(shù)據(jù)產(chǎn)生單元702和輸入密鑰產(chǎn)生單元703。在實(shí)際的密鑰數(shù)據(jù)K[9]后,再次輸出實(shí)際密鑰數(shù)據(jù)K
。
當(dāng)從密鑰控制單元704接收64比特實(shí)際密鑰數(shù)據(jù)時,替換表數(shù)據(jù)產(chǎn)生單元702根據(jù)在Blowfish密碼中使用的替換表數(shù)據(jù)產(chǎn)生算法產(chǎn)生32K比特替換表數(shù)據(jù)。接著替換表數(shù)據(jù)產(chǎn)生單元702輸出產(chǎn)生的替換表數(shù)據(jù)到數(shù)據(jù)解密單元701。
輸入密鑰產(chǎn)生單元703存儲從密鑰控制單元704接收的64比特實(shí)際密鑰數(shù)據(jù)。每次由數(shù)據(jù)解密單元701產(chǎn)生一個明文塊,輸入密鑰產(chǎn)生單元703對于該密碼塊中的相應(yīng)比特和存儲的64比特實(shí)際密鑰數(shù)據(jù)執(zhí)行一個異或操作并且輸出結(jié)果到數(shù)據(jù)解密單元701作為對于下一個密碼正文塊解密的輸入密鑰數(shù)據(jù)。這里,因?yàn)榻饷艿谝幻艽a正文塊時沒有密碼塊,使得輸入密鑰產(chǎn)生單元703發(fā)現(xiàn)對于初始塊IV的相應(yīng)比特和實(shí)際密鑰數(shù)據(jù)的異或操作并且輸出該計(jì)算結(jié)果到數(shù)據(jù)解密單元701作為用于解密第一密碼正文塊的輸入密鑰數(shù)據(jù)。這個64比特初始塊IV已經(jīng)預(yù)先存儲在輸入密鑰產(chǎn)生單元703中。
這里,一旦產(chǎn)生32個明文塊,輸入密鑰產(chǎn)生單元703例如可以執(zhí)行對于在存儲的實(shí)際密鑰數(shù)據(jù)中的相應(yīng)比特和初始塊IV的異或操作代替最近處理的密碼正文塊。在這種情況下,利用將計(jì)算的實(shí)際密鑰數(shù)據(jù)的異或操作的目的是初始化每次解密的32個密碼正文塊。
數(shù)據(jù)解密單元701使用64比特輸入密鑰數(shù)據(jù)和32比特替換表數(shù)據(jù)解密以64比特為單位的密碼正文數(shù)據(jù)以便產(chǎn)生明文數(shù)據(jù)。另外,當(dāng)數(shù)據(jù)解密單元701從替換表數(shù)據(jù)產(chǎn)生單元702接收新的32K比特替換表數(shù)據(jù)時更新該替換表數(shù)據(jù)。
圖16表示圖14所示的數(shù)據(jù)加密單元601的詳細(xì)結(jié)構(gòu)。
這個數(shù)據(jù)加密單元601大致是由一個數(shù)據(jù)正移交換單元6011,一個級數(shù)控制單元6012,和一個子密鑰產(chǎn)生單元6013組成。
子密鑰產(chǎn)生單元6013根據(jù)在Blowfish密碼中使用的子密鑰產(chǎn)生算法產(chǎn)生來自64比特輸入密鑰數(shù)據(jù)的256比特?cái)?shù)據(jù),將該256比特?cái)?shù)據(jù)分成8組32比特的子密鑰數(shù)據(jù)SK0-SK7,并且存儲SK0-SK7。
數(shù)據(jù)正移交換單元6011使用32K比特替換表數(shù)據(jù)和由子密鑰產(chǎn)生單元6013產(chǎn)生的32比特子密鑰數(shù)據(jù)執(zhí)行對于64比特輸入明文數(shù)據(jù)的數(shù)據(jù)正移交換,并且輸出得到的64比特?cái)?shù)據(jù)。
級數(shù)控制單元6012控制由數(shù)據(jù)正移交換單元6011執(zhí)行的數(shù)據(jù)正移交換的次數(shù)的個數(shù)以便從一個明文塊產(chǎn)生一個密碼正文塊。級數(shù)控制單元6012記數(shù)對于每個明文塊執(zhí)行的數(shù)據(jù)正移交換次數(shù)的個數(shù)。如果記數(shù)的個數(shù)小于一個預(yù)定個數(shù),則從數(shù)據(jù)正移交換單元6011輸出的64比特?cái)?shù)據(jù)輸入到數(shù)據(jù)正移交換單元6011用于重正移交換。如果記數(shù)的個數(shù)到達(dá)該預(yù)定個數(shù),則級數(shù)控制單元6012輸出數(shù)據(jù)正移交換單元6011的64比特輸出數(shù)據(jù)作為一個密碼正文塊。在這個實(shí)施例中,預(yù)定個數(shù)被置為8。
這里,子密鑰數(shù)據(jù)SK0用于執(zhí)行對于一個明文塊的第一數(shù)據(jù)正移交換,并且接著依次使用子密鑰數(shù)據(jù)SK1-SK7重復(fù)數(shù)據(jù)正移交換。在子密鑰數(shù)據(jù)sk7之后再次使用子密鑰數(shù)據(jù)sk0。
圖17表示圖15所示的數(shù)據(jù)解密單元701的詳細(xì)結(jié)構(gòu)。
這個數(shù)據(jù)解密單元701大致是由一個數(shù)據(jù)正移交換單元7011,一個級數(shù)控制單元7012,和一個子密鑰產(chǎn)生單元7013組成。
子密鑰產(chǎn)生單元7013和數(shù)據(jù)正移交換單元7011與圖16所示的子密鑰產(chǎn)生單元6013和數(shù)據(jù)正移交換單元6011相同。
級數(shù)控制單元7012控制由數(shù)據(jù)正移交換單元7011執(zhí)行的數(shù)據(jù)正移交換的次數(shù)的個數(shù)以便從一個密碼正文塊產(chǎn)生一個明文塊。級數(shù)控制單元7012記數(shù)對于每個密碼正文塊執(zhí)行的數(shù)據(jù)正移交換次數(shù)的個數(shù)。如果記數(shù)的個數(shù)小于一個預(yù)定個數(shù),則從數(shù)據(jù)正移交換單元7011輸出的64比特?cái)?shù)據(jù)輸入到數(shù)據(jù)正移交換單元7011用于重正移交換。如果記數(shù)的個數(shù)到達(dá)該預(yù)定個數(shù),則級數(shù)控制單元7012輸出數(shù)據(jù)正移交換單元7011的64比特輸出數(shù)據(jù)作為一個明文塊。在這個實(shí)施例中,預(yù)定個數(shù)被置為8。
這里,子密鑰數(shù)據(jù)SK7用于執(zhí)行對于一個密碼正文塊的第一數(shù)據(jù)正移交換,并且接著依次使用子密鑰數(shù)據(jù)SK6-SK0重復(fù)數(shù)據(jù)正移交換。在子密鑰數(shù)據(jù)sk0之后再次使用子密鑰數(shù)據(jù)sk7。
注意在圖16和圖17中的數(shù)據(jù)正移交換單元6011和數(shù)據(jù)正移交換單元7011的結(jié)構(gòu)分別與圖13和圖14所示的數(shù)據(jù)正移交換單元3011和數(shù)據(jù)正移交換單元4011的結(jié)構(gòu)相同。
圖18表示塊號t,實(shí)際密鑰數(shù)據(jù),輸入密鑰數(shù)據(jù)和替換表數(shù)據(jù)的關(guān)系。這里,塊t表示分配給通過從以64比特為單位的最高位比特劃分輸入明文數(shù)據(jù)產(chǎn)生的每個明文塊的從0開始的序號。在該圖中,實(shí)際密鑰數(shù)據(jù)“-”表示從密鑰輸入控制單元604中沒有輸出,“+”表示一個異或操作,“IV”表示初始塊IV,“Ct”表示通過加密第“t”個明文塊得到的一個密碼正文塊,和“TG(K[i]”表示從實(shí)際密鑰數(shù)據(jù)K[i](i=0,1,...9)產(chǎn)生的替換表數(shù)據(jù)。
如圖18所示,對于32明文塊的每個塊在K[I]+IV(i=0,1,...9)復(fù)位輸入密鑰數(shù)據(jù)。另外,對于1024個明文塊中的每一個塊從密鑰控制單元604輸出實(shí)際密鑰數(shù)據(jù),和作為結(jié)果替換表數(shù)據(jù)并且更新輸入密鑰數(shù)據(jù)。
下面將給出第三實(shí)施例的加密通信系統(tǒng)的一般操作的例子。
圖13的發(fā)送機(jī)6使用預(yù)先存儲的的加密密鑰數(shù)據(jù)加密以64比特為單位的輸入明文數(shù)據(jù)。下面,通過從最高位比特的明文數(shù)據(jù)劃分得到的每個64比特明文數(shù)據(jù)塊,被叫做明文塊Pt(t=0,1,...)。
(1)首先,如下加密明文塊P0。
圖14中的密鑰控制單元604輸出從加密密鑰數(shù)據(jù)產(chǎn)生的實(shí)際密鑰數(shù)據(jù)K
,用于加密明文塊P0。
圖14中的替換表數(shù)據(jù)產(chǎn)生單元602產(chǎn)生來自從密鑰控制單元604接收的實(shí)際密鑰數(shù)據(jù)K
的替換表數(shù)據(jù)TG(K
)并且輸出TG(K
)到數(shù)據(jù)加密單元601。
圖14的輸入密鑰產(chǎn)生單元603執(zhí)行對于實(shí)際密鑰數(shù)據(jù)K
中的相應(yīng)比特和初始塊IV的異或操作并且輸出由此產(chǎn)生的輸入密鑰數(shù)據(jù)K
+IV到數(shù)據(jù)加密單元601。
數(shù)據(jù)加密單元601使用替換表數(shù)據(jù)TG(K
)和輸入密鑰數(shù)據(jù)K
(+)IV加密明文塊P0以便產(chǎn)生密碼正文塊C0。
(2)下面,如下加密明文塊P1。
因?yàn)槊荑€控制單元604不輸出新的實(shí)際密鑰數(shù)據(jù),替換表數(shù)據(jù)產(chǎn)生單元602不產(chǎn)生新的替換表數(shù)據(jù)。輸入密鑰產(chǎn)生單元603執(zhí)行對于實(shí)際密鑰數(shù)據(jù)K
中相應(yīng)比特和密碼塊C0的異或操作并且輸出產(chǎn)生的輸入密鑰數(shù)據(jù)K
(+)C0到數(shù)據(jù)加密單元601。
數(shù)據(jù)加密單元601使用替換表數(shù)據(jù)TG(K
)和輸入密鑰數(shù)據(jù)K
(+)C0加密明文塊P1以便產(chǎn)生密碼塊C1。
(3)以如明文塊P1的相同方式加密明文塊P2-P31。
(4)如下加密明文塊P32。
因?yàn)槊荑€控制單元604不輸出新的實(shí)際密鑰數(shù)據(jù),替換表數(shù)據(jù)產(chǎn)生單元602不產(chǎn)生新的替換表數(shù)據(jù)。
輸入密鑰產(chǎn)生單元603執(zhí)行對于實(shí)際密鑰數(shù)據(jù)K
中相應(yīng)比特和初始塊IV的異或操作并且輸出產(chǎn)生的輸入密鑰數(shù)據(jù)K
(+)IV到數(shù)據(jù)加密單元601。
數(shù)據(jù)加密單元601使用替換表數(shù)據(jù)TG(K
)和輸入密鑰數(shù)據(jù)K
(+)IV加密明文塊P32以便產(chǎn)生密碼塊C32。
(5)以如明文塊P1的相同方式加密明文塊P33-P63。
(6)重復(fù)如明文塊P32-P63的相同加密處理直到明文塊P1023。
(7)如下加密明文塊P1024。
密鑰控制單元604輸出從加密密鑰數(shù)據(jù)產(chǎn)生的實(shí)際密鑰數(shù)據(jù)K[1],用于加密明文塊P1024。
替換表數(shù)據(jù)產(chǎn)生單元602從密鑰控制單元604接收的實(shí)際密鑰數(shù)據(jù)K[1]中產(chǎn)生替換表數(shù)據(jù)TG(K[1]),并且輸出到數(shù)據(jù)加密單元601。
輸入密鑰產(chǎn)生單元603執(zhí)行對于實(shí)際密鑰數(shù)據(jù)K[1]中相應(yīng)比特和初始塊IV的異或操作并且輸出產(chǎn)生的輸入密鑰數(shù)據(jù)K[1](+)IV到數(shù)據(jù)加密單元601。
數(shù)據(jù)加密單元601使用替換表數(shù)據(jù)TG(K[1])和輸入密鑰數(shù)據(jù)K[1](+)IV加密明文塊P1024以便產(chǎn)生密碼塊C1024。
(8)如下加密明文塊P1025。
因?yàn)槊荑€控制單元604不輸出新的實(shí)際密鑰數(shù)據(jù),所以替換表數(shù)據(jù)產(chǎn)生單元602不產(chǎn)生新的替換表數(shù)據(jù)。
輸入密鑰產(chǎn)生單元603執(zhí)行對于實(shí)際密鑰數(shù)據(jù)K[1]中相應(yīng)比特和密碼塊C1024塊的異或操作并且輸出產(chǎn)生的輸入密鑰數(shù)據(jù)K[1](+)C1024到數(shù)據(jù)加密單元601。
數(shù)據(jù)加密單元601使用替換表數(shù)據(jù)TG(K[1])和輸入密鑰數(shù)據(jù)K[1](+)C1024加密明文塊P1025以便產(chǎn)生密碼塊C1025。
(9)重復(fù)如明文塊P0-P1023的相同加密處理直到最后的明文塊。
(10)對于密碼塊的解密處理是上面加密處理(1)-(9)的反向變換并且不同僅在于與被計(jì)算的實(shí)際密鑰數(shù)據(jù)進(jìn)行異或操作的目標(biāo)不是由數(shù)據(jù)加密單元601產(chǎn)生的密碼塊,而是一個密碼塊立即進(jìn)行由數(shù)據(jù)解密單元701解密的密碼塊。
將使用下面的公式說明由數(shù)據(jù)加密設(shè)備60進(jìn)行的明文數(shù)據(jù)的加密和由數(shù)據(jù)解密設(shè)備70進(jìn)行的明文數(shù)據(jù)的恢復(fù)以后的原理。
在這個說明中,“encryption”的初始字母“e”被加到每個有關(guān)加密處理的符號表中,而“decryption”的初始字母“d”被加到每個有關(guān)解密操作的符號表中。
當(dāng)加密明文塊Pe(1024*k)(k=0,1,...)時密鑰控制單元604輸出實(shí)際密鑰數(shù)據(jù)Ke[k mod 10]。否則,密鑰控制單元604不輸出實(shí)際密鑰數(shù)據(jù)。
替換表數(shù)據(jù)產(chǎn)生單元602從密鑰控制單元604接收的實(shí)際密鑰數(shù)據(jù)Ke[kmod 10]中產(chǎn)生替換表數(shù)據(jù)并且當(dāng)加密明文塊Pe(1024*k)時輸出該替換表數(shù)據(jù)。否則,替換表數(shù)據(jù)產(chǎn)生單元602不產(chǎn)生替換表數(shù)據(jù)。
輸入密鑰產(chǎn)生單元603發(fā)現(xiàn)對于初始塊Ive中的相應(yīng)比特和實(shí)際密鑰數(shù)據(jù)Ke[((32*j)mod 1024)mod 10]的異或操作并且當(dāng)加密明文塊Pe(32*j)(j=0,1,...)時輸出該計(jì)算結(jié)果作為輸入密鑰數(shù)據(jù)。當(dāng)加密除明文塊Pe(32*j)以外的明文塊Pet時,輸入密鑰產(chǎn)生單元603發(fā)現(xiàn)對于密碼正文塊Ce(t-1)的相應(yīng)比特和實(shí)際密鑰數(shù)據(jù)Ke[((t-(t mod 1024))/1024)mod 10]的異或操作并且輸出計(jì)算結(jié)果作為輸入密鑰數(shù)據(jù)。
換句話說,當(dāng)t=(32*j)(j=0,1,...)時,用于加密明文塊Pet的輸入密鑰數(shù)據(jù)Iket是Iket=Ke[((t-(t mod 1024))/1024)mod 10](+)IVe ...(公式21)同時,當(dāng)t≠(32*j)(j=0,1,...)時,用于加密明文塊Pet的輸入密鑰數(shù)據(jù)Iket是Iket=Ke[((t-(t mod 1024))/1024)mod 10](+)Ce(t-1) ...(公式22)當(dāng)I=(t-(t mod 1024))/1024)mod 10時,替換表數(shù)據(jù)是Tge(Ke[I]),并且通過加密明文塊Pet(t=0,1,...)獲得的64比特密碼正文塊Cet是Cet=Enc(Pet,Tge(Ke[I],Iket) ...(公式23)此處“Enc”表示數(shù)據(jù)加密單元601中執(zhí)行的加密處理。
這樣,數(shù)據(jù)加密單元601使用輸入密鑰數(shù)據(jù)Iket和替換表數(shù)據(jù)Tge(Ke[I])加密每一個明文塊Pet以便產(chǎn)生密碼正文塊Cet=Enc(Pet,Tge(Ke[I],Iket)。
當(dāng)解密密文塊Cd(1024*k)(k=0,1,...)時密鑰控制單元704輸出實(shí)際密鑰數(shù)據(jù)Kd[k mod 10]。否則,密鑰控制單元704不輸出密鑰數(shù)據(jù)。
替換表數(shù)據(jù)產(chǎn)生單元702從密鑰控制單元704接收的實(shí)際密鑰數(shù)據(jù)Kd[kmod 10]中產(chǎn)生替換表數(shù)據(jù)并且當(dāng)解密密文塊Cd(1024*k)時輸出替換表數(shù)據(jù)。否則,替換表數(shù)據(jù)產(chǎn)生單元702不產(chǎn)生替換表數(shù)據(jù)。
輸入密鑰產(chǎn)生單元703發(fā)現(xiàn)對于初始塊IVd的相應(yīng)比特和實(shí)際密鑰數(shù)據(jù)Kd[((32*j)-((32*j)mod 1024))/1024)mod 10]的異或操作并且當(dāng)解密密文塊Cd(32*j)(j=0,1,...)時輸出計(jì)算結(jié)果作為輸入密鑰數(shù)據(jù)。當(dāng)解密除密文塊Cd(32*j)以外的密文塊Cdt時,輸入密鑰產(chǎn)生單元703發(fā)現(xiàn)對于密碼正文塊Cd(t-1)的相應(yīng)比特和實(shí)際密鑰數(shù)據(jù)Kd[((t-(t mod 1024))/1024)mod 10]的異或操作并且輸出計(jì)算結(jié)果作為輸入密鑰數(shù)據(jù)。
換句話說,當(dāng)t=(32*j)(j=0,1,...)時,用于解密密文塊Cdt的輸入密鑰數(shù)據(jù)Ikdt是Ikdt=Kd[((t-(t mod 1024))/1024)mod 10](+)IVd ...(公式24)同時,當(dāng)t≠(32*j)(j=0,1,...)時,用于解密密文塊Cdt的輸入密鑰數(shù)據(jù)Ikdt是Ikdt=Kd[((t-(t mod 1024))/1024)mod 10](+)Cd(t-1) ...(公式25)當(dāng)i=(t-(t mod 1024))/1024)mod 10時,替換表數(shù)據(jù)是Tgd(Kd[I]),并且通過解密密文塊Cdt(t=0,1,...)獲得的64比特解密正文塊Ddt是Ddt=Dec(Cdt,Tgd(Kd[i],Ikdt)... (公式26)此處“Dec”表示數(shù)據(jù)解密單元701中執(zhí)行的解密處理。
這樣,數(shù)據(jù)解密單元701使用輸入密鑰數(shù)據(jù)Ikdt和替換表數(shù)據(jù)Tgd(Kd[i])解密每一個密文塊Cdt以便產(chǎn)生解密的正文塊Ddt=Dec(Cdt,Tgd(Kd[i],Ikdt)。
當(dāng)使用相同的實(shí)際密鑰數(shù)據(jù)通過數(shù)據(jù)解密設(shè)備70解密通過數(shù)據(jù)加密設(shè)備60使用給定的實(shí)際密鑰數(shù)據(jù)對和初始塊加密明文塊字符串(Pe0,Pe1,...)獲得的密碼正文塊字符串時,得到的解密正文塊字符串(Dd0,Dd1,...)與原始明文塊字符串相同。這將在下面證明。此處注意,因?yàn)樘鎿Q表數(shù)據(jù)產(chǎn)生單元602和替換表數(shù)據(jù)產(chǎn)生單元702具有相同的功能,所以由替換表數(shù)據(jù)產(chǎn)生單元602使用實(shí)際密鑰的產(chǎn)生的替換表數(shù)據(jù)將與使用相同實(shí)際密鑰數(shù)據(jù)由替換表數(shù)據(jù)產(chǎn)生單元702產(chǎn)生的替換表數(shù)據(jù)相同。
(1)因?yàn)閿?shù)據(jù)加密設(shè)備60和數(shù)據(jù)解密設(shè)備70使用相同的實(shí)際密鑰數(shù)據(jù),所以Ke=Kd下文,Ke和Kd都指的是實(shí)際密鑰數(shù)據(jù)Ks。
(2)因?yàn)閿?shù)據(jù)加密設(shè)備60和數(shù)據(jù)解密設(shè)備70使用相同的初始塊,所以Ive=Ivd下文,Ive和Ivd都指的是初始塊IVs。
(3)因?yàn)橥ㄟ^數(shù)據(jù)解密設(shè)備70解密通過數(shù)據(jù)加密設(shè)備60產(chǎn)生的密文塊字符串,所以Cet=Cdt下文,Cet和Cdt指的都是密文塊Cst。
(4)根據(jù)(1),(2),和公式21,當(dāng)t=(32*j)(j=0,1,...)時,用于加密明文塊Pet的輸入密鑰數(shù)據(jù)Iket是Iket=Ks[((t-(t mod 1024))/1024)mod 10](+)Ivs...(公式27)(5)根據(jù)(1),(2),和公式24,當(dāng)t=(32*j)(j=0,1,...)時,用于解密明文塊Cst的輸入密鑰數(shù)據(jù)Ikdt是Ikdt=Ks[((t-(t mod 1024))/1024)mod 10](+)Ivs...(公式28)(6)公式27的右邊和公式28的右邊是相等的,使得當(dāng)t=(32*j)(j=0,1,...)時,Iket=Ikdt(7)根據(jù)(1),(3),和公式22,當(dāng)t≠(32*j)(j=0,1,...)時,用于加密明文塊Pet的輸入密鑰數(shù)據(jù)Iket是Iket=Ks[((t-(t mod 1024))/1024)mod 10](+)Cs(t-1)...(公式29)(8)根據(jù)(1),(3),和公式25,當(dāng)t≠(32*j)(j=0,1,...)時,用于解密明文塊Cst的輸入密鑰數(shù)據(jù)Ikdt是Ikdt=Ks[((t-(t mod 1024))/1024)mod 10](+)Cs(t-1)...(公式30)(9)公式29的右邊和公式30的右邊是相等的,使得當(dāng)t≠(32*j)(j=0,1,...)時,
Iket=Ikdt(10)從(6)和(9),明顯當(dāng)t=(32*j)(j=0,1,...)和當(dāng)t≠(32*j)(j=0,1,...)兩種情況時 Iket=Ikdt。
因此,Iket和Ikdt在下文都指輸入密鑰數(shù)據(jù)Ikst。
(11)因?yàn)樘鎿Q表數(shù)據(jù)產(chǎn)生單元602和替換表數(shù)據(jù)產(chǎn)生單元702具有相同的功能,所以Tge(Ks[I])=TGd(Ks[I])相應(yīng)地,Tge(Ks[I])和TGd(Ks[I])在下文都指替換表數(shù)據(jù)TGs(Ks[I])。
(12)根據(jù)(10),(11),和公式23,通過加密明文塊Pet(t=0,1,...)得到的64比特密文塊Cst表示為Cst=Enc(Pet,TGs(Ks[I]),Ikst)...(公式31)(13)根據(jù)(10),(11),和公式26,通過解密密文塊Cst(t=0,1,...)得到的64比特解密正文塊Ddt表示為Ddt=Dec(Cst,TGs(Ks[i],Ikst)...(公式32)(14)當(dāng)將公式31替換為公式32時,結(jié)果是Ddt=Dec(Pet,TGs(Ks[I]),Ikst),TGs(Ks[i],Ikst)...(公式33)(15)當(dāng)數(shù)據(jù)加密單元601使用32K比特替換表數(shù)據(jù)β和64比特輸入密鑰數(shù)據(jù)γ加密明文塊α以便產(chǎn)生一個密碼正文塊和數(shù)據(jù)解密單元701使用相同的替換表數(shù)據(jù)β和64比特輸入密鑰數(shù)據(jù)γ解密該密碼正文塊時,與在第一實(shí)施例中由數(shù)據(jù)移動單元101的明文數(shù)據(jù)的加密和由數(shù)據(jù)移動單元201的明文數(shù)據(jù)的恢復(fù)后的原理相同,由數(shù)據(jù)解密單元701獲得的解密的正文塊與原始明文塊α相同。即,Dec(Enc(α,β,γ),β,γ)=α...(公式34)(16)從等式33和34,證明(解密正文塊Ddt)=(明文塊Pet)...(公式35)數(shù)據(jù)加密設(shè)備60的安全性將在下面說明。這個數(shù)據(jù)加密設(shè)備60的安全性取決于數(shù)據(jù)加密單元601的安全性。在本實(shí)施例中,當(dāng)實(shí)際密鑰數(shù)據(jù)被表示為CKt時,在數(shù)據(jù)加密單元601中輸入的輸入密鑰數(shù)據(jù)Ikt被表示為Ikt=CKt(+)IV (此處t=k*32)Ikt=CKt(+)C(t-1)(此處t≠k*32)...(公式36)
此處k=0,1,...
在公式36中,雖然密碼正文塊C(t-1)為密碼分析學(xué)所知,但是初始塊IV和從密鑰控制單元604輸出的實(shí)際密鑰數(shù)據(jù)CKt不為密碼分析學(xué)所知,使得輸入密鑰數(shù)據(jù)IKt不為密碼分析學(xué)所知。相應(yīng)地,即使密碼分析在即計(jì)算機(jī)上通過已知的明文攻擊模仿數(shù)據(jù)加密單元601,也不可能發(fā)現(xiàn)加密密鑰數(shù)據(jù)。
另外,因?yàn)樵诒緦?shí)施例中無論何時加密新的明文塊,更新輸入密鑰數(shù)據(jù),所以與對于所有的明文塊使用相同的輸入密鑰數(shù)據(jù)的情況相比,更保證加密安全性。
另外,因?yàn)樵诒緦?shí)施例中加密1024明文塊,每次更新替換表數(shù)據(jù),所以與對于所有的明文塊使用相同的替換表數(shù)據(jù)的情況相比,更保證加密安全性。
而且,在本實(shí)施例中,只有當(dāng)執(zhí)行加密1024次時執(zhí)行32K比特替換表數(shù)據(jù)產(chǎn)生。因?yàn)?2K比特替換表數(shù)據(jù)產(chǎn)生比在數(shù)據(jù)加密單元601中執(zhí)行的8組32比特子密鑰數(shù)據(jù)產(chǎn)生花費(fèi)較多的時間,數(shù)據(jù)加密設(shè)備60保持高的加密安全性,不會如在第三常規(guī)實(shí)例的情況下丟失處理速度。
雖然在第三實(shí)施例中輸入密鑰產(chǎn)生單元603和703已經(jīng)在兩組64比特?cái)?shù)據(jù)上執(zhí)行異或操作,但是利用其他數(shù)據(jù)合并方法可以實(shí)現(xiàn)相同的效果。
雖然在第三實(shí)施例中64比特實(shí)際密鑰數(shù)據(jù)已經(jīng)由密鑰控制單元604和704產(chǎn)生,但是實(shí)際密鑰數(shù)據(jù)的長度不限于64比特。實(shí)際密鑰數(shù)據(jù)比64比特小,例如可以使用40比特實(shí)際密鑰數(shù)據(jù),通過修改輸入密鑰產(chǎn)生單元603和703中的數(shù)據(jù)合并操作使得輸出數(shù)據(jù)將是64比特長。
在第三實(shí)施例中,在緊前面的加密處理中產(chǎn)生的密碼正文塊已經(jīng)輸入到輸入密鑰產(chǎn)生單元603中。但是,可以使用在緊前面加密處理期間得到的任何64比特?cái)?shù)據(jù),而不是密碼正文塊。而且,這個數(shù)據(jù)可以不必需是64比特長。通過修改輸入密鑰產(chǎn)生單元603中的數(shù)據(jù)合并操作可以使用小于64比特的數(shù)據(jù),例如40比特?cái)?shù)據(jù),使得輸出數(shù)據(jù)將是64比特長。相同的方法應(yīng)用到數(shù)據(jù)解密設(shè)備70。
雖然數(shù)據(jù)加密單元601和數(shù)據(jù)解密單元701已經(jīng)使用了Blowfish密碼,也可以使用基于密鑰數(shù)據(jù)產(chǎn)生替換表數(shù)據(jù)的任何塊密碼。
在第三實(shí)施例中,由10組64比特實(shí)際密鑰數(shù)據(jù)組成的加密密鑰數(shù)據(jù)已經(jīng)存儲在每個發(fā)送機(jī)6和接收機(jī)7中。另一種方案,首先使用用于密碼處理的一組64比特實(shí)際密鑰數(shù)據(jù)可以存儲在每個發(fā)送機(jī)6和接收機(jī)7中,并且第一組64比特實(shí)際密鑰數(shù)據(jù)之后的其他組64比特實(shí)際密鑰數(shù)據(jù)可以與明文數(shù)據(jù)一起在發(fā)送機(jī)6中加密并且發(fā)送給接收機(jī)7??蛇x擇地,加密密鑰數(shù)據(jù)可以使用例如Diffie-Hellman方案的公共密鑰加密系統(tǒng)分配。
在第一到第三實(shí)施例中,數(shù)據(jù)加密設(shè)備已經(jīng)加密輸入明文數(shù)據(jù)以便產(chǎn)生密碼正文數(shù)據(jù)和數(shù)據(jù)解密設(shè)備已經(jīng)解密該密碼正文數(shù)據(jù)。但是,數(shù)據(jù)加密設(shè)備和數(shù)據(jù)解密設(shè)備每個可以用于加密和解密兩者,因?yàn)橥ㄟ^數(shù)據(jù)解密設(shè)備的解密是通過數(shù)據(jù)加密設(shè)備的加密的反向操作。因此,數(shù)據(jù)解密設(shè)備可以加密輸入明文數(shù)據(jù)以便產(chǎn)生密碼正文數(shù)據(jù)和數(shù)據(jù)加密設(shè)備可以解密該密碼正文數(shù)據(jù)。
雖然在這個說明書中上已經(jīng)作為例如邏輯IC的硬件描述了面的每個實(shí)施例,但是本發(fā)明還可以由軟件實(shí)現(xiàn)。通過在例如CD-ROM的計(jì)算機(jī)可讀存儲介質(zhì)上存儲軟件,任何重放,使用,傳遞,出借,輸入和關(guān)于本發(fā)明的傳遞/出借的建議與硬件的情況一樣是可能的。
雖然已經(jīng)通過參照附圖的示例完全描述了本發(fā)明,應(yīng)該注意各種改變和修改對本領(lǐng)域技術(shù)人員是明顯的。因此,除非這樣的改變和修改脫離本發(fā)明的范圍,它們應(yīng)該解釋為被包括在其中。
權(quán)利要求
1.一個加密處理設(shè)備,用于利用多組替換數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理設(shè)備包括存儲裝置,用于存儲(2^N)組替換數(shù)據(jù),該替換數(shù)據(jù)每個具有預(yù)定個數(shù)的比特,此處N是一個不小于2的整數(shù);劃分裝置,用于將(N*M)比特長的輸入數(shù)據(jù)分成M組子數(shù)據(jù),每個子數(shù)據(jù)是N比特長,此處M是一個不小于2的整數(shù);替換裝置,用于接收一個輸入,它是下面任意之一M組N比特子數(shù)據(jù);和作為在M組N比特子數(shù)據(jù)上執(zhí)行的合并處理結(jié)果得到的至少一組N比特輸入合并數(shù)據(jù),對于N個輸入比特的每個在存儲裝置中指定(2^N)組替換數(shù)據(jù)之一,并且輸出對于每個N輸入比特指定的該組替換數(shù)據(jù);固定變換執(zhí)行裝置,用于在從該替換裝置輸出的至少一組替換數(shù)據(jù)上執(zhí)行多個不同的固定變換,以便產(chǎn)生M組變換的數(shù)據(jù),每個變換的數(shù)據(jù)具有預(yù)定個數(shù)的比特;和輸出數(shù)據(jù)產(chǎn)生裝置,用于根據(jù)由固定變換執(zhí)行裝置產(chǎn)生的M組變換的數(shù)據(jù)產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
2.權(quán)利要求1的加密處理設(shè)備,其中由固定變換執(zhí)行裝置執(zhí)行的多個不同固定變換分別旋轉(zhuǎn)不同比特變換長度。
3.權(quán)利要求2的加密處理設(shè)備,還包括密鑰獲得裝置,用于獲得一組密鑰數(shù)據(jù);和旋轉(zhuǎn)確定裝置,用于根據(jù)由密鑰獲得裝置得到的密鑰數(shù)據(jù)組,在多個不同固定變換的每一個變換中確定由固定變換執(zhí)行裝置執(zhí)行的旋轉(zhuǎn)的比特變換長度。
4.權(quán)利要求3的加密處理設(shè)備,其中該預(yù)定數(shù)是(N*M),其中該替換裝置在該存儲裝置的(2^N)組替換數(shù)據(jù)中指定m組替換數(shù)據(jù),分別用于M組N比特子數(shù)據(jù),并且輸出指定的M組替換數(shù)據(jù),每組是(N*M)比特長,其中固定變換執(zhí)行裝置分別在從替換裝置輸出的M組替換數(shù)據(jù)上執(zhí)行M次不同的固定變換,以便產(chǎn)生M組變換數(shù)據(jù),每組是(N*M)比特長,和其中輸出數(shù)據(jù)產(chǎn)生裝置在產(chǎn)生的M組變換數(shù)據(jù)上執(zhí)行合并處理以便產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
5.權(quán)利要求4的加密處理設(shè)備,其中通過輸出數(shù)據(jù)產(chǎn)生裝置的合并處理至少由下面操作之一組成算術(shù)加操作;和對于相應(yīng)比特的異或操作。
6.權(quán)利要求3的加密處理設(shè)備,其中該預(yù)定數(shù)是N,其中該替換裝置包括輸入合并裝置,用于在M組N比特子數(shù)據(jù)上執(zhí)行全局合并處理以便產(chǎn)生一組N比特輸入合并的數(shù)據(jù),在存儲裝置中指定(2^N)組替換數(shù)據(jù)之一用于該N比特輸入合并數(shù)據(jù)組,并且輸出是N比特長的指定的替換數(shù)據(jù)組,其中該固定變換執(zhí)行裝置在從替換裝置輸出的替換數(shù)據(jù)組上執(zhí)行M個不同的固定變換的每個變換,以便產(chǎn)生M組變換數(shù)據(jù),每組數(shù)據(jù)是N比特長,和其中輸出數(shù)據(jù)產(chǎn)生裝置包括輸出合并裝置,用于執(zhí)行關(guān)于M組子數(shù)據(jù)的每組和對應(yīng)于該子數(shù)據(jù)組的M組變換數(shù)據(jù)的不同的一組變換數(shù)據(jù)的單個合并處理,以便產(chǎn)生每組是N比特長的M組輸出合并數(shù)據(jù);和組合裝置,用于組合由輸出合并裝置產(chǎn)生的M組輸出合并數(shù)據(jù)以便形成是(N*M)比特長的輸出數(shù)據(jù)。
7.權(quán)利要求6的加密處理設(shè)備,其中通過輸入合并裝置的全局合并處理至少由下面操作之一組成算術(shù)加操作;和對于相應(yīng)比特的異或操作。
8.權(quán)利要求6的加密處理設(shè)備,其中通過輸入合并裝置的全局合并處理是在執(zhí)行關(guān)于由劃分裝置產(chǎn)生的M組子數(shù)據(jù)的多個不同的固定變換之后,至少執(zhí)行下面操作之一算術(shù)加操作;和對于相應(yīng)比特的異或操作。
9.權(quán)利要求6的加密處理設(shè)備,其中通過輸出合并裝置的每個單獨(dú)合并處理是任意的算術(shù)加操作和對于相應(yīng)比特的異或操作的。
10.一種用于產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)的加密處理設(shè)備,該加密處理設(shè)備包括密鑰數(shù)據(jù)存儲裝置,用于存儲一組密鑰數(shù)據(jù);替換表數(shù)據(jù)存儲裝置,用于存儲一組替換表數(shù)據(jù);塊產(chǎn)生裝置,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生裝置,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換裝置,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用產(chǎn)生作為加密處理緊前面的輸入塊的結(jié)果的一個輸出塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理裝置,用于加密處理從塊產(chǎn)生裝置輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),產(chǎn)生一個輸出塊。
11.權(quán)利要求10的加密處理設(shè)備,還包括密鑰數(shù)據(jù)獲得裝置,用于當(dāng)加密處理指定個數(shù)的輸入塊之后立即加密處理該輸入塊時,得到一組密鑰數(shù)據(jù)和將該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù)替換為得到的密鑰數(shù)據(jù)組,其中替換表數(shù)據(jù)產(chǎn)生裝置根據(jù)由密鑰數(shù)據(jù)獲得裝置得到的該密鑰數(shù)據(jù)組產(chǎn)生該替換表數(shù)據(jù)組。
12.權(quán)利要求11的加密處理設(shè)備,其中當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,該密鑰數(shù)據(jù)獲得裝置得到一組密鑰數(shù)據(jù)并且將該得到的密鑰數(shù)據(jù)組存儲到密鑰數(shù)據(jù)存儲裝置中,和其中當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,該替換表數(shù)據(jù)產(chǎn)生裝置根據(jù)由密鑰數(shù)據(jù)獲得裝置得到的該組密鑰數(shù)據(jù)產(chǎn)生一組替換表數(shù)據(jù)并且將產(chǎn)生的替換表數(shù)據(jù)組存儲在替換表數(shù)據(jù)存儲裝置中。
13.權(quán)利要求12的加密處理設(shè)備,其中該密鑰數(shù)據(jù)變換裝置預(yù)先存儲一個預(yù)定個數(shù)比特的初始塊,和當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,和當(dāng)加密處理固定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,使用該初始塊通過執(zhí)行該密鑰數(shù)據(jù)組上的比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),該固定個數(shù)小于指定個數(shù),和其中加密處理裝置加密處理從塊產(chǎn)生裝置輸出的一個輸入塊,以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組,產(chǎn)生一個輸出塊。
14.權(quán)利要求13的加密處理設(shè)備,其中由密鑰數(shù)據(jù)變換裝置執(zhí)行的比特變換是任意的算術(shù)加操作和對于相應(yīng)比特的異或操作。
15.一種用于產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)的加密處理設(shè)備,該加密處理設(shè)備包括密鑰數(shù)據(jù)存儲裝置,用于存儲一組密鑰數(shù)據(jù);替換表數(shù)據(jù)存儲裝置,用于存儲一組替換表數(shù)據(jù);塊產(chǎn)生裝置,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生裝置,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換裝置,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用緊前面的輸入塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理裝置,用于加密處理從塊產(chǎn)生裝置輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),產(chǎn)生一個輸出塊。
16.權(quán)利要求15的加密處理設(shè)備,還包括密鑰數(shù)據(jù)獲得裝置,用于當(dāng)加密處理指定個數(shù)的輸入塊之后立即加密處理該輸入塊時,得到一組密鑰數(shù)據(jù)和將該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù)替換為得到的密鑰數(shù)據(jù)組,其中替換表數(shù)據(jù)產(chǎn)生裝置根據(jù)由密鑰數(shù)據(jù)獲得裝置得到的該密鑰數(shù)據(jù)組產(chǎn)生該替換表數(shù)據(jù)組。
17.權(quán)利要求16的加密處理設(shè)備,其中當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,該密鑰數(shù)據(jù)獲得裝置得到一組密鑰數(shù)據(jù)并且將該得到的密鑰數(shù)據(jù)組存儲到密鑰數(shù)據(jù)存儲裝置中,和其中當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,該替換表數(shù)據(jù)產(chǎn)生裝置根據(jù)由密鑰數(shù)據(jù)獲得裝置得到的該組密鑰數(shù)據(jù)產(chǎn)生一組替換表數(shù)據(jù)并且將產(chǎn)生的替換表數(shù)據(jù)組存儲在替換表數(shù)據(jù)存儲裝置中。
18.權(quán)利要求17的加密處理設(shè)備,其中該密鑰數(shù)據(jù)變換裝置預(yù)先存儲一個預(yù)定個數(shù)比特的初始塊,和當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,和當(dāng)加密處理固定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,使用該初始塊通過執(zhí)行該密鑰數(shù)據(jù)組上的比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),該固定個數(shù)小于指定個數(shù),和其中加密處理裝置加密處理從塊產(chǎn)生裝置輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組,產(chǎn)生一個輸出塊。
19.權(quán)利要求18的加密處理設(shè)備,其中由密鑰數(shù)據(jù)變換裝置執(zhí)行的比特變換是任意的算術(shù)加操作和對于相應(yīng)比特的異或操作。
20.一種用于產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)的加密處理設(shè)備,該加密處理設(shè)備包括密鑰數(shù)據(jù)存儲裝置,用于存儲一組密鑰數(shù)據(jù);替換表數(shù)據(jù)存儲裝置,用于存儲一組替換表數(shù)據(jù);塊產(chǎn)生裝置,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生裝置,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換裝置,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用對于緊前面的輸入塊加密處理期間產(chǎn)生的一個中間塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理裝置,用于通過使用該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的密鑰數(shù)據(jù)組,加密處理從塊產(chǎn)生裝置輸出的一個輸入塊以便在對于輸入塊的加密處理期間產(chǎn)生一個中間塊并且產(chǎn)生一個輸出塊作為對于該輸入塊的加密處理的結(jié)果。
21.權(quán)利要求20的加密處理設(shè)備,還包括密鑰數(shù)據(jù)獲得裝置,用于當(dāng)加密處理指定個數(shù)的輸入塊之后立即加密處理該輸入塊時,得到一組密鑰數(shù)據(jù)和將該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù)替換為得到的密鑰數(shù)據(jù)組,其中替換表數(shù)據(jù)產(chǎn)生裝置根據(jù)由密鑰數(shù)據(jù)獲得裝置得到的該密鑰數(shù)據(jù)組產(chǎn)生該替換表數(shù)據(jù)組。
22.權(quán)利要求21的加密處理設(shè)備,其中當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,該密鑰數(shù)據(jù)獲得裝置得到一組密鑰數(shù)據(jù)并且將該得到的密鑰數(shù)據(jù)組存儲到密鑰數(shù)據(jù)存儲裝置中,和其中當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,該替換表數(shù)據(jù)產(chǎn)生裝置根據(jù)由密鑰數(shù)據(jù)獲得裝置得到的該組密鑰數(shù)據(jù)產(chǎn)生一組替換表數(shù)據(jù)并且將產(chǎn)生的替換表數(shù)據(jù)組存儲在替換表數(shù)據(jù)存儲裝置中。
23.權(quán)利要求22的加密處理設(shè)備,其中該密鑰數(shù)據(jù)變換裝置預(yù)先存儲一個預(yù)定個數(shù)比特的初始塊,和當(dāng)一個輸入塊位于加密處理的輸入數(shù)據(jù)頂部時,和當(dāng)加密處理固定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,使用該初始塊通過執(zhí)行該密鑰數(shù)據(jù)組上的比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),該固定個數(shù)小于指定個數(shù),和其中加密處理裝置加密處理從塊產(chǎn)生裝置輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組,產(chǎn)生一個中間塊和一個輸出塊。
24.權(quán)利要求23的加密處理設(shè)備,其中由密鑰數(shù)據(jù)變換裝置執(zhí)行的比特變換是任意的算術(shù)加操作和對于相應(yīng)比特的異或操作。
25.在一個加密處理設(shè)備中的一種加密處理方法,該設(shè)備配備一個存儲設(shè)備,存儲(2^N)組替換數(shù)據(jù),每組數(shù)據(jù)具有預(yù)定個數(shù)的比特,利用(2^N)組替換數(shù)據(jù)加密處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),N是一個不小于2的整數(shù),該加密處理方法包括;劃分步驟,用于將(N*M)比特長的輸入數(shù)據(jù)分成M組子數(shù)據(jù),每個子數(shù)據(jù)是N比特長,此處M是一個不小于2的整數(shù);替換步驟,用于接收一個輸入,它是下面任意之一M組N比特子數(shù)據(jù);和作為在M組N比特子數(shù)據(jù)上執(zhí)行的合并處理結(jié)果得到的至少一組N比特輸入合并數(shù)據(jù),對于N個輸入比特的每個在存儲裝置中指定(2^N)組替換數(shù)據(jù)之一,并且輸出對于每個N輸入比特指定的該組替換數(shù)據(jù);固定變換執(zhí)行步驟,用于在從該替換步驟輸出的至少一組替換數(shù)據(jù)上執(zhí)行多個不同的固定變換,以便產(chǎn)生M組變換的數(shù)據(jù),每個變換的數(shù)據(jù)具有預(yù)定個數(shù)的比特;和輸出數(shù)據(jù)產(chǎn)生步驟,用于根據(jù)由固定變換執(zhí)行步驟產(chǎn)生的M組變換的數(shù)據(jù)產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
26.權(quán)利要求25的加密處理方法,其中該預(yù)定數(shù)是(N*M),其中該替換步驟在該存儲裝置的(2^N)組替換數(shù)據(jù)中指定m組替換數(shù)據(jù),分別用于M組N比特子數(shù)據(jù),并且輸出指定的M組替換數(shù)據(jù),每組是(N*M)比特長,其中固定變換執(zhí)行步驟分別在從替換步驟輸出的M組替換數(shù)據(jù)上執(zhí)行M次不同的固定變換,以便M組變換數(shù)據(jù),每組是(N*M)比特長,和其中輸出數(shù)據(jù)產(chǎn)生步驟在產(chǎn)生的M組變換數(shù)據(jù)上執(zhí)行合并處理以便產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
27.權(quán)利要求25的加密處理方法,其中該預(yù)定數(shù)是N,其中該替換步驟包括輸入合并步驟,用于在M組N比特子數(shù)據(jù)上執(zhí)行全局合并處理以便產(chǎn)生一組N比特輸入合并的數(shù)據(jù),在存儲裝置中指定(2^N)組替換數(shù)據(jù)之一用于該N比特輸入合并數(shù)據(jù)組,并且輸出是N比特長的指定的替換數(shù)據(jù)組,其中該固定變換執(zhí)行步驟在從替換步驟輸出的替換數(shù)據(jù)組上執(zhí)行M個不同的固定變換的每個變換,以便產(chǎn)生M組變換數(shù)據(jù),每組數(shù)據(jù)是N比特長,和其中輸出數(shù)據(jù)產(chǎn)生步驟包括輸出合并子步驟,用于執(zhí)行關(guān)于M組子數(shù)據(jù)的每組和對應(yīng)于該子數(shù)據(jù)組的M組變換數(shù)據(jù)的不同的一組變換數(shù)據(jù)的單個合并處理,以便產(chǎn)生每組是N比特長的M組輸出合并數(shù)據(jù);和組合子步驟,用于組合由輸出合并子步驟產(chǎn)生的M組輸出合并數(shù)據(jù)以便形成是(N*M)比特長的輸出數(shù)據(jù)。
28.在一個加密處理設(shè)備中的一種加密處理方法,該設(shè)備配備存儲一組密鑰數(shù)據(jù)的一個密鑰數(shù)據(jù)存儲設(shè)備,和用于存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲裝置,產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理方法包括;塊產(chǎn)生步驟,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生步驟,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換步驟,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用產(chǎn)生作為加密處理緊前面的輸入塊的結(jié)果的一個輸出塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理步驟,用于加密處理由塊產(chǎn)生步驟輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),產(chǎn)生一個輸出塊。
29.在一個加密處理設(shè)備中的一種加密處理方法,該設(shè)備配備存儲一組密鑰數(shù)據(jù)的一個密鑰數(shù)據(jù)存儲設(shè)備,和用于存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲裝置,產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理方法包括;塊產(chǎn)生步驟,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生步驟,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換步驟,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用緊前面的輸入塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理步驟,用于加密處理由塊產(chǎn)生步驟輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),產(chǎn)生一個輸出塊。
30.在一個加密處理設(shè)備中的一種加密處理方法,該設(shè)備配備存儲一組密鑰數(shù)據(jù)的一個密鑰數(shù)據(jù)存儲設(shè)備,和用于存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲裝置,產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理方法包括;塊產(chǎn)生步驟,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生步驟,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換步驟,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用對于緊前面的輸入塊加密處理期間產(chǎn)生的一個中間塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理步驟,用于通過使用該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換步驟產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的密鑰數(shù)據(jù)組,加密處理由塊產(chǎn)生步驟輸出的一個輸入塊以便在對于輸入塊的加密處理期間產(chǎn)生一個中間塊并且產(chǎn)生一個輸出塊作為對于該輸入塊的加密處理的結(jié)果。
31.在一個加密處理設(shè)備中的一種存儲加密處理程序的計(jì)算機(jī)可讀的存儲介質(zhì),該設(shè)備配備一個存儲設(shè)備,存儲(2^N)組替換數(shù)據(jù),每組數(shù)據(jù)具有預(yù)定個數(shù)的比特,利用(2^N)組替換數(shù)據(jù)加密處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),N是一個不小于2的整數(shù),該加密處理方法包括;劃分步驟,用于將(N*M)比特長的輸入數(shù)據(jù)分成M組子數(shù)據(jù),每個子數(shù)據(jù)是N比特長,此處M是一個不小于2的整數(shù);替換步驟,用于接收一個輸入,它是下面任意之一M組N比特子數(shù)據(jù);和作為在M組N比特子數(shù)據(jù)上執(zhí)行的合并處理結(jié)果得到的至少一組N比特輸入合并數(shù)據(jù),對于N個輸入比特的每個在存儲裝置中指定(2^N)組替換數(shù)據(jù)之一,并且輸出對于每個N輸入比特指定的該組替換數(shù)據(jù);固定變換執(zhí)行步驟,用于在從該替換步驟輸出的至少一組替換數(shù)據(jù)上執(zhí)行多個不同的固定變換,以便產(chǎn)生M組變換的數(shù)據(jù),每個變換的數(shù)據(jù)具有預(yù)定個數(shù)的比特;和輸出數(shù)據(jù)產(chǎn)生步驟,用于根據(jù)由固定變換執(zhí)行步驟產(chǎn)生的M組變換的數(shù)據(jù)產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
32.權(quán)利要求31的存儲介質(zhì),其中該預(yù)定數(shù)是(N*M),其中該替換步驟在該存儲裝置的(2^N)組替換數(shù)據(jù)中指定m組替換數(shù)據(jù),分別用于M組N比特子數(shù)據(jù),并且輸出指定的M組替換數(shù)據(jù),每組是(N*M)比特長,其中固定變換執(zhí)行步驟分別在從替換步驟輸出的M組替換數(shù)據(jù)上執(zhí)行M次不同的固定變換,以便M組變換數(shù)據(jù),每組是(N*M)比特長,和其中輸出數(shù)據(jù)產(chǎn)生步驟在產(chǎn)生的M組變換數(shù)據(jù)上執(zhí)行合并處理以便產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
33.權(quán)利要求31的存儲介質(zhì),其中該預(yù)定數(shù)是N,其中該替換步驟包括輸入合并步驟,用于在M組N比特子數(shù)據(jù)上執(zhí)行全局合并處理以便產(chǎn)生一組N比特輸入合并的數(shù)據(jù),在存儲裝置中指定(2^N)組替換數(shù)據(jù)之一用于該N比特輸入合并數(shù)據(jù)組,并且輸出是N比特長的指定的替換數(shù)據(jù)組,其中該固定變換執(zhí)行步驟在從替換步驟輸出的替換數(shù)據(jù)組上執(zhí)行M個不同的固定變換的每個變換,以便產(chǎn)生M組變換數(shù)據(jù),每組數(shù)據(jù)是N比特長,和其中輸出數(shù)據(jù)產(chǎn)生步驟包括輸出合并子步驟,用于執(zhí)行關(guān)于M組子數(shù)據(jù)的每組和對應(yīng)于該子數(shù)據(jù)組的M組變換數(shù)據(jù)的不同的一組變換數(shù)據(jù)的單個合并處理,以便產(chǎn)生每組是N比特長的M組輸出合并數(shù)據(jù);和組合子步驟,用于組合由輸出合并子步驟產(chǎn)生的M組輸出合并數(shù)據(jù)以便形成是(N*M)比特長的輸出數(shù)據(jù)。
34.在一個加密處理設(shè)備中的一種存儲加密處理程序的計(jì)算機(jī)可讀的存儲介質(zhì),該設(shè)備配備存儲一組密鑰數(shù)據(jù)的一個密鑰數(shù)據(jù)存儲設(shè)備,和用于存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲裝置,產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理方法包括;塊產(chǎn)生步驟,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生步驟,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換步驟,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用產(chǎn)生作為加密處理緊前面的輸入塊的結(jié)果的一個輸出塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理步驟,用于加密處理由塊產(chǎn)生步驟輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),產(chǎn)生一個輸出塊。
35.在一個加密處理設(shè)備中的一種存儲加密處理程序的計(jì)算機(jī)可讀的存儲介質(zhì),該設(shè)備配備存儲一組密鑰數(shù)據(jù)的一個密鑰數(shù)據(jù)存儲設(shè)備,和用于存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲裝置,產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理方法包括;塊產(chǎn)生步驟,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生步驟,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換步驟,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用緊前面的輸入塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理步驟,用于加密處理由塊產(chǎn)生步驟輸出的一個輸入塊以便利用在該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換裝置產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù),產(chǎn)生一個輸出塊。
36.在一個加密處理設(shè)備中的一種存儲加密處理程序的計(jì)算機(jī)可讀的存儲介質(zhì),該設(shè)備配備存儲一組密鑰數(shù)據(jù)的一個密鑰數(shù)據(jù)存儲設(shè)備,和用于存儲一組替換表數(shù)據(jù)的替換表數(shù)據(jù)存儲裝置,產(chǎn)生一組替換表數(shù)據(jù)和利用該組替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù),該加密處理方法包括;塊產(chǎn)生步驟,用于將輸入數(shù)據(jù)分成輸入塊,每塊具有預(yù)定數(shù)的比特并且一塊一塊地輸出該輸入塊;替換表數(shù)據(jù)產(chǎn)生步驟,用于當(dāng)加密處理指定個數(shù)的輸入塊之后,立即加密處理一個輸入塊時,產(chǎn)生一組替換表數(shù)據(jù)并且將替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)替換為產(chǎn)生的替換表數(shù)據(jù)組;密鑰數(shù)據(jù)變換步驟,用于當(dāng)在加密處理該輸入塊緊前面的一個輸入塊之后,加密處理一個輸入塊時,通過在該密鑰數(shù)據(jù)組上利用對于緊前面的輸入塊加密處理期間產(chǎn)生的一個中間塊執(zhí)行一個比特變換,變換該密鑰數(shù)據(jù)存儲裝置中的一組密鑰數(shù)據(jù);和加密處理步驟,用于通過使用該替換表數(shù)據(jù)存儲裝置中的一組替換表數(shù)據(jù)和任意的由密鑰數(shù)據(jù)變換步驟產(chǎn)生的一個變換密鑰數(shù)據(jù)組和存儲在密鑰數(shù)據(jù)存儲裝置中的密鑰數(shù)據(jù)組,加密處理由塊產(chǎn)生步驟輸出的一個輸入塊以便在對于輸入塊的加密處理期間產(chǎn)生一個中間塊并且產(chǎn)生一個輸出塊作為對于該輸入塊的加密處理的結(jié)果。
全文摘要
提供一個加密處理設(shè)備,利用替換表數(shù)據(jù)加密地處理輸入數(shù)據(jù)以便產(chǎn)生輸出數(shù)據(jù)。一個存儲單元存儲(2^N)組替換數(shù)據(jù),每組替換數(shù)據(jù)具有預(yù)定個數(shù)的比特,此處N是一個不小于2的整數(shù)。一個劃分單元于將(N*M)比特長的輸入數(shù)據(jù)分成M組N比特子數(shù)據(jù),此處M是一個不小于2的整數(shù)。一個替換單元接收一個輸入,它是下面任意之一:M組N比特子數(shù)據(jù);和通過在M組N比特子數(shù)據(jù)上執(zhí)行合并處理產(chǎn)生的至少一組N比特輸入合并數(shù)據(jù),對于N個輸入比特的每個在存儲單元中指定(2^N)組替換數(shù)據(jù)之一,并且輸出對于每個N輸入比特指定的該組替換數(shù)據(jù)。一個固定變換執(zhí)行單元在從該替換單元輸出的至少一組替換數(shù)據(jù)上執(zhí)行多個不同的固定變換,以便產(chǎn)生M組變換的數(shù)據(jù),每個變換的數(shù)據(jù)具有預(yù)定個數(shù)的比特。一個輸出數(shù)據(jù)產(chǎn)生單元根據(jù)由固定變換執(zhí)行裝置產(chǎn)生的M組變換的數(shù)據(jù)產(chǎn)生(N*M)比特長的輸出數(shù)據(jù)。
文檔編號H04L9/06GK1241751SQ9910801
公開日2000年1月19日 申請日期1999年4月27日 優(yōu)先權(quán)日1998年4月27日
發(fā)明者大森基司, 橫田薰 申請人:松下電器產(chǎn)業(yè)株式會社