



關鍵詞:LED分組密碼; Δx64 架構;軟件快速實現;比特切片;SIMD
中圖分類號:TP309 文獻標志碼:A 文章編號:1001-3695(2025)07-035-2184-07
doi:10.19734/j. issn.1001-3695.2024.11.0482
Abstract:LEDisalightweightblockcipherspecificalldesignedforresource-constraineddevices,characterizedbylowpower consumption,minimal memoryusage,andhigh eficiency.Thesefeatures make ithighlysuitableforapplicationsin Interneof Things(IoT)devices,radiofrequency identification(RFID)tags,andembedded systems.However,as performancedemands continuetorise,optimizing theencryptionimplementation eficiencyof theLEDblock cipherhasbecomeaprominentesearch focus.Thisstudyproposed a generalizedbit-slicing methodforAES-likeblock ciphersandoptimized itsimplementationusing singleinstructionmultipledata(SIMD)technology.The methodappliedtotheLEDencryptionalgorithm toenhance ts parallel data processingcapabilities.Aditionally,the studyexplored S-box optimizationschemes fortheLEDalgorithm,reducing the numberoflogicgatesrequiredforS-boximplementation.Thetestsdemonstratethattheencryptioimplementationeiciencyof theLED-64andLED-128algorithmsareimprovedby2.26times and2.14times,respectively.The experimentalresults indicatethattheproposedmethodprovidessignificantreferencevalueforthesoftwareoptimizationofAES-likeblockcipher implementations based on bit-slicing technology.
Key words:LED block cipher;x64 architecture;fast software implementation;bit-slicing;SIMD
0 引言
2011年,Guo等人[1]在CHES-2011上提出了LED輕量級分組密碼算法,其設計目標是為了在資源受限環境下提供高效且安全的加密方案。同時,隨著文獻[2\~4]的分析檢驗,LED密碼算法的安全性得到了充分驗證。快速高效的加密實現不僅能夠提升系統的整體性能,還能進一步增強設備的續航能力。因此,對LED等輕量級分組密碼算法的快速實現進行深入研究具有非常重要的實際意義。
比特切片技術是一種十分重要的快速實現方法,由Biham[5在1997年首次提出并將其應用于DES算法。隨后比特切片技術被廣泛應用于分組密碼算法的優化實現,如2006年,Rebeiro等人[基于比特切片技術構建了AES算法軟件優化實現結構,并且利用三種不同處理器指令進一步對AES進行優化。2014年,Benadjila等人在x86平臺上對Piccolo等算法的比特切片與查找表實現方法進行分析比較。同年,Papapagiannopoulos[8通過利用比特切片方法,減少了PRES-ENT等密碼算法的內存訪問次數,并通過AVR處理器來實現。2018年,Eldosouky等人[針對物聯網系統特性,構建LED密碼算法比特切片實現方法的MTD框架。次年,Hajihassani等人[0]利用比特切片方法進一步提高了高級加密算法AES的加解密吞吐率。隨后,在2022年,Adomnicai等人[11]給出改進的比特切片方法“固定切片技術(Fixslicing)”,并利用此方法在ARM和RISC-V平臺上對AES算法進行了實現。該方法以整合線性層的方式使AES算法的實現效率提升了 21% ,這為之后的切片研究提供了一種全新方法。此外,比特切片技術也應用于分組密碼算法的設計以及部件優化實現,如2019年,馮秀濤等人[1]設計了一種輕量級分組密碼算法FBC。該算法的非線性函數F采用比特切片設計理念實現,這使得算法的輕量化與靈活性得到了加強。2024年,Leuren等人[13]提出一種針對 32bit 處理器的切片優化實現方法,通過調整異或與旋轉操作,不僅使算法在加密效率上有所提高,還能使算法線性層擁有更大分支數。
1996年Intel推出單指令多數據SSE(streamingSIMDex-tensions)指令集后,比特切片與多種指令集結合使用情況變得越來越廣泛。2012年,Matsuda等人[14]將SSE指令與比特切片技術應用于Present與Piccolo算法,使兩者的加密吞吐量分別達到4.3cycle/Byte和4.57cycle/Byte。之后,Intel又推出高級向量指令集AVX(advancedvectorextensions)。在2020年,張笑從等人[15]利用比特切片技術,結合AVX2指令集,提出了一種針對SM4算法的快速軟件優化實現方法,使算法的實現效率提高了 43% 。與此同時,在2023年,Miao等人[1也提出一種針對SM4算法的并行切片方案,通過操作256bit寄存器并行運算64組數據,使得SM4-CTR與SM4-GCM模式加密效率分別提升了 60% 和 46% 。隨后,2024年,陳晨等人[17]在文獻[15]的研究基礎上降低了代碼內存訪問次數,進一步提高了SM4算法加密效率。近期,高瑩等人[18]對uBlock算法進行了快速實現研究,通過使用AVX2指令將uBlock-128/128、uBlock-128/256和uBlock-256/256的加密速度分別提升269% 、 182% 和 49% 。除了SSE、AVX2指令,雷斗威等人[19還利用一種更為高級的指令AVX512,通過該指令對Kyber算法進行優化,且采用冗余比特技術加強并行處理數據能力,將算法的實現速度提升10\~15倍。
本文基于AVX2指令集,提出了一種類AES密碼算法通用比特切片實現方法,并將其應用于LED輕量級分組密碼算法。除此之外,通過對LED算法S盒比特切片實現進一步優化,使LED-64、LED-128的加密效率分別提升了 226% 和 214% 。
1相關技術
1.1LED算法
LED密碼算法采用SPN結構,其分組長度為 64bit ,密鑰長度為64bit和 128bit ,記為LED-64和LED-128,迭代步數為8步和12步。
算法主要由輪密鑰加(AddRoundKey)和步變換(step)兩部分組成,AddRoundKey(STATE, SKi )使用子密鑰 SKi 與明文狀態矩陣進行按位異或操作,如圖1所示。加密過程中步驟數r 取決于密鑰的大小。對于 64bit 密鑰,步驟數為 r=8,128 bit密鑰步驟數為 r=12 0
SK SK step SK2 SK P 4輪加密 4輪加密 4輪加密 出 →C 單輪 4122 S 4 316156 sIssIs ↑ BEA9 SIsSIS ↑ 2|2FB 輪常數加 S盒替換 行移位 列混淆 AddConstants SubCells ShiftRows MixColumns
1.2LED算法加密步驟
對于 64bit 明文數據 P ,將其分解為16塊4bit單元
,設其為加密狀態的初始值并存入狀態矩陣sTATE 。

密鑰信息同樣按4bit為一個單元進行表示,記為
,當密鑰長度為 64bit 時 l=15 ,第 i 輪子密鑰為 SKi= K 密鑰長度為 128bit 時則
,生成子密鑰 K0 和 K?1,K?0 和(204號 K1 這兩個密鑰在輪密鑰加密步驟中交替使用,即 SKi=Kimod2 。


步變換step(STATE)包含對內部狀態的四輪加密。每輪加密依次進行操作:輪常數加(AddConstants)、S盒替換(Sub-Cells)行移位(ShiftRows)和列混淆(MixColumns),如算法1所示。
算法1LED算法加密偽代碼
輸入:Plaintext ??SKi 。
輸出:Ciphertext。
Plaintext STATE/. /明文轉換為狀態矩陣
for i=0 to r-1 dolAddRoundKey( STATE,SKi) //對狀態矩陣進行輪密鑰加操作for j=0 to 3do !AddConstants( sTATE //對狀態矩陣進行輪常數加操作SubCells(STATE)//對狀態矩陣進行S盒替換操作ShiftRows STATE)/* 通過邏輯移位操作實現狀態矩陣的行移位 * /MixColumns( sTATE)/* 通過列混淆矩陣與狀態矩陣的異或移位操作實現列混淆*/
AddRoundKe y(STATE,SKr)Ciphertext/* 完成最終輪密鑰加
得到相應密文 * /
return Ciphertext
a)輪常數加。首先,將6 bit 數據 (rc5,rc4,rc3,rc2,rc1,rc0) (204號初始化為0。之后,在每一輪加密中, (rc5,rc4,rc3,rc2,rc1,rc0) 左移一位并生成新的 rc0 ,輪常數更新如式(1)所示。按照矩陣式(2)所示的方式進行比特排列以生成輪常數矩陣,其中,ks7,ks6,…,ks0 對應密鑰長度的二進制表示。最后,將得到的輪常數矩陣與狀態矩陣 sTATE 進行逐比特異或運算實現輪常數加。

b)S盒。LED 密碼算法S盒與PRESENT算法 [20]S 盒一致,且該S盒已被許多輕量級密碼算法采用。4bitS盒的十六進制轉換如表1所示。

c)行移位。狀態矩陣STATE的第 χi 行向左循環旋轉 χi 個半字節, 0?i?3 。
d)列混淆。MixColumns( STATE,M) 可以看作狀態矩陣sTATE 左乘MDS矩陣 M 矩陣 M 中的數據為有限域 GF(24) 元素,其中不可約多項式為 X4+X+1,M 矩陣如下所示。

1.3單指令多數據處理
SIMD(singleinstructionmultipledata)技術是指使用單一指令并行處理多組數據。當前,Intel、AMD、ARM和IBM等公司所生產的處理器均可支持SIMD技術。Intel處理器中的SSE/AVX/AVX2指令集21正是基于SIMD技術實現。SSE指令集使用128bitXMM寄存器,可以使用單次指令處理 128bit 數據。AVX指令集使用256bitYMM寄存器,該寄存器由兩個128bit通道組成。
2013年,Intel推出了支持AVX2指令集的處理器。AVX2指令集是AVX指令集的擴展和改進,增加了對跨通道操作的支持,被稱為“Haswell新指令集”。AVX2支持8通道 32bit 異或操作、與非操作、循環移位和查找表等。表2列出了關于AVX2的部分指令。

1.4 比特切片
比特切片是一種軟件實現技術,能有效減少邏輯運算。首先,將數據劃分為與CPU寄存器寬度一致的分組大小,再通過使相同索引數據接受相同運算操作以達到減少邏輯指令的目的,由此實現固定時間處理多組明文數據。LED算法輸入輸出均為 64bit ,圖2展示了64組明文數據在64位處理器中數據存儲形式,其中 bji 代表第 i 個明文分組中的第 j bit數據。在64位處理器上,原始加密方式只能依次處理單個分組數據來生成密文,而通過比特切片技術可以單次并行處理多個分組數據來提高算法的實現速度。多個分組的明文數據通過數據預處理階段進行排列組合,具體排列方式如圖3所示。隨后,多個分組加密操作合并為一個函數,并使用邏輯操作指令來實現。為確保加密結果的正確性,完成加密操作后需進行預處理階段的逆排列組合,以生成最終密文數據。通過分析現有基于比特切片技術優化實現方法,如圖3所示的比特切片方法,雖可更加細致地將比特數據進行移位重組,但對寄存器數量有較高要求,并且加大了寄存器之間數據讀取操作,尤其在進行數據初始化和S盒替換時消耗更加明顯。基于以上原因,為了充分利用寄存器的并行處理能力,本文提出了一種對于類AES分組密碼算法的通用切片方法。

2通用的類AES分組密碼算法切片方法
2.1理論依據
以原始比特切片實現模型為例,當使用 128bit 指令集對LED算法進行比特切片實現時,并行處理的明文數據多達256組,這不僅需要大量內存來實現數據存儲,還會消耗更多操作指令來完成加密前后的數據編排以保證加密結果的正確性。內存消耗以及數據編排所需的繁雜指令反而會影響算法整體加密效率。因此選擇合適的切片窗口成為了提升算法效率的關鍵。為提高現有比特切片實現方法的靈活性以及實現效率,本文方案針對類AES分組密碼算法提出了一種通用的比特切片方法,其設計理念如下。
定義在一個 N 位處理器中對分組數據進行切片,切片寬度為 y bit,數據分組長度為 n bit,處理分組數量為 t,g 是切片的窗口寬度。如圖3所示,當 g 取 64bit 時,第一個窗口將順序存儲每個數據塊中的 b0i bit,每個寄存器字包含 64bit 信息,從而使不同數據分組相同比特位置完全隔離。為了方便切片,切片窗口寬度與分組數量滿足關系 g=x×t ,令 x 為正整數。

本文方法在實際操作中將 t×n 比特數據分割為兩個部分分別進行操作,所以本文將切片窗口數量作如下規定:在處理Φt×n bit數據且切片窗口為 N 時,所需占用切片窗口數量為a=(t×n)/N ,當切片窗口大小為 g 時,將數據拆分為兩部分,且每部分大小為 (t×n)/2 ,此時每部分所占用的切片窗口數量為
,令 a 與 b 滿足關系 a=b ,可以推出(t×n)/N=[(t×n)/2]/g 即 N=2g 。
2.2 切片設計方案
綜上,本文比特切片設計方法將 Φt×n bit數據進行拆分,在N 位處理器環境下得到切片窗口寬度為 g=N/2 。通過觀察發現,本文方法進行切片時只考慮待處理數據大小、切片窗口大小、處理器位寬、寄存器寬度。當對切片窗口寬度為 g 寄存器大小為 yγ 大小為 t×n bit的數據進行切片時具體步驟如下:
a)數據加載與矩陣構建。將 χt 個 n bit分組數據構建為矩陣 M ,其維度為 t×n bit,每個分組對應矩陣的第 i 行,記為Mi,0,Mi,1,…,Mi,n-1 ,即矩陣的每一行表示一個分組數據。
b)矩陣分解。將矩陣 M 按列分解為兩個子矩陣 ??M1 表示矩陣 M 的前 n/2 列,維度為 t×(n/2) bit, M2 表示矩陣 M 的后n/2 列,維度同樣為 t×(n/2) bit。
c)矩陣切片與存儲。構建矩陣 N1=(N1*,0,N1*,1,… N1?,(t×n)/2y-1) ,本文方案使用256bitYMM寄存器,所以設置矩陣 N1 的維度為 256×(t×n)/2y bit,其中 N1 中的每個元素均為256bit,N1*,i 為 N1 中的第 i 列, 0?i?(Ωt×Ω)/2y-1 。對 M1 矩陣進行切片:將 M1 的第 (t×n)/2y×w+i 列數據按順序放入 N1*,i 中, 0?w2 采用與 M1 相同的切片與存儲方法,構建相應矩陣N2 ,并將其存儲到另一組YMM寄存器中。
按上述步驟對數據進行比特切片分組后便可調整密碼算法輪函數進行加密實現,生成的密文則需要再次通過切片方法的逆運算進行轉換,從而將寄存器中數據按原始矩陣比特排列順序進行存放。
利用SIMD指令集技術將 χt 個分組長度為 n bit數據高效地進行切片組合,通過比特切片和SIMD的結合對密碼算法進行多組數據同時加密,從而充分利用寄存器容量與處理能力。與圖3中的原始切片方法相比,本文方法切片效率更高,能用更少的指令達到切片效果,并且減少了寄存器之間的數據讀取操作,使算法的加密效率進一步得到提升。算法2與3分別表示類AES分組密碼算法通用比特切片與逆類AES分組密碼算法通用比特切片,其中 s[i] 為第 i 組YMM寄存器。
算法2類AES分組密碼算法通用比特切片
輸人: sTATE 。
輸出 :i 個256bit寄存器 s[0]…s[i-1] 。
(204for (j=0;j 通過load函數將明文數據存儲在256bits [j] 寄存器中,完成步驟a)的數據加載與矩陣構建工作
/move(s[0],…s[i-1])/* 將 s[i] 中的數據進行分解,完成步驟 b )得到的兩個子矩陣
/Bitslice(s[0]…s[i-1])/* 對步驟b)的輸出進行切片處理,將寄存器中的數據進行重排實現步驟c),并將切片后的數據返回寄存器中進行存儲*/return s[0]…s[i-1] (
{
算法3逆類AES分組密碼算法通用比特切片
輸入:256bit寄存器 s[0]…s[i-1] 。
輸出: sTATE 。
unslice (s[0]…s[i-1]) unBitslice (s[0]…s[i-1])// 步驟c)的逆處理unMove (s[0]…s[i-1])/* 對unBitslice函數輸出數據進行恢復重排并存儲在寄存器中
/for (j=0;j
returnSTATE一
3LED密碼算法的切片應用
3.1LED分組密碼算法切片加密實現流程
本節采用第2章所提出的類AES分組密碼算法的通用切片方法對LED分組密碼進行應用實現,以下為具體切片加密流程。
關于LED密碼算法優化實現主要包含數據的預處理編排、輪函數加密、數據逆編排三個步驟。首先,在保證LED密碼基于比特切片技術實現過程正確的情況下,使用較少AVX2指令數來實現加密前數據預處理編排和加密后數據逆編排。基于AVX2指令集優化實現,使得算法在相同時鐘周期下可以處理更多比特數據。本文實現過程中,采用了Feng等人[22提出的基于SAT搜索方法對LED加密過程的非線性部件S盒進行優化實現,利用此方案在進行S盒實現時,可進一步減少邏輯運算操作,使算法加密效率得到明顯提升。其詳細優化實現過程如圖4所示。
3.2數據預處理編排
3.2.1 明文初始化模塊
LED密碼算法分組長度為 64bit ,為了能夠更好地進行切片處理,本文采用 256bit 寄存器對數據進行處理與存儲操作,處理器寬度 N 為64,根據第2章推導結果可知,比特切片窗口g 為32bit,將分組數量 Φt 設置為32,通過計算得到應使用8組256 bit寄存器
,其中, Vmi=(Vmi,0) Vmi,1,…,Vmi,255) 為 256bit 的寄存器,圖5為比特切片示意圖,0?i?7 。
將32個64bit分組數據放入寄存器中進行存儲。具體存儲方式為:構建矩陣 M=(M0,0,M0,1,M0,2,M0,3,…,M31,62 M31,63) ,矩陣維度為 32×64 bit,其中 Ma,b 表示比特變量,(Ma,0,Ma,1,Ma,2,…,Ma,63) 表示矩陣 M 的第 a 行,代表第 a 個明文分組, 0?a?31,0?b?63 。
隨后,對矩陣 M 進行切片存儲。首先,將 M 分解成 M1= (M*,0,M*,1,M*,2,M*,3,…,M*,31) 和 M2=(M?,32,M?,33,M?,34,M?,35,…, M*,63 。其中, M*,b 表示矩陣 M 的第 b 列。因此,矩陣 M1 是矩陣 M 前32列所構成的矩陣,矩陣 M2 是矩陣 M 后32列所構成的矩陣。隨后,定義維度為 256×4 bit矩陣 N1=(N1*,0,N1*,1 ,N1*,2,N1*,3) ,將 M1 的第 4×w+i 列按順序放入 N1ast,i,0?w?7 ,0?i?3 。最后,將矩陣 N1 中的第 i 列放人寄存器 Vmi 中,0?i?3 。由此完成對矩陣 M1 的分離存儲。之后對矩陣 M2 進行同樣的處理,將剩余 32×32 bit明文數據放入寄存器 Vm4 、Vm5,Vm6,Vm7 中。
3.2.2密鑰編排模塊
關于密鑰編排操作,本文以LED-64進行描述。首先,定義一個 32×64 bit矩陣 K ,對64bit密鑰key進行擴展,將擴展后的密鑰數據分別放人矩陣 K 中的每一行。之后,密鑰編排實現與存儲方法與3.2.1節中對明文初始化操作步驟一致。同樣選取8組 256bit 寄存器 Km=(Km0,Km1,…,Km7) 對編排后的密鑰進行存儲。LED-128的密鑰編排方式與LED-64同理,唯一不同的是,需要16組 256bit 寄存器進行存儲。
3.2.3輪常數擴展模塊
首先,將LED經典實現方法的 64bit 輪常數進行存儲,定義 r 個維度為 32×64bit 矩陣 ΨCr,r 表示輪數,用于存儲輪常數,0?r?31 。每輪輪常數擴展為 32×64 bit矩陣, Cr=(ΣC0,0r,C0,1r C0,2r,C0,3r,…,C0,63r;…;C31,0r,C31,1r,C31,2r,C31,3r,…,C31,63r) ,其中,Ca,br 代表第 r 輪輪常數中第 a 行第 b 列比特數據, 0?r?31 ,0?a?31 , 0?b?63 。之后關于輪常數編排與存儲工作與
3.2.2節方法一致,將編排后的輪常數存儲到輪常數寄存器 Cmr=(Cm0r,Cm1r,…,Cm7r) 中。


3.3輪函數加密
3.3.1輪密鑰加模塊
將3.2節中完成編排后的明文數據存放在YMM寄存器Vm=(Vm0,Vm1,Vm2,Vm3,Vm4,Vm5,Vm6,Vm7) 中,編排后的輪密鑰存放于YMM寄存器 Km=(Km0 , Km1 , Km2 , Km3 Km4 ,Km5,Km6,Km7) 中,寄存器中的數據利用AVX2指令進行輪密鑰加: Vmi=XOR(Vmi,Kmi) , 0?i?7 。其中 XOR(x,y) 代表指令
。
3.3.2 輪常數加模塊
在處理輪常數加時,按照輪數 r 來選取輪常數寄存器
,將輪常數寄存器 Cmir 與3.3.1節輪密鑰加模塊后的 Vmi 寄存器進行輪密鑰加操作: Vmi=XOR (Vmi,Cmir) 。其中XOR (x,y) 代表指令 $\_ \mathrm { m m 2 5 6 \_ x o r \_ s i 2 5 6 } ( \ x , \$ y ) ,0?r?31,0?i?7 0
3.3.3 S盒運算模塊
利用SAT局部求解編碼方案搜索更加簡潔的S盒實現方法。在原始LED算法[1]S盒實現工作中,使用了12次異或操作、2次或操作、3次與操作,利用文獻[22]中所提出的SAT模型,搜索到LED的S盒實現方法僅使用了10次異或操作、2次或操作和2次與操作。基于文獻[22]實現方法,進一步給出了LED的S盒切片實現新方案,通過實驗證明,新方案給出的S盒實現方法在處理 128MB 數據時僅需要0.6s,相比于文獻[1]中S盒實現效率提升了 23.5% 。

3.3.4 行移位模塊
將完成S盒替換后的數據放人寄存器 Vmi 后,( Vm0 Vm1,Vm2,Vm3; 使用
1
shuffle_epi8( Vmi MASK(z1) )指令, 0?i?3 ;對YMM寄存器 (Vm4,Vm5,Vm6,Vm7) 使用指令
set_epi8 (z2 )、
shuffle_epi8( Vmi MASK(z2); )4?i?7 ,從而對寄存器中的比特位置進行相應的調整實現移位操作。表3為 z1,z2 移位參數。

3.3.5 列混淆模塊
對于左乘列混淆矩陣部分,可以根據特定位之間相互異或組合操作來表示。這里以輸入寄存器( Vm0,Vm1,Vm2,Vm3) 為例,在進行列混淆運算時經過以下計算,得到四個對應的YMM輸出寄存器 (Y0,Y1,Y2,Y3) ,其中, Vm0 和 Y0 均為四個連續比特數據中的最高位。對寄存器 (Vm4,Vm5,Vm6,Vm7) 所做操作與寄存器( ?Vm0,Vm1,Vm2,Vm3) 同理。
在LED密碼算法中,本文切片方案是以每半字節為單位進行分組,所以比特之間相互異或等操作就變成了寄存器之間的移位與異或操作相結合。具體實現原理為

4實驗結果
本章分析比較了已公開文獻中對LED加密算法的幾種軟
3.4數據逆編排模塊
按照上述模塊操作順序,對明文信息進行加密,即可完成一輪數據加密,循環迭代32輪,即可得到LED-64加密后的密文信息,最后對密文信息進行逆初始化處理,將3.2.1節明文初始化模塊操作逆向實現,由此得到與明文比特數據相對應的密文數據。
件實現方法。實驗使用C語言對LED算法進行了優化實現,并在相同的軟硬件環境下測試了這些方法的效率。同時,編寫了原始的LED切片且以不使用指令集的代碼和只使用SIMD技術的LED實現方法作為對比參考。考慮到個人電腦端通常內存較充裕,測試并沒有區分8GB與16GB的內存差異。表4詳細展示了測試環境參數。


本文對 1024bit 數據進行 1000000 次加密測試來計算各類算法所花費的時間,以此來評估其實現效率。如表6所示,匯總了幾類密碼算法在不同CPU上使用比特切片技術、SIMD技術和S盒優化技術對加密速度及內存占用的影響。實驗采用debug模式進行調試,測試結果揭示了在相同處理器環境中不同實現方法所造成的性能差異,這為將來的優化工作提供了重要參考。

以上實驗數據表明,使用了SIMD技術與比特切片技術的密碼算法的實現效率有著顯著提升,并且本文研究比較了五種不同密碼算法實現效率,其中LED-64性能提升了2.26倍左右,LED-128性能提升了2.14倍左右。相比于其他四種密碼算法,本文LED實現方案無論在內存還是加密效率上都有著明顯優勢。此類切片方法具有優勢的主要原因是減少了實現過程中的指令消耗以及數據調度,能夠用相同數量指令完成更多的切片處理工作,同時使用AVX2指令完成對S盒優化后的并行加密方案在效率上也高于其他方案。由于實驗平臺的不同,實驗數據雖與其他參考文獻數據略有不同,但使用方法一致。實驗結果表明,采用本文的類AES分組密碼算法切片方法可以使加密效率得到明顯提升。
5結束語
本文提出一種通用的類AES分組密碼算法切片方法,并利用SIMD技術對切片過程進行了優化實現,不僅提升了算法實現效率,也提高了算法針對緩存計時攻擊等側信道攻擊的防御能力。最后,利用本文方法對LED分組密碼算法進行了實現,并通過簡化S盒的邏輯運算,使算法加密效率再次提升。數據顯示,LED-64與LED-128加密性能分別提升了 226% 和214% ,證明了本文方法是有效的。
本文針對類AES分組密碼軟件實現方案,是基于
架構處理器并且結合AVX2指令集實現的,但設計理念也可應用于資源受限的嵌入式平臺。結合國內外相關研究進展可知,該研究領域仍有值得探索的價值。例如,在本文的比特切片設計模型中使用了20個YMM寄存器,大量中間變量必然會導致算法在執行過程中出現頻繁的內存訪問與數據交互,這對算法實現效率有著相當大的影響,之后的研究可以圍繞如何減少寄存器使用,尋求更加高效的比特切片實現模型來減少內存訪問次數。
參考文獻:
[1]Guo Jian,PeyrinT,PoschmannA.TheLEDblock cipher[C]// Proc of the13th International Workshop Cryptographic Hardware and Embedded Systems.Berlin:Springer,2011:326-341.
[2]Fujishiro M,Yanagisawa M,TogawaN.Scan-based side-channel attack on the LED block cipher using scan signatures[J].IEICE Transon Fundamentals of Electronics,Communications and Computer Sciences,2014,97(12):2434-2442.
[3]劉波濤,彭長根,吳睿雪,等.基于MILP方法的LED密碼安全 性分析[J].計算機應用研究,2020,37(2):505-509,517. (LiuBotao,PengChanggen,Wu Ruixue,etal.Based on MILP method for security analysisof LED[J].Application Research of Computers,2020,37(2):505-509,517.)
[4]樊婷,韋永壯,武小年,等.輕量級分組密碼LED的相關密鑰差 分分析[J].信息安全學報,2020,5(1):35-43.(Fan Ting, WeiYongzhuang,WuXiaonian,etal.Differential analysisofrelated keysforlightweightblock cipherLED[J].Journal ofCyberSecurity,2020,5(1):35-43.)
[5]BihamE.Afast newDESimplementationin software[C]//Proc of the4th International Workshop Fast Software Encryption.Berlin: Springer,1997:260-272.
[6]Rebeiro C,SelvakumarD,Devi ASL.Bitslice implementation of AES[C]//Proc of the5th International ConferenceCryptologyand Network Security.Berlin:Springer,2006:203-212.
[7]BenadjilaR,Guo Jian,LomnéV,etal.Implementing lightweight block ciphers on x86 architectures[C]//Proc of the 2Oth International Conference Selected Areasin Cryptography.Berlin:Springer, 2013:324-351.
[8]Papapagiannopoulos K. High throughput in slices: the case of PRESENT,PRINCE and KATAN64 ciphers[C]//Proc of the 1Oth International WorkshopRadio Frequency Identification:Securityand Privacy Issues.Berlin:Springer,2014:137-155.
[9]EldosoukyA,SaadW.Onthecybersecurityofm-Health IoTsystems with LED bitslice implementation [C]//Proc of IEEE International Conference on Consumer Electronics.Piscataway,NJ:IEEE Press, 2018:1-6.
[10]Hajihassni O,MonfaredSK,Khasteh SH,et al.Fast AES implementation:a high-throughput bitsliced approach[J]. IEEE Trans on Parallel and Distributed Systems,2019,30(10):2211-2222.
[11]Adomnicai A,Peyrin T.Fixslicing AES-like ciphers:new bitsliced AES speed records on ARM-Cortex MandRISC-V[J]. IACR Trans on Cryptographic Hardware and Embedded Systems,2020, 2021 (1):402-425.
[12]馮秀濤,曾祥勇,張凡,等.輕量級分組密碼算法FBC[J].密 碼學報,2019,6(6):768-785.(Feng Xiutao,Zeng Xiangyong, ZhangFan,et al.On the lightweight block cipher FBC[J].Journal of Cryptologic Research,2019,6(6):768-785.)
[13]LeurenG,PernotC.Design ofa linearlayer optimisedfor bitsliced 32-bit implementation [J]. IACR Trans on Symmetric Cryptology,2024,2024(1):441-458.
[14]Matsuda S,MoriaiS.Lightweightcryptographyfor thecloud:exploit the power of bitslice implementation[C]//Proc of the 14th International Workshop Cryptographic Hardware and Embedded Systems. Berlin:Springer,2012:408-425.
[15]張笑從,郭華,張習勇,等.SM4算法快速軟件實現[J].密碼 學報,2020,7(6):799-811.(Zhang Xiaocong,Guo Hua,Zhang Xiyong,et al.Fast software implementationof SM4 algorithm [J]. Jourmal of Cryptologic Research,2020,7(6):799-811.)
[16]Miao Xin,LiLu,Guo Chun,etal.Bit-Sliced implementation of SM4 and new performance records [J]. IET Information Security, 2023,2023(1) :article ID 1821499.
[17]陳晨,郭華,劉源灝,等.基于寄存器的SM4軟件優化實現方法 [J].密碼學報,2024,11(2):427-440.(Chen Chen,Guo Hua, Liu Yuanhao,et al.Optimization of register-based SM4 software[J]. Journal of Cryptologic Research,2024,11(2):427-440.)
[18]高瑩,汪龍昕,田蕾,等.分組密碼uBlock 算法快速軟件實現 [J].國防科技大學學報,2024,46(6):96-106.(Gao Ying, WangLongxin,Tian Lei,et al.Fast software implementationof the block cipher uBlock algorithm[J].Joumal of National University of Defense Technology,2024,46(6):96-106.)
[19]雷斗威,何德彪,羅敏,等.基于AVX512的格密碼高速并行實 現[J].計算機工程,2024,50(2):15-24.(LeiDouwei,He Debiao,Luo Min,et al.High-speed parallel implementation of latice-based cryptography based on AVX512[J].Computer Engineering,2024,50(2):15-24.)
[20]Bogdanov A,Knudsen L R,Leander G. PRESENT:an ultra-lightweight block cipher[C]//Proc of the9th International Workshop Cryptographic Hardware and Embedded Systems. Berlin: Springer, 2007: 450-466.
[21]Intel Corporation.Intel intrinsics guide[EB/OL].(2013)[2024-12- 22].https://software.intel.com/sites/landingpage/IntrinsicsGuide/
[22]Feng Jingya,Wei Yongzhuang, Zhang Fengrong,et al.Novel optimized implementations of lightweight cryptographic S-boxes via SAT solvers[J].IEEE Trans on Circuits and Systems I:Regular Papers,2024,71(1):334-347.