《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 一種新的實(shí)用安全加密標(biāo)準(zhǔn)算法——Camellia算法

一種新的實(shí)用安全加密標(biāo)準(zhǔn)算法——Camellia算法

2008-08-06
作者:劉景偉, 韋寶典, 孫 蓉, 王

  摘? 要: 介紹了NESSIE標(biāo)準(zhǔn)中的分組密碼" title="分組密碼">分組密碼算法——Camellia算法的加、解密過(guò)程,并對(duì)其在各種軟、硬件平臺(tái)" title="硬件平臺(tái)">硬件平臺(tái)上的性能進(jìn)行了比較,結(jié)果表明Camellia算法在各種平臺(tái)上均有著較高的效率。Camellia算法與其它技術(shù)相結(jié)合將在信息安全領(lǐng)域產(chǎn)生更廣泛的應(yīng)用。

  關(guān)鍵詞: NESSIE? 分組密碼? Camellia算法

?

  繼2000年10月美國(guó)推出二十一世紀(jì)高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)AES后,2003年2月歐洲最新一代的安全標(biāo)準(zhǔn)NESSIE[1](New European Schemes for Signatures、Integrity and Encryption)出臺(tái)。NESSIE是歐洲IST(Information Society Technologies)委員會(huì)計(jì)劃的一個(gè)項(xiàng)目。Camellia算法以其在各種軟件和硬件平臺(tái)上的高效率這一顯著特點(diǎn)成為NESSIE標(biāo)準(zhǔn)中兩個(gè)128比特分組密碼算法之一(另一個(gè)為美國(guó)的AES算法)。

  Camellia算法由NTT和Mitsubishi Electric Corporation聯(lián)合開(kāi)發(fā)。作為歐洲新一代的加密標(biāo)準(zhǔn),它具有較強(qiáng)的安全性,能夠抵抗差分" title="差分">差分和線性密碼分析等已知的攻擊。與AES算法相比,Camellia算法在各種軟硬件平臺(tái)上表現(xiàn)出與之相當(dāng)?shù)募用芩俣?。除了在各種軟件和硬件平臺(tái)上的高效性這一顯著特點(diǎn),它的另外一個(gè)特點(diǎn)是針對(duì)小規(guī)模硬件平臺(tái)的設(shè)計(jì)。整個(gè)算法的硬件執(zhí)行過(guò)程包括加密、解密和密鑰擴(kuò)展三部分,只需占用8.12K 0.18μm COMS工藝ASIC的庫(kù)門(mén)邏輯。這在現(xiàn)有128比特分組密碼中是最小的。

1 Camellia算法的組成

  Camellia算法支持128比特的分組長(zhǎng)度,128、192和256比特的密鑰與AES的接口相同。本文以128比特密鑰為例對(duì)Camellia算法進(jìn)行詳細(xì)介紹。

  Camellia算法128比特密鑰的加、解密過(guò)程共有18輪,采用Feistel結(jié)構(gòu),加、解密過(guò)程完全相同,只是子密鑰注入順序相反。而且密鑰擴(kuò)展過(guò)程和加、解密過(guò)程使用相同的部件。這使得Camellia算法不論是在軟件平臺(tái)" title="軟件平臺(tái)">軟件平臺(tái)還是硬件平臺(tái)只需更小的規(guī)模和更小的存儲(chǔ)即可。

  (1)Camellia算法所采用的符號(hào)列表及其含義

  ??????

  

  (3)Camellia算法所采用的變換函數(shù)

  ·F變換

  F變換(見(jiàn)式(1))是Camellia算法中最主要的部件之一,而且F變換被加、解密過(guò)程和密鑰擴(kuò)展過(guò)程所共用(128  比特密鑰的加、解密各用18次,密鑰擴(kuò)展用4次)。Camellia算法的F變換在設(shè)計(jì)時(shí)采用1輪的SPN(Substitution Permutation Network),包括一個(gè)P變換(線性)和一個(gè)S變換(非線性)。在Feistel型密碼使用一輪SPN作輪函數(shù)時(shí),對(duì)更高階" title="高階">高階的差分和線性特性概率的理論評(píng)估變得更加復(fù)雜,在相同安全水平下的運(yùn)行速度有所提高。

  

  ·P變換

  Camellia算法的P變換(見(jiàn)式(2))是一個(gè)線性變換。為了通信中軟、硬件實(shí)現(xiàn)的高效性,它適合采用異或運(yùn)算,并且其安全性能足以抵抗差分和線性密碼分析。其在32位處理器、高端智能卡上的應(yīng)用,跟在8位處理器上一樣。

  

