- 相關(guān)推薦
一種新的實用安全加密標(biāo)準(zhǔn)算法——Camellia算法
摘要:介紹了NESSIE標(biāo)準(zhǔn)中的分組密碼算法——Camellia算法的加、解密過程,并對其在各種軟、硬件平臺上的性能進(jìn)行了比較,結(jié)果表明Camellia算法在各種平臺上均有著較高的效率。Camellia算法與其它技術(shù)相結(jié)合將在信息安全領(lǐng)域產(chǎn)生更廣泛的應(yīng)用。關(guān)鍵詞:NESSIE 分組密碼 Camellia 算法 加密
繼2000年10月美國推出二十一世紀(jì)高級數(shù)據(jù)加密標(biāo)準(zhǔn)AES后,2003年2月歐洲最新一代的安全標(biāo)準(zhǔn)NESSIE(New European Schemes for Signatures、Integrity and Encryption)出臺。NESSIE是歐洲IST(Information Society Technologies)委員會計劃的一個項目。Camellia算法以其在各種軟件和硬件平臺上的高效率這一顯著特點成為NESSIE標(biāo)準(zhǔn)中兩個128比特分組密碼算法之一(另一個為美國的AES算法)。
Camellia算法由NTT和Mitsubishi Electric Corporation聯(lián)合開發(fā)。作為歐洲新一代的加密標(biāo)準(zhǔn),它具有較強的安全性,能夠抵抗差分和線性密碼分析等已知的攻擊。與AES算法相比,Camellia算法在各種軟硬件平臺上表現(xiàn)出與之相當(dāng)?shù)募用芩俣。除了在各種軟件和硬件平臺上的高效性這一顯著特點,它的另外一個特點是針對小規(guī)模硬件平臺的設(shè)計。整個算法的硬件執(zhí)行過程包括加密、解密和密鑰擴展三部分,只需占用8.12K 0.18μm COMS工藝ASIC的庫門邏輯。這在現(xiàn)有128比特分組密碼中是最小的。
1 Camellia算法的組成
Camellia算法支持128比特的分組長度,128、192和256比特的密鑰與AES的接口相同。本文以128比特密鑰為例對Camellia算法進(jìn)行詳細(xì)介紹。
Camellia算法128比特密鑰的加、解密過程共有18輪,采用Feistel結(jié)構(gòu),加、解密過程完全相同,只是子密鑰注入順序相反。而且密鑰擴展過程和加、解密過程使用相同的部件。這使得Camellia算法不論是在軟件平臺還是硬件平臺只需更小的規(guī)模和更小的存儲即可。
(1)Camellia算法所采用的符號列表及其含義
B 8比特向量 W 32比特向量
L 64比特向量 Q 128比特向量
x?n? 比特向量
xL 向量x的左半部分 xR 向量x的右半部分
<<< 比特循環(huán)左移 || 兩個操作數(shù)的連接
? 比特的異或操作 x 比特位取補操作
∪ 比特位的或操作 ∩ 比特位的與操作
(2)Camellia算法所采用的變量列表及其含義
M?128? 128比特明文組 C?128? 128比特密文組
K 主密鑰 kwt?64?? ku?64?? klv?64?
子密鑰
(3)Camellia算法所采用的變換函數(shù)
·F變換
F變換(見式(1))是Camellia算法中最主要的部件之一,而且F變換被加、解密過程和密鑰擴展過程所共用(128比特密鑰的加、解密各用18次,密鑰擴展用4次)。Camellia算法的F變換在設(shè)計時采用1輪的SPN(Substitution Permutation Network),包括一個P變換(線性)和一個S變換(非線性)。在Feistel型密碼使用一輪SPN作輪函數(shù)時,對更高階的差分和線性特性概率的理論評估變得更加復(fù)雜,在相同安全水平下的運行速度有所提高。
(范文先生網(wǎng)www.panasonaic.com收集整理)
·P變換
Camellia算法的P變換(見式(2))是一個線性變換。為了通信中軟、硬件實現(xiàn)的高效性,它適合采用異或運算,并且其安全性能足以抵抗差分和線性密碼分析。其在32位處理器、高端智能卡上的應(yīng)用,跟在8位處理器上一樣。
·S變換
Camellia算法采用的S盒(見式(3))是一個GF(28)上的可逆變換,它加強了算法的安全性并且適用于小硬件設(shè)計。眾所周知,GF(28)上函數(shù)的最大差分概率的最小值被證明為2-6,最大線性概率的最小值推測為2-6。Camellia算法選擇GF(28)上能夠獲得最好的差分和線性概率的可逆函數(shù)作S盒,而且S盒每個輸出比特具有高階布爾多項式,使得對Camellia進(jìn)行高階差分攻擊是困難的。S盒在GF(28)上輸入、輸出相關(guān)函數(shù)上的復(fù)雜表達(dá)式,使得插入攻擊對Camellia無效。
S:L→L
(l'1(8),l'1(8),l'1(8),l'1(8),l'1(8),l'1(8),l'1(8),l'1(8)→
*s1(l'1(8)),s2(l'2(8)),s3(l'3(8)),s4('4(8)),s2(l'5(8)),s3(l'6(8)),
s4(l'7(8),s1(l'8(l8(8)))
其中, s2:y(8)=s1(x(8))=h(g(f(0xC5+x(8))))+0x6E
s2:Y(8)=s2(x(8))=s1(x(8))<<<1 (3)?
s3:y(8)=s3(x(8))=s1(x(8))>>>1
s4:y(8)=s4(x(8))=s1(x(8))<<<1?
算法中構(gòu)造了四個不同的S盒,提高了Camellia算法抵抗階段差分攻擊的安全性。為了在小硬件上設(shè)計實現(xiàn),GF(28)上的元素可以表示成系數(shù)為GF(24)上的多項式。這樣,在實現(xiàn)S盒時,只需運用子域GF(24)上很少的操作。s1變換中所采用的f、h、g函數(shù)分別如(4)、(5)、(6)式所示。
(b1,b2,b3,b4,b5,b6,b7,b8)=g(a1,a2,a3,a4,a5,a6,a7,a8)
其中,(b8+b7α+b6α2+b5α3)+(b4+b3α+b2α2+b1α3)β
=1/((a8+a7α+a6α2+a5α3)+(a4+a3α+a2α2+a1α3))(6)
規(guī)定(6)式中GF(2的8次方)上運算=1/0,β是GF(2的8次方)上方程x8+x6+x5+x3+1=0的根,a=β238=β6+β5+β3+β2是GF(2的4次方)上方程x4+x+1=0的根。當(dāng)然根據(jù)性能要求,在具體實現(xiàn)加密算法時,S盒的實現(xiàn)電路也可以直接查表的方式進(jìn)行。
·FL/FL-1變換
Camellia算法每六圈加入一次FL/FL-1變換,用來打亂整個算法的規(guī)律性。加入FL/FL-1變換的另一個好處是可以抵抗未知的密碼攻擊方法,而且加入FL/FL-1變換并不影響Feistel結(jié)構(gòu)加、解密過程相同。
FL:L×L→L
(XL(32)||XR(32),klL(32)||klR(32)→?(7)
(YR(32)∪klR(32),YL(32)||((XL(32)∩klL(32)??<<<1)+YR(32)
FL-1:L×L→L
(YL(32)||YR(32),klL(32)||klR(32)→ ?(8)
(YR(32)∪klR(32),YL(32)||((XL(32)∩klL(32)??<<<1)+YR(32)
2 Camellia算法的加、解密及密鑰擴展實現(xiàn)過程
(1)加、解密過程
Camellia算法的整個加密過程有18輪Feistel結(jié)構(gòu),在第6輪和第12輪之后加入了FL/FL-1變換層,用來打亂算法的規(guī)律性,并且在第1輪之前和最后1輪之后使用了128比特的異或操作。解密過程與加密過程完全相同,只是圈密鑰注入順序與加密相反。128比特密鑰Camellia算法的加密過程如圖1所示。
(2)密鑰擴展
Camellia算法的密鑰擴展遵循了嚴(yán)格的設(shè)計準(zhǔn)則,如實現(xiàn)簡單且與加、解密過程共用部件,密鑰配置時間小于加密時間,支持在線密鑰生成,沒有等效密鑰,能夠抵抗相關(guān)密鑰攻擊和滑動攻擊等。整個過程只需通過三個中間變量,KL(128)=K(128),K(128)=0?KA的簡單移位即可得到子密鑰kwt(64)(t=1,…,4),ku(64)(u=1,…,18)和klv(64)(v=1,…,4),且中間生成過程與加密過程共用了部件F(如圖1、2所示)。
3 Camellia算法的安全性
設(shè)計者用差分?jǐn)U散概率和線性相關(guān)概率的保守上界證明了任何含SPN網(wǎng)絡(luò)的十六圈Camellia密碼對差分密碼分析和線性密碼分析都是安全的;此外,通過對活動S盒的計數(shù)說明十二圈Camellia中沒有概率大于2-128的差分特征和線性特征;帶或不帶FL層的十圈Camellia都具有偽隨機置換特性,能夠抵抗截斷差分攻擊和線性密碼分析;設(shè)計者還聲稱Camellia能夠抵抗不可能差分攻擊、Boomerang攻擊、高階差分攻擊、相關(guān)密鑰攻擊、插入攻擊、Slide攻擊、線性和攻擊及Square攻擊。在密鑰的安全性上,一方面不存在等效密鑰;另一方面,子密鑰來自主密鑰的加密結(jié)果KA和KB,改變主密鑰并不能獲得預(yù)想的KA和KB,反之亦然,因而無法控制和預(yù)測子密鑰之間的關(guān)系,從而相關(guān)密鑰攻擊難以成功。由于密鑰長度不少于128比特,以當(dāng)前的計算能力還無法對Camellia成功實施諸如密鑰窮舉搜索攻擊、時間存儲權(quán)衡攻擊、字典攻擊和密鑰匹配等類型的強力攻擊。
4 Camellia算法在各種平臺上的性能比較
評測一個分組密碼的好壞,除了要求其具有高的安全性外,還要求算法在應(yīng)用平臺上實現(xiàn)簡單。Camellia算法在設(shè)計時充分考慮到了這一點,下面給出其在各種平臺上的性能參數(shù)。評測算法在軟件平臺上實現(xiàn)性能時,首要考慮其速度,其次還要看算法實現(xiàn)時所需的存儲空間,表1前半部分給出了Camellia算法在常用的32位處理器上各種軟件平臺的實現(xiàn)性能。高的加密速度和低的存儲需求,表明Camellia算法可以有效地應(yīng)用于各種軟件系統(tǒng)中。從表1后半部分可以看出Camellia算法在高端和低端的智能卡平臺上同樣有著良好的性能;由于Camellia算法的密鑰擴展與加、解密過程有共用部分,所以其硬件平臺所需的芯片面積大大減少,降低了硬件成本,便于推廣應(yīng)用,詳細(xì)參數(shù)見表2。
表1 Camellia算法在軟件和智能卡平臺上的性能
10.22msec 32bytes 990bytes Z80 5MHz Assembly 35951
7.19msec 106bytes 1698bytes MC68HC705 B16 2.1MHz Assembly 9900
4.71msec 208bytes \
表2 Camellia算法在硬件平臺上的性能
環(huán) 境 設(shè)計Lab 速度 芯片面積 加、解密 單元 合計 ASIC Unrolled Mitsubishi0.18μm 2785.00Mbps Kgate 244.90 Loop Mitsubishi0.18μm 1881.25Mbps Kgate 44.30 FPGA Unrolled Xilinx VirtexE 401.89Mbps Slice 9426 Loop Xilinx VirtexE 227.42Mbps Slice 1780從本文可以看出,分組密碼加密算法發(fā)展到今天,不論是從安全性還是從實用性的角度都越來越強。NESSIE標(biāo)準(zhǔn)中的Camellia加密算法充分考慮到了各種因素,既保證了算法的安全性又考慮到其在各種平臺上的實現(xiàn)效率,尤其是針對小硬件的設(shè)計思想,使其有著廣泛的應(yīng)用前景。
【一種新的安全加密標(biāo)準(zhǔn)算法——Camellia算法】相關(guān)文章:
一種基于比特表的實時多任務(wù)新調(diào)度算法08-06
一種基于KEELOQ的改進(jìn)加密算法及其在單片機中的實現(xiàn)技術(shù)08-06
藍(lán)牙的信息安全機制及密鑰算法改進(jìn)08-06
加、減法的簡便算法08-16
一種基于“陷門收縮”原理的公鑰算法08-06
對算法多樣化的思考08-17