李 浪, 郭 影, 劉波濤, 歐 雨
1.衡陽師范學院計算機科學與技術學院, 衡陽 421002
2.智能信息處理與應用湖南省重點實驗室, 衡陽 421002
目前, 無線傳感器網絡與射頻標簽技術的應用非常廣泛, 這些器件制造成本低, 且網絡健壯性與自組織性強, 適用性廣泛, 涉及到人們生活的各個方面.一個典型的RFID 標簽具有1000–10 000 個標準門電路, 但是用于保障信息安全分組密碼算法僅能占用200–2000 個門電路.一般采用兩種方案來降低面積資源: 一種是對傳統分組密碼進行不斷地優化和提高硬件工藝, 其中已有不少學者對AES 密碼不斷地優化實現[1–4]; 另一種是設計低資源面積、高效的輕量級分組密碼.輕量級分組密碼最近幾年引起密碼學者的高度重視.
香農提出的擴散和混淆概念奠定了密碼算法的基本安全性[5].一個分組密碼算法的擴散層通常是通過一個線性擴散矩陣實現, 通過線性運算將輸入向量轉換成輸出向量[6].但是在有限的計算資源下, 找到安全性與執行效率的最佳平衡點是困難的.混淆則是盡量使密文與密鑰之間的統計關系復雜化, 使用復雜的非線性變換可以達到比較好的混淆效果.目前已提出了一些輕量級分組密碼, 例如DESL/DESX/DESXL[7]、Hummingbird[8]、Magpie[9]、QTL[10]、LBlock[5]、KLEIN[11]、LED[12]、PRESENT[13]、TWINE[14]等.PRESENT 在CHES 2007 上提出, 由于其簡潔的密碼結構、良好的硬件性能和安全性, 引起了廣泛關注.PRESENT 硬件實現高效, 因為其擴散層采用基于比特的排列置換, 這在硬件中只需要連線實現.2012年, PRESENT 被采納為ISO/IEC 輕量級密碼標準.許多輕量級分組密碼, 例如PRESENT、KATAN/KTANTAN[15]和Hummingbird, 在硬件方面的實現效率都很高, 但軟件實現性能不佳.正如文獻[13,16–18]中指出的密碼算法也需要很高的軟件實現性能, 與面向硬件的設計相比, 軟件實現具有更好的靈活性和更低的成本.
本文結構如下安排.第2 節對HBcipher 密碼算法進行設計與實現, 第3 節從各個層次介紹HBcipher算法的設計原理, 第4 節用多種分析方法對算法進行安全性評估, 第5 節描述算法的硬件實現所占資源以及各算法所占資源對比, 第6 節描述算法軟件實現性能以及對比, 第7 節是總結.
在本節中, 我們詳細敘述HBcipher 的結構和各個組件的設計方法與實現.

HBcipher 分組長度為64 位, 密鑰長度設計為64 位和128 位兩種.當密鑰長度為64 位時, 迭代輪數為32, 記為HBcipher-64; 當密鑰長度為128 位時, 迭代輪數為40, 記為HBcipher-128; 輪函數采用三組SPN 結構的F 函數, 如圖1 所示.令P =L ∥R 表示64 位明文.

圖1 HBcipher 加密結構圖Figure 1 Encryption structure of HBcipher
動態輪密鑰加:HBcipher 算法選取輪數作為輪運算控制信號, 輸入64 位明文P 與64 位密鑰K(或輸入128 位密鑰K, 但每一輪僅選取輪密鑰前64 位參與動態輪密鑰加運算), 64 位密鑰K 以4×16 的矩陣形式表示, 矩陣左邊8 列記為

右邊8 列記為

(Nr 表示輪數), 即所述:


其中, j =0,1,2,3, Nr=1,2,··· ,32.當輪運算控制信號count 為奇數時:

當輪運算控制信號count 為偶數時:

輪函數:HBcipher 算法輪函數采用三組SPN 結構的F 函數, 分別為F1、F2、F3.F1包括輪密鑰加、S 盒替換和行移位, 如圖2 數據流程圖所示; F2包含輪密鑰加、S 盒替換和輪常數加, 如圖3 數據流程圖所示; F3僅包括P2置換, 如圖4 數據流程圖所示.

圖2 F1 函數流程圖Figure 2 Flowchart of F1 function

圖3 F2 函數流程圖Figure 3 Flowchart of F2 function

圖4 F3 函數流程圖Figure 4 Flowchart of F3 function
S 盒置換:在HBcipher 算法非線性層設計中, 引用PRESENT 算法加密的S 盒, 主要用于函數變換和密鑰更新模塊中, S 盒元素如表1 所示.

表1 S 盒元素值Table 1 Value of S-box
行移位變換:對于4×8 的矩陣, 矩陣每一行左循環不同的比特, 第一行循環左移3 個比特, 第二行循環左移5 個比特, 第三行循環左移6 個比特, 第四行循環左移7 個比特, 如圖5 所示.

圖5 行移位操作示意圖Figure 5 Diagram of ShiftRow
常數加:在加密第1、5、9、13、17、21、25、29 (33、37)輪時, 輪常數count 與數據高8 位進行常數加運算; 在加密第2、6、10、14、18、22、26、30 (34、38)輪時, 輪常數count 與數據高9–16 位進行常數加運算; 在加密第3、7、11、15、19、23、27、31 (35、39)輪時, 輪常數count 與數據低9–16位進行常數加運算; 在加密第4、8、12、16、20、24、28、32 (36、40)輪時, 輪常數count 與數據低8位進行常數加運算, 常數加變換操作如圖6.

圖6 常數加變換操作Figure 6 Diagram of AddConstants
P2 置換:經過F1、F2變換的4×16 狀態矩陣如圖7 所示.

圖7 P2 置換示意圖Figure 7 Diagram of P2
區域①對稱映射到區域②, 原區域②則以直角頂點順時針旋轉90 度對稱映射到區域③, 以此類推, 原區域⑧以直角頂點逆時針旋轉90 度對稱映射到原區域①, 而區域A 對稱映射到區域D, 區域B 則對稱映射到區域A, 同理, 區域C 對稱映射到區域B, 區域D 對稱映射到區域C, 經過上述操作后所形成的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 位的密鑰經過P1置換后第i 列移動到P1(i)列, P1置換表元素如表2, 如下式(1)所示:


表2 HBcipher-64 P1 置換表Table 2 Permutation table of P1
(3)每行都循環左移不同的單位, 第一行循環左移7 位, 第二行循環左移9 位, 第三行循環左移11 位,第四行循環左移13 位.
128 位密鑰:將用戶提供的128-bit 密鑰K =k0k1···k126k127存儲在128-bit 密鑰寄存器中.

在加密第count(count=1,2,··· ,40)輪時, 選取前四行作為輪密鑰, 密鑰寄存器更新方式如下:
(1)第0 列和第15 列進行S 盒置換.

(2)每一行都循環左移不同的單位且循環上移1 行, 具體移位方式如圖9 所示.