?????? ·S變換

  Camellia算法采用的S盒(見(jiàn)式(3))是一個(gè)GF(28)上的可逆變換,它加強(qiáng)了算法的安全性并且適用于小硬件設(shè)計(jì)。眾所周知,GF(28)上函數(shù)的最大差分概率的最小值被證明為2-6,最大線性概率的最小值推測(cè)為2-6。Camellia算法選擇GF(28)上能夠獲得最好的差分和線性概率的可逆函數(shù)作S盒,而且S盒每個(gè)輸出比特具有高階布爾多項(xiàng)式,使得對(duì)Camellia進(jìn)行高階差分攻擊是困難的。S盒在GF(28)上輸入、輸出相關(guān)函數(shù)上的復(fù)雜表達(dá)式,使得插入攻擊對(duì)Camellia無(wú)效。

  

  算法中構(gòu)造了四個(gè)不同的S盒,提高了Camellia算法抵抗階段差分攻擊的安全性。為了在小硬件上設(shè)計(jì)實(shí)現(xiàn),GF(28)上的元素可以表示成系數(shù)為GF(24)上的多項(xiàng)式。這樣,在實(shí)現(xiàn)S盒時(shí),只需運(yùn)用子域GF(24)上很少的操作。s1變換中所采用的f、h、g函數(shù)分別如(4)、(5)、(6)式所示。

  

  規(guī)定(6)式中GF(28)上運(yùn)算,β是GF(28)上方程x8+x6+x5+x3+1=0的根,a=β2386532是GF(24)上方程x4+x+1=0的根。當(dāng)然根據(jù)性能要求,在具體實(shí)現(xiàn)加密算法時(shí),S盒的實(shí)現(xiàn)電路也可以直接查表的方式進(jìn)行。

  ·FL/FL-1變換

  Camellia算法每六圈加入一次FL/FL-1變換,用來(lái)打亂整個(gè)算法的規(guī)律性。加入FL/FL-1變換的另一個(gè)好處是可以抵抗未知的密碼攻擊方法,而且加入FL/FL-1變換并不影響Feistel結(jié)構(gòu)加、解密過(guò)程相同。

  

2 Camellia算法的加、解密及密鑰擴(kuò)展實(shí)現(xiàn)過(guò)程

  (1)加、解密過(guò)程

  Camellia算法的整個(gè)加密過(guò)程有18輪Feistel結(jié)構(gòu),在第6輪和第12輪之后加入了FL/FL-1變換層,用來(lái)打亂算法的規(guī)律性,并且在第1輪之前和最后1輪之后使用了128比特的異或操作。解密過(guò)程與加密過(guò)程完全相同,只是圈密鑰注入順序與加密相反。128比特密鑰Camellia算法的加密過(guò)程如圖1所示。

?

  (2)密鑰擴(kuò)展

  Camellia算法的密鑰擴(kuò)展遵循了嚴(yán)格的設(shè)計(jì)準(zhǔn)則,如實(shí)現(xiàn)簡(jiǎn)單且與加、解密過(guò)程共用部件,密鑰配置時(shí)間小于加密時(shí)間,支持在線密鑰生成,沒(méi)有等效密鑰,能夠抵抗相關(guān)密鑰攻擊和滑動(dòng)攻擊等。整個(gè)過(guò)程只需通過(guò)三個(gè)中間變量,KL(128)=K(128),K(128)=0,KA的簡(jiǎn)單移位即可得到子密鑰kwt(64)(t=1,…,4),ku(64)(u=1,…,18)和klv(64)(v=1,…,4)[2],且中間生成過(guò)程與加密過(guò)程共用了部件F(如圖1、2所示)。

