李 浪, 郭 影, 劉波濤, 歐 雨
1.衡陽師范學(xué)院計算機科學(xué)與技術(shù)學(xué)院, 衡陽 421002
2.智能信息處理與應(yīng)用湖南省重點實驗室, 衡陽 421002
目前, 無線傳感器網(wǎng)絡(luò)與射頻標簽技術(shù)的應(yīng)用非常廣泛, 這些器件制造成本低, 且網(wǎng)絡(luò)健壯性與自組織性強, 適用性廣泛, 涉及到人們生活的各個方面.一個典型的RFID 標簽具有1000–10 000 個標準門電路, 但是用于保障信息安全分組密碼算法僅能占用200–2000 個門電路.一般采用兩種方案來降低面積資源: 一種是對傳統(tǒng)分組密碼進行不斷地優(yōu)化和提高硬件工藝, 其中已有不少學(xué)者對AES 密碼不斷地優(yōu)化實現(xiàn)[1–4]; 另一種是設(shè)計低資源面積、高效的輕量級分組密碼.輕量級分組密碼最近幾年引起密碼學(xué)者的高度重視.
香農(nóng)提出的擴散和混淆概念奠定了密碼算法的基本安全性[5].一個分組密碼算法的擴散層通常是通過一個線性擴散矩陣實現(xiàn), 通過線性運算將輸入向量轉(zhuǎn)換成輸出向量[6].但是在有限的計算資源下, 找到安全性與執(zhí)行效率的最佳平衡點是困難的.混淆則是盡量使密文與密鑰之間的統(tǒng)計關(guān)系復(fù)雜化, 使用復(fù)雜的非線性變換可以達到比較好的混淆效果.目前已提出了一些輕量級分組密碼, 例如DESL/DESX/DESXL[7]、Hummingbird[8]、Magpie[9]、QTL[10]、LBlock[5]、KLEIN[11]、LED[12]、PRESENT[13]、TWINE[14]等.PRESENT 在CHES 2007 上提出, 由于其簡潔的密碼結(jié)構(gòu)、良好的硬件性能和安全性, 引起了廣泛關(guān)注.PRESENT 硬件實現(xiàn)高效, 因為其擴散層采用基于比特的排列置換, 這在硬件中只需要連線實現(xiàn).2012年, PRESENT 被采納為ISO/IEC 輕量級密碼標準.許多輕量級分組密碼, 例如PRESENT、KATAN/KTANTAN[15]和Hummingbird, 在硬件方面的實現(xiàn)效率都很高, 但軟件實現(xiàn)性能不佳.正如文獻[13,16–18]中指出的密碼算法也需要很高的軟件實現(xiàn)性能, 與面向硬件的設(shè)計相比, 軟件實現(xiàn)具有更好的靈活性和更低的成本.
本文結(jié)構(gòu)如下安排.第2 節(jié)對HBcipher 密碼算法進行設(shè)計與實現(xiàn), 第3 節(jié)從各個層次介紹HBcipher算法的設(shè)計原理, 第4 節(jié)用多種分析方法對算法進行安全性評估, 第5 節(jié)描述算法的硬件實現(xiàn)所占資源以及各算法所占資源對比, 第6 節(jié)描述算法軟件實現(xiàn)性能以及對比, 第7 節(jié)是總結(jié).
在本節(jié)中, 我們詳細敘述HBcipher 的結(jié)構(gòu)和各個組件的設(shè)計方法與實現(xiàn).
HBcipher 分組長度為64 位, 密鑰長度設(shè)計為64 位和128 位兩種.當密鑰長度為64 位時, 迭代輪數(shù)為32, 記為HBcipher-64; 當密鑰長度為128 位時, 迭代輪數(shù)為40, 記為HBcipher-128; 輪函數(shù)采用三組SPN 結(jié)構(gòu)的F 函數(shù), 如圖1 所示.令P =L ∥R 表示64 位明文.
圖1 HBcipher 加密結(jié)構(gòu)圖Figure 1 Encryption structure of HBcipher
動態(tài)輪密鑰加:HBcipher 算法選取輪數(shù)作為輪運算控制信號, 輸入64 位明文P 與64 位密鑰K(或輸入128 位密鑰K, 但每一輪僅選取輪密鑰前64 位參與動態(tài)輪密鑰加運算), 64 位密鑰K 以4×16 的矩陣形式表示, 矩陣左邊8 列記為
右邊8 列記為
(Nr 表示輪數(shù)), 即所述:
其中, j =0,1,2,3, Nr=1,2,··· ,32.當輪運算控制信號count 為奇數(shù)時:
當輪運算控制信號count 為偶數(shù)時:
輪函數(shù):HBcipher 算法輪函數(shù)采用三組SPN 結(jié)構(gòu)的F 函數(shù), 分別為F1、F2、F3.F1包括輪密鑰加、S 盒替換和行移位, 如圖2 數(shù)據(jù)流程圖所示; F2包含輪密鑰加、S 盒替換和輪常數(shù)加, 如圖3 數(shù)據(jù)流程圖所示; F3僅包括P2置換, 如圖4 數(shù)據(jù)流程圖所示.
圖2 F1 函數(shù)流程圖Figure 2 Flowchart of F1 function
圖3 F2 函數(shù)流程圖Figure 3 Flowchart of F2 function
圖4 F3 函數(shù)流程圖Figure 4 Flowchart of F3 function
S 盒置換:在HBcipher 算法非線性層設(shè)計中, 引用PRESENT 算法加密的S 盒, 主要用于函數(shù)變換和密鑰更新模塊中, S 盒元素如表1 所示.
表1 S 盒元素值Table 1 Value of S-box
行移位變換:對于4×8 的矩陣, 矩陣每一行左循環(huán)不同的比特, 第一行循環(huán)左移3 個比特, 第二行循環(huán)左移5 個比特, 第三行循環(huán)左移6 個比特, 第四行循環(huán)左移7 個比特, 如圖5 所示.
圖5 行移位操作示意圖Figure 5 Diagram of ShiftRow
常數(shù)加:在加密第1、5、9、13、17、21、25、29 (33、37)輪時, 輪常數(shù)count 與數(shù)據(jù)高8 位進行常數(shù)加運算; 在加密第2、6、10、14、18、22、26、30 (34、38)輪時, 輪常數(shù)count 與數(shù)據(jù)高9–16 位進行常數(shù)加運算; 在加密第3、7、11、15、19、23、27、31 (35、39)輪時, 輪常數(shù)count 與數(shù)據(jù)低9–16位進行常數(shù)加運算; 在加密第4、8、12、16、20、24、28、32 (36、40)輪時, 輪常數(shù)count 與數(shù)據(jù)低8位進行常數(shù)加運算, 常數(shù)加變換操作如圖6.
圖6 常數(shù)加變換操作Figure 6 Diagram of AddConstants
P2 置換:經(jīng)過F1、F2變換的4×16 狀態(tài)矩陣如圖7 所示.
圖7 P2 置換示意圖Figure 7 Diagram of P2
區(qū)域①對稱映射到區(qū)域②, 原區(qū)域②則以直角頂點順時針旋轉(zhuǎn)90 度對稱映射到區(qū)域③, 以此類推, 原區(qū)域⑧以直角頂點逆時針旋轉(zhuǎn)90 度對稱映射到原區(qū)域①, 而區(qū)域A 對稱映射到區(qū)域D, 區(qū)域B 則對稱映射到區(qū)域A, 同理, 區(qū)域C 對稱映射到區(qū)域B, 區(qū)域D 對稱映射到區(qū)域C, 經(jīng)過上述操作后所形成的P2置換元素表格如圖8 所示.
圖8 P2 置換表Figure 8 Permutation table of P2
白化密鑰加:為避免最后一輪完全暴露給攻擊者, 對各種攻擊提供方便, 我們在最后一輪P2置換輸出后, 增加白化密鑰加.HBcipher-128 算法中選取前64 位初始密鑰進行白化密鑰加運算.
HBcipher 有64 和128 位的兩種密鑰更新模式.
64 位密鑰:將用戶提供的64-bit 密鑰K =k0k1···k62k63存儲在64-bit 密鑰寄存器中:
密鑰寄存器更新方式如下:
(1)第0 列和第15 列進行S 盒置換.
(2)64 位的密鑰經(jīng)過P1置換后第i 列移動到P1(i)列, P1置換表元素如表2, 如下式(1)所示:
表2 HBcipher-64 P1 置換表Table 2 Permutation table of P1
(3)每行都循環(huán)左移不同的單位, 第一行循環(huán)左移7 位, 第二行循環(huán)左移9 位, 第三行循環(huán)左移11 位,第四行循環(huán)左移13 位.
128 位密鑰:將用戶提供的128-bit 密鑰K =k0k1···k126k127存儲在128-bit 密鑰寄存器中.
在加密第count(count=1,2,··· ,40)輪時, 選取前四行作為輪密鑰, 密鑰寄存器更新方式如下:
(1)第0 列和第15 列進行S 盒置換.
(2)每一行都循環(huán)左移不同的單位且循環(huán)上移1 行, 具體移位方式如圖9 所示.
圖9 移位示意圖Figure 9 Diagram of shift
HBcipher 算法是基于SPN 結(jié)構(gòu)的輕量級密碼算法, 其解密過程與加密過程相反, 通過把輸入密文和密鑰由輪函數(shù)經(jīng)Nr 輪迭代來實現(xiàn), 解密輪密鑰是加密輪密鑰的逆序使用.其解密過程具體由白化密鑰運算、P2逆置換、行移位逆變換、輪常數(shù)加逆變換、S 盒逆變換、輪密鑰加逆變換組成.以下將具體介紹各模塊.
白化密鑰運算:待解密數(shù)據(jù)與初始密鑰異或操作.
P2 逆置換:P2逆置換過程與HBcipher 算法加密過程相反, 逆置換表如圖10 所示.
行移位逆變換:解密過程的行移位逆變換與加密過程相反, 操作示意圖如圖11 所示.
輪常數(shù)加逆變換:解密過程的輪常數(shù)加變換與加密過程相反, 輪常數(shù)逆序使用.
S 盒逆變換:解密S 盒元素如表3 所示.
圖10 P2 置換表Figure 10 Permutation table of P2
圖11 行移位逆變換Figure 11 Diagram of inverse ShiftRow
表3 解密算法逆S 盒Table 3 Value of inverse S-box
HBcipher 是基于SPN 結(jié)構(gòu)的輕量級分組密碼算法, 輪函數(shù)采用3 組微型SPN 結(jié)構(gòu)函數(shù), 分別為F1、F2和F3.64 位的初始明文P 根據(jù)輪運算控制信號count 的奇偶性動態(tài)劃分成兩個32 位的數(shù)據(jù)塊并行執(zhí)行F1、F2函數(shù)后, 恢復(fù)64 位執(zhí)行F3, 得出密文.該種結(jié)構(gòu)模式下, 待加密數(shù)據(jù)根據(jù)算法輪運算控制信號奇偶性動態(tài)選擇更新后的子密鑰, 且每輪待加密數(shù)據(jù)劃分原則的不同相當于一次基于比特的位置換, 在保證了加密速度的前提下充分隱藏明文的統(tǒng)計特性, 提高算法抗統(tǒng)計分析能力.
在動態(tài)輪密鑰加操作中, 首先, 需要將輪子密鑰進行劃分兩部分與同時還對待加密數(shù)據(jù)進行劃分兩部分L 與R.在輪子密鑰與待加密密鑰的劃分過程實現(xiàn)操作, 相當于對子密鑰與待加密數(shù)據(jù)進行了移位操作.然后, 當輪運算控制信號count 為奇數(shù)時, 輪密鑰加操作為與當輪運算控制信號count 為偶數(shù)時, 輪密鑰加操作為與這種根據(jù)輪運算控制信號進行動態(tài)選擇的輪密鑰加與一般靜態(tài)的算法的輪密鑰加的操作相比, 更具有靈活性與安全性, 特別是抵抗自相似攻擊, 而動態(tài)輪密鑰加對于HBcipher 算法整體安全性影響, 本文第4 節(jié)對算法的安全性分析已證明.
密碼設(shè)計時不僅要硬件和軟件實現(xiàn)性能之間的平衡, 也要考慮硬件實現(xiàn)和算法安全性能之間的關(guān)系.雖然采用大S 盒可以實現(xiàn)更好的安全性, 但即使在軟件中, 大S 盒也需要高昂的存儲成本, 而且硬件實現(xiàn)要差得多; 另一方面, 太小的S 盒難以達到合適的安全性.我們觀察到門數(shù)隨S 盒的大小呈指數(shù)增長, 所以選取了目前最具有代表性的輕量級分組密碼PRESENT 的4×4 小S 盒, 做到硬件效率、軟件實現(xiàn)以及安全性能三者之間的折中.
在HBcipher 算法加密流程、密鑰更新以及輪函數(shù)的設(shè)計中使用了大量置換、移位等操作.在動態(tài)輪密鑰加操作中, 根據(jù)輪運算控制信號的奇偶性動態(tài)選擇子密鑰與待加密數(shù)據(jù)進行異或, F1函數(shù)中的行移位操作, F2函數(shù)中的常數(shù)加操作以及F3函數(shù)中的P2置換.為避免最后一輪完全暴露給攻擊者, 對各種攻擊提供方便, 我們在最后一輪P2置換輸出后, 增加白化密鑰加運算.使用這些變換和運算的目的主要有兩方面: 一是方便軟硬件實現(xiàn); 二是提高HBcipher 算法的抗攻擊強度, 這些變換在一定程度上具有快速擴散的作用, 隱藏了明文和密鑰信息、從而使明文與密鑰之間不具有統(tǒng)計特性.
在密碼學(xué)中, 雪崩效應(yīng)是指任意一組明文輸入, 隨機改變其中一個輸入位, 將導(dǎo)致至少有一半以上的輸出位發(fā)生改變.若某種分組密碼沒有顯示出一定程度的雪崩特性, 那么它可以被認為具有較差的隨機化特性, 而且密碼攻擊者可以利用輸出數(shù)據(jù)推測輸入數(shù)據(jù), 因此, 從加密算法的設(shè)計角度來說, 滿足雪崩效應(yīng)是充要條件, 為了測試HBcipher 算法是否滿足雪崩效應(yīng), 我們用兩個實驗進行驗證.
在實驗1 中, 固定一條64 位明文, 隨機選擇一條64 位初始密鑰進行加密得到初始密文, 將初始密鑰中各位按位取反, 得到64 條密鑰, 分別將64 條密鑰與固定明文進行加密得到64 條密文, 將64 條密文分別與初始密文進行異或操作, 統(tǒng)計每條異或結(jié)果中出現(xiàn)1 的次數(shù), 1 的次數(shù)代表了當改變其中一個輸入位時, 有多少輸出位發(fā)生改變, 實驗結(jié)果如圖12, 圖12 中1 的平均數(shù)值是32.3125, 大于明文輸入位數(shù)值的一半.
圖12 改變密鑰的雪崩效應(yīng)統(tǒng)計圖Figure 12 Statistical map of avalanche effect with changed key
在實驗2 中, 固定一條64 位密鑰, 隨機選擇一條64 位初始明文進行加密得到初始密文, 將初始明文中各位按位取反, 得到64 條明文, 分別將64 條明文與固定密鑰進行加密得到64 條密文, 將64 條密文分別與初始密文進行異或操作, 統(tǒng)計每條異或結(jié)果中出現(xiàn)1 的次數(shù), 1 的次數(shù)代表了當改變其中一個輸入位時, 有多少輸出位發(fā)生改變, 實驗結(jié)果如圖13, 圖13 中1 的平均數(shù)值是32.296 88, 大于明文輸入位數(shù)值的一半.
圖13 改變明文的雪崩效應(yīng)統(tǒng)計圖Figure 13 Statistical map of avalanche effect with changed plaintext
由圖12 和圖13 的統(tǒng)計結(jié)果可知, HBcipher 算法具有良好的雪崩性.
差分密碼分析方法是攻擊迭代型分組密碼最有效的方法之一, 也是衡量一個分組密碼安全性的重要指標之一.差分密碼分析的本質(zhì)就是研究差分在加密(解密)過程中的概率傳播特性.本小節(jié)主要介紹對HBcipher 算法加密差分密碼分析過程.
定義1迭代分組密碼的一條i 輪差分特征? = (β0,β1,··· ,βi?1,βi), 是指當輸入對(X,X?)的差分值滿足X ⊕X?= β0, 在i 輪加密過程中, 中間狀態(tài)(Yj,的差分值滿足Yj⊕= βj, 其中1ji.當i=1 時, 差分(α,β)和差分特征(β0,β1)概念統(tǒng)一, 表征輪函數(shù)的差分傳播特性.
定義2迭代分組密碼的一條i 輪差分(α,β)所對應(yīng)的概率DP(α,β), 是指在輸入X、輪密鑰K1,K2,··· ,Ki取值獨立且均勻的情況下, 當輸入對(X,X?)的差分值X ⊕X?= α, 經(jīng)過i 輪加密后,輸出對(Yi,的差分值滿足Yi⊕Y?i= β 的概率, 當i = 1 時, DP(α,β)表示輪函數(shù)的的差分傳播概率.
定義3迭代分組密碼的i 輪差分特征? = (β0,β1,··· ,βi?1,βi)所對應(yīng)的概率DP(?)是指在輸入X、輪密鑰K1,K2,··· ,Ki取值獨立且均勻的情況下, 當輸入對(X,X?)的差分值X ⊕X?=α, 經(jīng)過i輪加密后, 中間狀態(tài)(Yj,的差分值滿足Yj⊕= βj的概率, 其中0ji.在上述假設(shè)下, 差分特征概率等于各輪差分傳播路徑的乘積.
定義4給定兩條差分特征?1= (β0,β1,··· ,βs), ?2= (γ0,γ1,··· ,γt), 若βs= γ0, 則稱? =(β0,β1,··· ,βs,γ1,··· ,γt)為?1和?2的級聯(lián), 此時DP(?)=DP(?1)×DP(?2).
定義5若一條i 輪差分特征? = (β0,β1,··· ,βi?1,βi)滿足β0= βi, 則稱? 是一條i 輪迭代差分特征, 若? 是迭代差分特征, 則自身可進行級聯(lián).
定義6設(shè)m,n ∈Ν , 從到的非線性映射記為: S:給定α ∈定義INS(α,β)=x ∈:S(x ⊕α)⊕S(x)=β,NS(α,β)=#INS(α,β).
定義7考慮輪函數(shù)F 的一對輸入(X,X?), 若該輸入對導(dǎo)致某個S 盒的輸入差分非0, 則稱輸入對導(dǎo)致該S 盒活躍, 簡稱該S 盒為差分活躍S 盒.
圖14 500 條HBcipher 算法4 輪差分特征概率統(tǒng)計圖Figure 14 Probability statistics of 500 4-rounds differential characteristics of HBcipher algorithm
根據(jù)定義1 尋找差分特征, 給定輸入差分, 跟蹤輪函數(shù)迭代過程, 到達某個輸出差分, 這一過程即對應(yīng)一條差分特征.本文假定輸入差分值, 依據(jù)附錄B 表9 HBcipher 算法S 盒的差分分布表得到S 盒的輸出差分, 跟蹤HBcipher 算法輪函數(shù)的迭代過程, 到達第4 輪S 盒的輸出差分, 隨機截取500 條HBcipher 算法的4 輪差分特征, 得到3 條差分特征概率值, 如圖14 柱形圖所示, 其中56 條差分特征的概率值為2?36, 223 條差分特征的概率值為2?37, 221 條差分特征的概率值為2?38.當使用差分攻擊手段攻擊n-bit 分組密碼時, 在整個加密過程中必定只有極少輪數(shù)差分特征能大于21?n, 對于HBcipher 算法, 根據(jù)定義5 和6, 假設(shè)HBcipher 算法差分特征為迭代差分特征, 那么500 條HBcipher 算法32 輪差分特征上限為2(?36)×8= 2?288.這個差分概率非常小, 因此32 輪的HBcipher 算法具有足夠抵抗差分攻擊的能力.
定義8設(shè)X ∈{0,1}n, X 的線性掩碼定義為某個向量ΓX ∈{0,1}n, ΓX 和X 的內(nèi)積ΓX ·X 代表X 某些分量的線性組合.即
定義9迭代分組密碼的一條i 輪線性特征? = (β0,β1,··· ,βi)是指當輸入掩碼為β0, 在i 輪加密過程中, 中間狀態(tài)Yj的掩碼為βj, 其中1ji.
定義10迭代分組密碼的一條i 輪線性特征? = (β0,β1,··· ,βi)所對應(yīng)的線性概率LP(?)是指在輸入X、輪密鑰K1,K2,··· ,Ki取值獨立且均勻的情況下, 當輸入掩碼為β0, 在加密過程中, 中間狀態(tài)Yj的掩碼取值為βj的線性概率, 其中1ji.
定義11給定兩條線性特征?1= (β0,β1,··· ,βs), ?2= (γ0,γ1,··· ,γt), 若βs= γ0, 則稱? =(β0,β1,··· ,βs,γ0,γ1,··· ,γt)為?1和?2的級聯(lián), 此時LP(?)=LP(?1)×LP(?2).
定義12若一條i 輪線性特征?=(β0,β1,··· ,βi?1,βi)滿足β0=βi, 則稱? 是一條i 輪迭代線性特征, 若? 是迭代線性特征, 則自身可進行級聯(lián).
定義13設(shè)m,n ∈Ν, 從到的非線性映射記為: S:給定α ∈定義INS(α,β)= x ∈α·x=β·S(x),NS(α,β)= #INS(α,β).構(gòu)造2m×2n的表格: 以α (S 盒的輸入掩碼)為行指標遍歷β(S 盒的輸出掩碼)為列指標遍歷行列交錯項取值為NS(α,β)?2m?1.以上述方式構(gòu)造的表稱為線性逼近表.
HBcipher 算法S 盒線性逼近表如附錄B 表10 所示.
定義14在一條i 輪線性特征中? = (β0,β1,··· ,βi)中, 若第j 輪(ji)輸出掩碼βj, 導(dǎo)致某個S 盒的輸出掩碼非0, 則稱這條線性特征導(dǎo)致該S 盒活躍, 簡稱該S 盒是線性活躍S 盒.
根據(jù)定義尋找一條線性特征, 給定輸入掩碼, 跟蹤輪函數(shù)迭代過程, 到達某個輸出掩碼, 這一過程即對應(yīng)一條線性特征.本文假定S 盒輸入掩碼值, 根據(jù)附錄B 表10, S 盒線性逼近表得到輸出掩碼值, 跟蹤HBcipher 算法輪函數(shù)迭代過程到第4 輪S 盒輸出掩碼結(jié)束, 隨機截取500 條HBcipher 算法的4 輪線性特征, 得到2 條線性特征概率.如圖15 柱形圖所示, 其中224 條線性特征的概率值為?2?22, 276 條線性特征的概率值為2?22.根據(jù)定義11 與定義12, 假設(shè)HBcipher 算法線性特征具有迭代性, 那么HBcipher算法500 條32 輪線性特征概率上限為2(?22)×8= 2?196, 這個差分概率非常小, 因此32 輪的HBcipher算法具有足夠抵抗線性分析的能力.
圖15 500 條HBcipher 算法4 輪線性特征概率統(tǒng)計圖Figure 15 Probability statistics of 500 4-rounds linear characteristics of HBcipher algorithm
代數(shù)攻擊是把對密碼系統(tǒng)的攻擊問題轉(zhuǎn)化為求解與之相對應(yīng)的代數(shù)方程組, 由Courtois 和Pieprzyk在分析AES 時提出的[19].任意4-bit S 盒至少可以用21 個二次方程來表示, 所以整個密碼在n×8 個變量中有n×21 個二次方程(n 是整個加密算法和密鑰擴展中S 盒數(shù)量).在HBcipher-64 算法中我們有n = 32×16+64 = 576 個4-bit S 盒, 即在4608 個變量中有12 096 個方程.HBcipher-128 算法中有n=40×16+160=800 個S 盒, 即在6400 個變量中有16 800 個方程.文獻[19]采用工作因子來估計分組密碼上XSL 攻擊復(fù)雜度, 對于HBcipher-64, 本文據(jù)此估計如下:
這超出了窮舉搜索所需的264個操作, 從而HBcipher 算法是能夠抵抗代數(shù)攻擊.
相關(guān)密鑰攻擊是一種利用密鑰調(diào)度的弱點來進行分析的攻擊方法.在相關(guān)密鑰攻擊模型下, 攻擊者能夠通過某種方式獲得明文及其在某些未知密鑰下對應(yīng)的密文, 攻擊者雖然并不知道這些密鑰的具體取值,但可以了解或者選取這些密鑰之間的關(guān)系.密鑰擴展不同于輪函數(shù)中行移位的旋轉(zhuǎn)變換, 同時采用依據(jù)輪數(shù)控制迭代次數(shù)的方式, 由文獻[20]相關(guān)安全性證明可知HBcipher 的密碼特性能夠抵抗相關(guān)密鑰攻擊.
HBcipher 算法能高效地在硬件中實現(xiàn), 我們通過實驗計算了硬件實現(xiàn)所需要花費的資源.在Ubuntu 14.04 平臺上進行了仿真, 在Synopsys Design Compiler Version B-2008.09 進行綜合, 其中綜合工藝庫為SMIC 0.18m CMOS, 在綜合實驗結(jié)果當中, 用等效門數(shù)GE 來衡量面積資源, 1 GE 相當于一個雙向與非門.有限狀態(tài)機用于生成控制邏輯, 明文和密鑰通過多路復(fù)用器加載到每個寄存器中.然后在接下來的時鐘周期中, 數(shù)據(jù)從寄存器中讀出, 通過狀態(tài)和關(guān)鍵數(shù)據(jù)路徑并分別存回寄存器, 最后可以在64 位輸出中獲得密文.HBcipher-64 算法數(shù)據(jù)通路圖如圖16 所示, HBcipher-128 數(shù)據(jù)通路圖類似于HBcipher-64.
圖16 HBcipher-64 數(shù)據(jù)通路圖Figure 16 Data path diagram of HBcipher-64
加密算法HBcipher-64 存儲64 位明文需要384 GE, 密鑰異或需要174 GE, 且F2 中有一個8位的常數(shù)加運算, 由于算法選取輪數(shù)作為輪常數(shù)不需要花費寄存器, 所以該運算需要資源為27 GE.HBcipher-64 算法一個S 盒的實現(xiàn)資源需要24 GE, P 置換、以及行移位的硬件實現(xiàn)是通過連線操作, 從而不需要花費硬件資源.此外, 其它資源需要15.25 GE.HBcipher-128 存儲64 位明文需要384 GE, F1與F2中的兩個32 位密鑰加需要174 GE, 且F2中有一個8 位的常數(shù)加運算需要資源為27 GE, S 盒需要480 GE, 存儲128 位的密鑰需要576 GE, 此外, 其它資源需要15.25 GE.表4 列出了HBcipher-64 和HBcipher-128 的各層次加密所需資源及占比大小.HBcipher 算法解密逆運算跟加密運算硬件資源實現(xiàn)時, 具有相同的資源.
表4 HBcipher-64 和HBcipher-128 的各模塊所需資源及占比大小Table 4 Resource and scale of modules for HBcipher-64 and HBcipher-128
表5 列出了各算法硬件實現(xiàn)面積對比, 通過對比我們可以看到HBcipher 算法加密所需的實現(xiàn)面積與偏向軟件實現(xiàn)的RECTANGLE 算法相比, 其占用面積資源較小, 適合于資源受限的環(huán)境, HBcipher 算法解密性能與加密保持一致.
表5 各算法硬件實現(xiàn)面積對比Table 5 Area comparison of hardware implementation
目前大多數(shù)輕量級密碼算法都是面向硬件實現(xiàn)而設(shè)計的, 對于輕量級密碼算法實現(xiàn)性能的研究也多集中在硬件實現(xiàn)上, 對軟件實現(xiàn)的研究相對較少.然而, 事實上, 如果應(yīng)用環(huán)境中的目標平臺能夠支持密碼算法采用軟件實現(xiàn), 那么不僅比硬件實現(xiàn)節(jié)約成本, 而且實現(xiàn)及維護起來也方便.
本文將討論在X86 體系架構(gòu)上的采用位片實現(xiàn)HBcipher 算法的性能.HBcipher 算法加密成本的一個重要部分是S 盒, 但是位片法允許在幾個時鐘周期內(nèi)并行計算S 盒中的大部分內(nèi)容.本文中S 盒采用文獻[18]中提供的邏輯指令序列實現(xiàn), 假設(shè)輸入為: r3,r2,r1,r0,t, 輸出為: r3,r2,r1,r0, 則HBcipher的S 盒可由下列邏輯指令序列實現(xiàn):
線性擴散層是HBcipher 算法加密成本的另一個重要部分, 行移位只需執(zhí)行幾個pshufb 操作, P2置換層可以通過以比特形式重組xmm 寄存器的16 位(或32 位)字的位置來執(zhí)行, 輪常數(shù)加以事先存儲的常量完成, 而列混淆可以采用與AES 中相同的方法.
對于服務(wù)器與設(shè)備D 之間的通信, 服務(wù)器必須對64 位數(shù)據(jù)塊B 進行加密.假設(shè)執(zhí)行加密過程所需的時間為tE(包括密鑰更新, 但是沒有輸入/輸出數(shù)據(jù)的打包/解包).在加密過程中一次加密塊的數(shù)量為PE, 同樣, 假設(shè)實現(xiàn)執(zhí)行密鑰更新過程(不包含密鑰數(shù)據(jù))所需的時間為tKS, 則執(zhí)行一次密鑰更新過程所需的塊數(shù)量為PKS.假設(shè)加密比PE或PKS更少的數(shù)據(jù)塊仍然需要時間tE或tKS.但是, 與加密過程或密鑰更新過程相反, 輸入/輸出數(shù)據(jù)的打包/解包時間將很大程度上取決于所涉及塊的數(shù)量.因此, 如果我們用tpack表示打包一個數(shù)據(jù)塊所需的時間, 那么打包x 塊只需要x·tpack.同樣, 我們用tunpack表示解包一個數(shù)據(jù)塊所需的時間, 解包x 個塊只需要x·tunpack.對于密鑰更新, tpackKS表示打包密鑰數(shù)據(jù)的時間, 并且打包x 個密鑰需要x·tpackKS.最后, 根據(jù)D 和B, 使用并行操作模式加密所有D·B 數(shù)據(jù)塊所需的每塊平均時間由下式給出[16]:
PRESENT 是典型的面向硬件實現(xiàn)的輕量級分組密碼算法, 通過表6 各個算法軟件實現(xiàn)性能的比較,得到HBcipher 算法加密的軟件性能優(yōu)于PRESENT 算法, 且接近RECTANGLE 算法.HBcipher 算法解密實現(xiàn)性能與加密保持一致.
表6 軟件實現(xiàn)性能表Table 6 Software implementation performance table
本文中我們介紹了HBcipher 算法.我們的設(shè)計目標是做到算法在硬件效率、軟件實現(xiàn)以及安全性能三者之間的折中.首先, 在動態(tài)輪密鑰加操作中, 根據(jù)輪運算控制信號的奇偶性動態(tài)選擇子密鑰與待加密數(shù)據(jù)進行異或, 這種根據(jù)輪運算控制信號進行動態(tài)選擇的輪密鑰加與一般靜態(tài)的算法的輪密鑰加的操作相比, 更具有靈活性與安全性, 特別是抵抗自相似攻擊.然后, 算法采用4 位非線性S 盒以減少能耗, 通過實驗, 驗證了HBcipher 算法滿足雪崩效應(yīng)的充要條件, 與偏向硬件實現(xiàn)的PRESENT 算法相比其軟件實現(xiàn)性能更優(yōu)越, 而與偏向軟件實現(xiàn)的RECTANGLE 算法相比其硬件實現(xiàn)面積更小.最后, 通過安全性分析, 證明算法具有抵抗差分攻擊與線性攻擊等已知攻擊的能力.
附錄A 測試向量
分別給出了HBcipher-64、HBcipher-128 的測試向量如表7 和表8, 表中數(shù)據(jù)用十六進制表示.
表7 HBcipher-64 測試數(shù)據(jù)Table 7 HBcipher-64 test data
表8 HBcipher-128 測試數(shù)據(jù)Table 8 HBcipher-128 test data
附錄B
表9 HBcipher 算法S 盒差分分布表Table 9 Differential distribution of S-box of HBcipher algorithm
表10 HBcipher 算法S 盒線性逼近表Table 10 Linear approximation table of S-box of HBcipher algorithm