圖9 移位示意圖Figure 9 Diagram of shift
HBcipher 算法是基于SPN 結構的輕量級密碼算法, 其解密過程與加密過程相反, 通過把輸入密文和密鑰由輪函數經Nr 輪迭代來實現, 解密輪密鑰是加密輪密鑰的逆序使用.其解密過程具體由白化密鑰運算、P2逆置換、行移位逆變換、輪常數加逆變換、S 盒逆變換、輪密鑰加逆變換組成.以下將具體介紹各模塊.
白化密鑰運算:待解密數據與初始密鑰異或操作.
P2 逆置換:P2逆置換過程與HBcipher 算法加密過程相反, 逆置換表如圖10 所示.
行移位逆變換:解密過程的行移位逆變換與加密過程相反, 操作示意圖如圖11 所示.
輪常數加逆變換:解密過程的輪常數加變換與加密過程相反, 輪常數逆序使用.
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 結構的輕量級分組密碼算法, 輪函數采用3 組微型SPN 結構函數, 分別為F1、F2和F3.64 位的初始明文P 根據輪運算控制信號count 的奇偶性動態劃分成兩個32 位的數據塊并行執行F1、F2函數后, 恢復64 位執行F3, 得出密文.該種結構模式下, 待加密數據根據算法輪運算控制信號奇偶性動態選擇更新后的子密鑰, 且每輪待加密數據劃分原則的不同相當于一次基于比特的位置換, 在保證了加密速度的前提下充分隱藏明文的統計特性, 提高算法抗統計分析能力.
在動態輪密鑰加操作中, 首先, 需要將輪子密鑰進行劃分兩部分與同時還對待加密數據進行劃分兩部分L 與R.在輪子密鑰與待加密密鑰的劃分過程實現操作, 相當于對子密鑰與待加密數據進行了移位操作.然后, 當輪運算控制信號count 為奇數時, 輪密鑰加操作為與當輪運算控制信號count 為偶數時, 輪密鑰加操作為與這種根據輪運算控制信號進行動態選擇的輪密鑰加與一般靜態的算法的輪密鑰加的操作相比, 更具有靈活性與安全性, 特別是抵抗自相似攻擊, 而動態輪密鑰加對于HBcipher 算法整體安全性影響, 本文第4 節對算法的安全性分析已證明.
密碼設計時不僅要硬件和軟件實現性能之間的平衡, 也要考慮硬件實現和算法安全性能之間的關系.雖然采用大S 盒可以實現更好的安全性, 但即使在軟件中, 大S 盒也需要高昂的存儲成本, 而且硬件實現要差得多; 另一方面, 太小的S 盒難以達到合適的安全性.我們觀察到門數隨S 盒的大小呈指數增長, 所以選取了目前最具有代表性的輕量級分組密碼PRESENT 的4×4 小S 盒, 做到硬件效率、軟件實現以及安全性能三者之間的折中.
在HBcipher 算法加密流程、密鑰更新以及輪函數的設計中使用了大量置換、移位等操作.在動態輪密鑰加操作中, 根據輪運算控制信號的奇偶性動態選擇子密鑰與待加密數據進行異或, F1函數中的行移位操作, F2函數中的常數加操作以及F3函數中的P2置換.為避免最后一輪完全暴露給攻擊者, 對各種攻擊提供方便, 我們在最后一輪P2置換輸出后, 增加白化密鑰加運算.使用這些變換和運算的目的主要有兩方面: 一是方便軟硬件實現; 二是提高HBcipher 算法的抗攻擊強度, 這些變換在一定程度上具有快速擴散的作用, 隱藏了明文和密鑰信息、從而使明文與密鑰之間不具有統計特性.
在密碼學中, 雪崩效應是指任意一組明文輸入, 隨機改變其中一個輸入位, 將導致至少有一半以上的輸出位發生改變.若某種分組密碼沒有顯示出一定程度的雪崩特性, 那么它可以被認為具有較差的隨機化特性, 而且密碼攻擊者可以利用輸出數據推測輸入數據, 因此, 從加密算法的設計角度來說, 滿足雪崩效應是充要條件, 為了測試HBcipher 算法是否滿足雪崩效應, 我們用兩個實驗進行驗證.
在實驗1 中, 固定一條64 位明文, 隨機選擇一條64 位初始密鑰進行加密得到初始密文, 將初始密鑰中各位按位取反, 得到64 條密鑰, 分別將64 條密鑰與固定明文進行加密得到64 條密文, 將64 條密文分別與初始密文進行異或操作, 統計每條異或結果中出現1 的次數, 1 的次數代表了當改變其中一個輸入位時, 有多少輸出位發生改變, 實驗結果如圖12, 圖12 中1 的平均數值是32.3125, 大于明文輸入位數值的一半.