?

3 Camellia算法的安全性

  設(shè)計(jì)者用差分?jǐn)U散概率和線性相關(guān)概率的保守上界證明了任何含SPN網(wǎng)絡(luò)的十六圈Camellia密碼對(duì)差分密碼分析和線性密碼分析都是安全的;此外,通過(guò)對(duì)活動(dòng)S盒的計(jì)數(shù)說(shuō)明十二圈Camellia中沒(méi)有概率大于2-128的差分特征和線性特征;帶或不帶FL層的十圈Camellia都具有偽隨機(jī)置換特性,能夠抵抗截?cái)嗖罘止艉途€性密碼分析;設(shè)計(jì)者還聲稱Camellia能夠抵抗不可能差分攻擊、Boomerang攻擊、高階差分攻擊、相關(guān)密鑰攻擊、插入攻擊、Slide攻擊、線性和攻擊及Square攻擊。在密鑰的安全性上,一方面不存在等效密鑰;另一方面,子密鑰來(lái)自主密鑰的加密結(jié)果KA和KB,改變主密鑰并不能獲得預(yù)想的KA和KB,反之亦然,因而無(wú)法控制和預(yù)測(cè)子密鑰之間的關(guān)系,從而相關(guān)密鑰攻擊難以成功。由于密鑰長(zhǎng)度不少于128比特,以當(dāng)前的計(jì)算能力還無(wú)法對(duì)Camellia成功實(shí)施諸如密鑰窮舉搜索攻擊、時(shí)間存儲(chǔ)權(quán)衡攻擊、字典攻擊和密鑰匹配等類型的強(qiáng)力攻擊。

4 Camellia算法在各種平臺(tái)上的性能比較

  評(píng)測(cè)一個(gè)分組密碼的好壞,除了要求其具有高的安全性外,還要求算法在應(yīng)用平臺(tái)上實(shí)現(xiàn)簡(jiǎn)單。Camellia算法在設(shè)計(jì)時(shí)充分考慮到了這一點(diǎn),下面給出其在各種平臺(tái)上的性能參數(shù)[1]。評(píng)測(cè)算法在軟件平臺(tái)上實(shí)現(xiàn)性能時(shí),首要考慮其速度,其次還要看算法實(shí)現(xiàn)時(shí)所需的存儲(chǔ)空間,表1前半部分給出了Camellia算法在常用的32位處理器上各種軟件平臺(tái)的實(shí)現(xiàn)性能。高的加密速度和低的存儲(chǔ)需求,表明Camellia算法可以有效地應(yīng)用于各種軟件系統(tǒng)中。從表1后半部分可以看出Camellia算法在高端和低端的智能卡平臺(tái)上同樣有著良好的性能;由于Camellia算法的密鑰擴(kuò)展與加、解密過(guò)程有共用部分,所以其硬件平臺(tái)所需的芯片面積大大減少,降低了硬件成本,便于推廣應(yīng)用,詳細(xì)參數(shù)見(jiàn)表2。

?

?

  從本文可以看出,分組密碼加密算法發(fā)展到今天,不論是從安全性還是從實(shí)用性的角度都越來(lái)越強(qiáng)。NESSIE標(biāo)準(zhǔn)中的Camellia加密算法充分考慮到了各種因素,既保證了算法的安全性又考慮到其在各種平臺(tái)上的實(shí)現(xiàn)效率,尤其是針對(duì)小硬件的設(shè)計(jì)思想,使其有著廣泛的應(yīng)用前景。

?

參考文獻(xiàn)

1 Kazumaro Aoki, Tetsuya Ichikawa, etc. Camellia: A 128-Bit Block Cipher Suitable for Multiple Platforms.https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions/Camellia.zip. 2001.9.26.

2 Kazumaro Aoki, Tetsuya Ichikawa, etc. Specification of?Camellia——a 128-bit Block Cipher. https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions/Camellia.zip. 2000.3.10.

3 Nessie security report. available at https://www.cosic.esat.kuleuven.ac.be/nessie/deliverables/D20-v2.pdf. 2003.2.19

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。