圖12 改變密鑰的雪崩效應統計圖Figure 12 Statistical map of avalanche effect with changed key
在實驗2 中, 固定一條64 位密鑰, 隨機選擇一條64 位初始明文進行加密得到初始密文, 將初始明文中各位按位取反, 得到64 條明文, 分別將64 條明文與固定密鑰進行加密得到64 條密文, 將64 條密文分別與初始密文進行異或操作, 統計每條異或結果中出現1 的次數, 1 的次數代表了當改變其中一個輸入位時, 有多少輸出位發生改變, 實驗結果如圖13, 圖13 中1 的平均數值是32.296 88, 大于明文輸入位數值的一半.

圖13 改變明文的雪崩效應統計圖Figure 13 Statistical map of avalanche effect with changed plaintext
由圖12 和圖13 的統計結果可知, HBcipher 算法具有良好的雪崩性.
差分密碼分析方法是攻擊迭代型分組密碼最有效的方法之一, 也是衡量一個分組密碼安全性的重要指標之一.差分密碼分析的本質就是研究差分在加密(解密)過程中的概率傳播特性.本小節主要介紹對HBcipher 算法加密差分密碼分析過程.
定義1迭代分組密碼的一條i 輪差分特征? = (β0,β1,··· ,βi?1,βi), 是指當輸入對(X,X?)的差分值滿足X ⊕X?= β0, 在i 輪加密過程中, 中間狀態(Yj,的差分值滿足Yj⊕= βj, 其中1ji.當i=1 時, 差分(α,β)和差分特征(β0,β1)概念統一, 表征輪函數的差分傳播特性.
定義2迭代分組密碼的一條i 輪差分(α,β)所對應的概率DP(α,β), 是指在輸入X、輪密鑰K1,K2,··· ,Ki取值獨立且均勻的情況下, 當輸入對(X,X?)的差分值X ⊕X?= α, 經過i 輪加密后,輸出對(Yi,的差分值滿足Yi⊕Y?i= β 的概率, 當i = 1 時, DP(α,β)表示輪函數的的差分傳播概率.
定義3迭代分組密碼的i 輪差分特征? = (β0,β1,··· ,βi?1,βi)所對應的概率DP(?)是指在輸入X、輪密鑰K1,K2,··· ,Ki取值獨立且均勻的情況下, 當輸入對(X,X?)的差分值X ⊕X?=α, 經過i輪加密后, 中間狀態(Yj,的差分值滿足Yj⊕= βj的概率, 其中0ji.在上述假設下, 差分特征概率等于各輪差分傳播路徑的乘積.
定義4給定兩條差分特征?1= (β0,β1,··· ,βs), ?2= (γ0,γ1,··· ,γt), 若βs= γ0, 則稱? =(β0,β1,··· ,βs,γ1,··· ,γt)為?1和?2的級聯, 此時DP(?)=DP(?1)×DP(?2).
定義5若一條i 輪差分特征? = (β0,β1,··· ,βi?1,βi)滿足β0= βi, 則稱? 是一條i 輪迭代差分特征, 若? 是迭代差分特征, 則自身可進行級聯.
定義6設m,n ∈Ν , 從到的非線性映射記為: S:給定α ∈定義INS(α,β)=x ∈:S(x ⊕α)⊕S(x)=β,NS(α,β)=#INS(α,β).
定義7考慮輪函數F 的一對輸入(X,X?), 若該輸入對導致某個S 盒的輸入差分非0, 則稱輸入對導致該S 盒活躍, 簡稱該S 盒為差分活躍S 盒.

圖14 500 條HBcipher 算法4 輪差分特征概率統計圖Figure 14 Probability statistics of 500 4-rounds differential characteristics of HBcipher algorithm
根據定義1 尋找差分特征, 給定輸入差分, 跟蹤輪函數迭代過程, 到達某個輸出差分, 這一過程即對應一條差分特征.本文假定輸入差分值, 依據附錄B 表9 HBcipher 算法S 盒的差分分布表得到S 盒的輸出差分, 跟蹤HBcipher 算法輪函數的迭代過程, 到達第4 輪S 盒的輸出差分, 隨機截取500 條HBcipher 算法的4 輪差分特征, 得到3 條差分特征概率值, 如圖14 柱形圖所示, 其中56 條差分特征的概率值為2?36, 223 條差分特征的概率值為2?37, 221 條差分特征的概率值為2?38.當使用差分攻擊手段攻擊n-bit 分組密碼時, 在整個加密過程中必定只有極少輪數差分特征能大于21?n, 對于HBcipher 算法, 根據定義5 和6, 假設HBcipher 算法差分特征為迭代差分特征, 那么500 條HBcipher 算法32 輪差分特征上限為2(?36)×8= 2?288.這個差分概率非常小, 因此32 輪的HBcipher 算法具有足夠抵抗差分攻擊的能力.
定義8設X ∈{0,1}n, X 的線性掩碼定義為某個向量ΓX ∈{0,1}n, ΓX 和X 的內積ΓX ·X 代表X 某些分量的線性組合.即
定義9迭代分組密碼的一條i 輪線性特征? = (β0,β1,··· ,βi)是指當輸入掩碼為β0, 在i 輪加密過程中, 中間狀態Yj的掩碼為βj, 其中1ji.
定義10迭代分組密碼的一條i 輪線性特征? = (β0,β1,··· ,βi)所對應的線性概率LP(?)是指在輸入X、輪密鑰K1,K2,··· ,Ki取值獨立且均勻的情況下, 當輸入掩碼為β0, 在加密過程中, 中間狀態Yj的掩碼取值為βj的線性概率, 其中1ji.
定義11給定兩條線性特征?1= (β0,β1,··· ,βs), ?2= (γ0,γ1,··· ,γt), 若βs= γ0, 則稱? =(β0,β1,··· ,βs,γ0,γ1,··· ,γt)為?1和?2的級聯, 此時LP(?)=LP(?1)×LP(?2).
定義12若一條i 輪線性特征?=(β0,β1,··· ,βi?1,βi)滿足β0=βi, 則稱? 是一條i 輪迭代線性特征, 若? 是迭代線性特征, 則自身可進行級聯.
定義13設m,n ∈Ν, 從到的非線性映射記為: S:給定α ∈定義INS(α,β)= x ∈α·x=β·S(x),NS(α,β)= #INS(α,β).構造2m×2n的表格: 以α (S 盒的輸入掩碼)為行指標遍歷β(S 盒的輸出掩碼)為列指標遍歷行列交錯項取值為NS(α,β)?2m?1.以上述方式構造的表稱為線性逼近表.
HBcipher 算法S 盒線性逼近表如附錄B 表10 所示.
定義14在一條i 輪線性特征中? = (β0,β1,··· ,βi)中, 若第j 輪(ji)輸出掩碼βj, 導致某個S 盒的輸出掩碼非0, 則稱這條線性特征導致該S 盒活躍, 簡稱該S 盒是線性活躍S 盒.
根據定義尋找一條線性特征, 給定輸入掩碼, 跟蹤輪函數迭代過程, 到達某個輸出掩碼, 這一過程即對應一條線性特征.本文假定S 盒輸入掩碼值, 根據附錄B 表10, S 盒線性逼近表得到輸出掩碼值, 跟蹤HBcipher 算法輪函數迭代過程到第4 輪S 盒輸出掩碼結束, 隨機截取500 條HBcipher 算法的4 輪線性特征, 得到2 條線性特征概率.如圖15 柱形圖所示, 其中224 條線性特征的概率值為?2?22, 276 條線性特征的概率值為2?22.根據定義11 與定義12, 假設HBcipher 算法線性特征具有迭代性, 那么HBcipher算法500 條32 輪線性特征概率上限為2(?22)×8= 2?196, 這個差分概率非常小, 因此32 輪的HBcipher算法具有足夠抵抗線性分析的能力.

圖15 500 條HBcipher 算法4 輪線性特征概率統計圖Figure 15 Probability statistics of 500 4-rounds linear characteristics of HBcipher algorithm
代數攻擊是把對密碼系統的攻擊問題轉化為求解與之相對應的代數方程組, 由Courtois 和Pieprzyk在分析AES 時提出的[19].任意4-bit S 盒至少可以用21 個二次方程來表示, 所以整個密碼在n×8 個變量中有n×21 個二次方程(n 是整個加密算法和密鑰擴展中S 盒數量).在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 攻擊復雜度, 對于HBcipher-64, 本文據此估計如下:

這超出了窮舉搜索所需的264個操作, 從而HBcipher 算法是能夠抵抗代數攻擊.
相關密鑰攻擊是一種利用密鑰調度的弱點來進行分析的攻擊方法.在相關密鑰攻擊模型下, 攻擊者能夠通過某種方式獲得明文及其在某些未知密鑰下對應的密文, 攻擊者雖然并不知道這些密鑰的具體取值,但可以了解或者選取這些密鑰之間的關系.密鑰擴展不同于輪函數中行移位的旋轉變換, 同時采用依據輪數控制迭代次數的方式, 由文獻[20]相關安全性證明可知HBcipher 的密碼特性能夠抵抗相關密鑰攻擊.
HBcipher 算法能高效地在硬件中實現, 我們通過實驗計算了硬件實現所需要花費的資源.在Ubuntu 14.04 平臺上進行了仿真, 在Synopsys Design Compiler Version B-2008.09 進行綜合, 其中綜合工藝庫為SMIC 0.18m CMOS, 在綜合實驗結果當中, 用等效門數GE 來衡量面積資源, 1 GE 相當于一個雙向與非門.有限狀態機用于生成控制邏輯, 明文和密鑰通過多路復用器加載到每個寄存器中.然后在接下來的時鐘周期中, 數據從寄存器中讀出, 通過狀態和關鍵數據路徑并分別存回寄存器, 最后可以在64 位輸出中獲得密文.HBcipher-64 算法數據通路圖如圖16 所示, HBcipher-128 數據通路圖類似于HBcipher-64.

圖16 HBcipher-64 數據通路圖Figure 16 Data path diagram of HBcipher-64
加密算法HBcipher-64 存儲64 位明文需要384 GE, 密鑰異或需要174 GE, 且F2 中有一個8位的常數加運算, 由于算法選取輪數作為輪常數不需要花費寄存器, 所以該運算需要資源為27 GE.HBcipher-64 算法一個S 盒的實現資源需要24 GE, P 置換、以及行移位的硬件實現是通過連線操作, 從而不需要花費硬件資源.此外, 其它資源需要15.25 GE.HBcipher-128 存儲64 位明文需要384 GE, F1與F2中的兩個32 位密鑰加需要174 GE, 且F2中有一個8 位的常數加運算需要資源為27 GE, S 盒需要480 GE, 存儲128 位的密鑰需要576 GE, 此外, 其它資源需要15.25 GE.表4 列出了HBcipher-64 和HBcipher-128 的各層次加密所需資源及占比大小.HBcipher 算法解密逆運算跟加密運算硬件資源實現時, 具有相同的資源.

表4 HBcipher-64 和HBcipher-128 的各模塊所需資源及占比大小Table 4 Resource and scale of modules for HBcipher-64 and HBcipher-128
表5 列出了各算法硬件實現面積對比, 通過對比我們可以看到HBcipher 算法加密所需的實現面積與偏向軟件實現的RECTANGLE 算法相比, 其占用面積資源較小, 適合于資源受限的環境, HBcipher 算法解密性能與加密保持一致.

表5 各算法硬件實現面積對比Table 5 Area comparison of hardware implementation
目前大多數輕量級密碼算法都是面向硬件實現而設計的, 對于輕量級密碼算法實現性能的研究也多集中在硬件實現上, 對軟件實現的研究相對較少.然而, 事實上, 如果應用環境中的目標平臺能夠支持密碼算法采用軟件實現, 那么不僅比硬件實現節約成本, 而且實現及維護起來也方便.
本文將討論在X86 體系架構上的采用位片實現HBcipher 算法的性能.HBcipher 算法加密成本的一個重要部分是S 盒, 但是位片法允許在幾個時鐘周期內并行計算S 盒中的大部分內容.本文中S 盒采用文獻[18]中提供的邏輯指令序列實現, 假設輸入為: r3,r2,r1,r0,t, 輸出為: r3,r2,r1,r0, 則HBcipher的S 盒可由下列邏輯指令序列實現:

線性擴散層是HBcipher 算法加密成本的另一個重要部分, 行移位只需執行幾個pshufb 操作, P2置換層可以通過以比特形式重組xmm 寄存器的16 位(或32 位)字的位置來執行, 輪常數加以事先存儲的常量完成, 而列混淆可以采用與AES 中相同的方法.
對于服務器與設備D 之間的通信, 服務器必須對64 位數據塊B 進行加密.假設執行加密過程所需的時間為tE(包括密鑰更新, 但是沒有輸入/輸出數據的打包/解包).在加密過程中一次加密塊的數量為PE, 同樣, 假設實現執行密鑰更新過程(不包含密鑰數據)所需的時間為tKS, 則執行一次密鑰更新過程所需的塊數量為PKS.假設加密比PE或PKS更少的數據塊仍然需要時間tE或tKS.但是, 與加密過程或密鑰更新過程相反, 輸入/輸出數據的打包/解包時間將很大程度上取決于所涉及塊的數量.因此, 如果我們用tpack表示打包一個數據塊所需的時間, 那么打包x 塊只需要x·tpack.同樣, 我們用tunpack表示解包一個數據塊所需的時間, 解包x 個塊只需要x·tunpack.對于密鑰更新, tpackKS表示打包密鑰數據的時間, 并且打包x 個密鑰需要x·tpackKS.最后, 根據D 和B, 使用并行操作模式加密所有D·B 數據塊所需的每塊平均時間由下式給出[16]:

PRESENT 是典型的面向硬件實現的輕量級分組密碼算法, 通過表6 各個算法軟件實現性能的比較,得到HBcipher 算法加密的軟件性能優于PRESENT 算法, 且接近RECTANGLE 算法.HBcipher 算法解密實現性能與加密保持一致.

表6 軟件實現性能表Table 6 Software implementation performance table
本文中我們介紹了HBcipher 算法.我們的設計目標是做到算法在硬件效率、軟件實現以及安全性能三者之間的折中.首先, 在動態輪密鑰加操作中, 根據輪運算控制信號的奇偶性動態選擇子密鑰與待加密數據進行異或, 這種根據輪運算控制信號進行動態選擇的輪密鑰加與一般靜態的算法的輪密鑰加的操作相比, 更具有靈活性與安全性, 特別是抵抗自相似攻擊.然后, 算法采用4 位非線性S 盒以減少能耗, 通過實驗, 驗證了HBcipher 算法滿足雪崩效應的充要條件, 與偏向硬件實現的PRESENT 算法相比其軟件實現性能更優越, 而與偏向軟件實現的RECTANGLE 算法相比其硬件實現面積更小.最后, 通過安全性分析, 證明算法具有抵抗差分攻擊與線性攻擊等已知攻擊的能力.
附錄A 測試向量
分別給出了HBcipher-64、HBcipher-128 的測試向量如表7 和表8, 表中數據用十六進制表示.

表7 HBcipher-64 測試數據Table 7 HBcipher-64 test data

表8 HBcipher-128 測試數據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