關(guān)鍵詞:LED分組密碼; Δx64 架構(gòu);軟件快速實(shí)現(xiàn);比特切片;SIMD
中圖分類號(hào):TP309 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):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輕量級(jí)分組密碼算法,其設(shè)計(jì)目標(biāo)是為了在資源受限環(huán)境下提供高效且安全的加密方案。同時(shí),隨著文獻(xiàn)[2\~4]的分析檢驗(yàn),LED密碼算法的安全性得到了充分驗(yàn)證??焖俑咝У募用軐?shí)現(xiàn)不僅能夠提升系統(tǒng)的整體性能,還能進(jìn)一步增強(qiáng)設(shè)備的續(xù)航能力。因此,對(duì)LED等輕量級(jí)分組密碼算法的快速實(shí)現(xiàn)進(jìn)行深入研究具有非常重要的實(shí)際意義。
比特切片技術(shù)是一種十分重要的快速實(shí)現(xiàn)方法,由Biham[5在1997年首次提出并將其應(yīng)用于DES算法。隨后比特切片技術(shù)被廣泛應(yīng)用于分組密碼算法的優(yōu)化實(shí)現(xiàn),如2006年,Rebeiro等人[基于比特切片技術(shù)構(gòu)建了AES算法軟件優(yōu)化實(shí)現(xiàn)結(jié)構(gòu),并且利用三種不同處理器指令進(jìn)一步對(duì)AES進(jìn)行優(yōu)化。2014年,Benadjila等人在x86平臺(tái)上對(duì)Piccolo等算法的比特切片與查找表實(shí)現(xiàn)方法進(jìn)行分析比較。同年,Papapagiannopoulos[8通過利用比特切片方法,減少了PRES-ENT等密碼算法的內(nèi)存訪問次數(shù),并通過AVR處理器來(lái)實(shí)現(xiàn)。2018年,Eldosouky等人[針對(duì)物聯(lián)網(wǎng)系統(tǒng)特性,構(gòu)建LED密碼算法比特切片實(shí)現(xiàn)方法的MTD框架。次年,Hajihassani等人[0]利用比特切片方法進(jìn)一步提高了高級(jí)加密算法AES的加解密吞吐率。隨后,在2022年,Adomnicai等人[11]給出改進(jìn)的比特切片方法“固定切片技術(shù)(Fixslicing)”,并利用此方法在ARM和RISC-V平臺(tái)上對(duì)AES算法進(jìn)行了實(shí)現(xiàn)。該方法以整合線性層的方式使AES算法的實(shí)現(xiàn)效率提升了 21% ,這為之后的切片研究提供了一種全新方法。此外,比特切片技術(shù)也應(yīng)用于分組密碼算法的設(shè)計(jì)以及部件優(yōu)化實(shí)現(xiàn),如2019年,馮秀濤等人[1]設(shè)計(jì)了一種輕量級(jí)分組密碼算法FBC。該算法的非線性函數(shù)F采用比特切片設(shè)計(jì)理念實(shí)現(xiàn),這使得算法的輕量化與靈活性得到了加強(qiáng)。2024年,Leuren等人[13]提出一種針對(duì) 32bit 處理器的切片優(yōu)化實(shí)現(xiàn)方法,通過調(diào)整異或與旋轉(zhuǎn)操作,不僅使算法在加密效率上有所提高,還能使算法線性層擁有更大分支數(shù)。
1996年Intel推出單指令多數(shù)據(jù)SSE(streamingSIMDex-tensions)指令集后,比特切片與多種指令集結(jié)合使用情況變得越來(lái)越廣泛。2012年,Matsuda等人[14]將SSE指令與比特切片技術(shù)應(yīng)用于Present與Piccolo算法,使兩者的加密吞吐量分別達(dá)到4.3cycle/Byte和4.57cycle/Byte。之后,Intel又推出高級(jí)向量指令集AVX(advancedvectorextensions)。在2020年,張笑從等人[15]利用比特切片技術(shù),結(jié)合AVX2指令集,提出了一種針對(duì)SM4算法的快速軟件優(yōu)化實(shí)現(xiàn)方法,使算法的實(shí)現(xiàn)效率提高了 43% 。與此同時(shí),在2023年,Miao等人[1也提出一種針對(duì)SM4算法的并行切片方案,通過操作256bit寄存器并行運(yùn)算64組數(shù)據(jù),使得SM4-CTR與SM4-GCM模式加密效率分別提升了 60% 和 46% 。隨后,2024年,陳晨等人[17]在文獻(xiàn)[15]的研究基礎(chǔ)上降低了代碼內(nèi)存訪問次數(shù),進(jìn)一步提高了SM4算法加密效率。近期,高瑩等人[18]對(duì)uBlock算法進(jìn)行了快速實(shí)現(xiàn)研究,通過使用AVX2指令將uBlock-128/128、uBlock-128/256和uBlock-256/256的加密速度分別提升269% 、 182% 和 49% 。除了SSE、AVX2指令,雷斗威等人[19還利用一種更為高級(jí)的指令A(yù)VX512,通過該指令對(duì)Kyber算法進(jìn)行優(yōu)化,且采用冗余比特技術(shù)加強(qiáng)并行處理數(shù)據(jù)能力,將算法的實(shí)現(xiàn)速度提升10\~15倍。
本文基于AVX2指令集,提出了一種類AES密碼算法通用比特切片實(shí)現(xiàn)方法,并將其應(yīng)用于LED輕量級(jí)分組密碼算法。除此之外,通過對(duì)LED算法S盒比特切片實(shí)現(xiàn)進(jìn)一步優(yōu)化,使LED-64、LED-128的加密效率分別提升了 226% 和 214% 。
1相關(guān)技術(shù)
1.1LED算法
LED密碼算法采用SPN結(jié)構(gòu),其分組長(zhǎng)度為 64bit ,密鑰長(zhǎng)度為64bit和 128bit ,記為L(zhǎng)ED-64和LED-128,迭代步數(shù)為8步和12步。
算法主要由輪密鑰加(AddRoundKey)和步變換(step)兩部分組成,AddRoundKey(STATE, SKi )使用子密鑰 SKi 與明文狀態(tài)矩陣進(jìn)行按位異或操作,如圖1所示。加密過程中步驟數(shù)r 取決于密鑰的大小。對(duì)于 64bit 密鑰,步驟數(shù)為 r=8,128 bit密鑰步驟數(shù)為 r=12 0
SK SK step SK2 SK P 4輪加密 4輪加密 4輪加密 出 →C 單輪 4122 S 4 316156 sIssIs ↑ BEA9 SIsSIS ↑ 2|2FB 輪常數(shù)加 S盒替換 行移位 列混淆 AddConstants SubCells ShiftRows MixColumns
1.2LED算法加密步驟
對(duì)于 64bit 明文數(shù)據(jù) P ,將其分解為16塊4bit單元
,設(shè)其為加密狀態(tài)的初始值并存入狀態(tài)矩陣sTATE 。
密鑰信息同樣按4bit為一個(gè)單元進(jìn)行表示,記為
,當(dāng)密鑰長(zhǎng)度為 64bit 時(shí) l=15 ,第 i 輪子密鑰為 SKi= K 密鑰長(zhǎng)度為 128bit 時(shí)則
,生成子密鑰 K0 和 K?1,K?0 和(204號(hào) K1 這兩個(gè)密鑰在輪密鑰加密步驟中交替使用,即 SKi=Kimod2 。
步變換step(STATE)包含對(duì)內(nèi)部狀態(tài)的四輪加密。每輪加密依次進(jìn)行操作:輪常數(shù)加(AddConstants)、S盒替換(Sub-Cells)行移位(ShiftRows)和列混淆(MixColumns),如算法1所示。
算法1LED算法加密偽代碼
輸入:Plaintext ??SKi 。
輸出:Ciphertext。
Plaintext STATE/. /明文轉(zhuǎn)換為狀態(tài)矩陣
for i=0 to r-1 dolAddRoundKey( STATE,SKi) //對(duì)狀態(tài)矩陣進(jìn)行輪密鑰加操作for j=0 to 3do !AddConstants( sTATE //對(duì)狀態(tài)矩陣進(jìn)行輪常數(shù)加操作SubCells(STATE)//對(duì)狀態(tài)矩陣進(jìn)行S盒替換操作ShiftRows STATE)/* 通過邏輯移位操作實(shí)現(xiàn)狀態(tài)矩陣的行移位 * /MixColumns( sTATE)/* 通過列混淆矩陣與狀態(tài)矩陣的異或移位操作實(shí)現(xiàn)列混淆*/
AddRoundKe y(STATE,SKr)Ciphertext/* 完成最終輪密鑰加
得到相應(yīng)密文 * /
return Ciphertext
a)輪常數(shù)加。首先,將6 bit 數(shù)據(jù) (rc5,rc4,rc3,rc2,rc1,rc0) (204號(hào)初始化為0。之后,在每一輪加密中, (rc5,rc4,rc3,rc2,rc1,rc0) 左移一位并生成新的 rc0 ,輪常數(shù)更新如式(1)所示。按照矩陣式(2)所示的方式進(jìn)行比特排列以生成輪常數(shù)矩陣,其中,ks7,ks6,…,ks0 對(duì)應(yīng)密鑰長(zhǎng)度的二進(jìn)制表示。最后,將得到的輪常數(shù)矩陣與狀態(tài)矩陣 sTATE 進(jìn)行逐比特異或運(yùn)算實(shí)現(xiàn)輪常數(shù)加。
b)S盒。LED 密碼算法S盒與PRESENT算法 [20]S 盒一致,且該S盒已被許多輕量級(jí)密碼算法采用。4bitS盒的十六進(jìn)制轉(zhuǎn)換如表1所示。
c)行移位。狀態(tài)矩陣STATE的第 χi 行向左循環(huán)旋轉(zhuǎn) χi 個(gè)半字節(jié), 0?i?3 。
d)列混淆。MixColumns( STATE,M) 可以看作狀態(tài)矩陣sTATE 左乘MDS矩陣 M 矩陣 M 中的數(shù)據(jù)為有限域 GF(24) 元素,其中不可約多項(xiàng)式為 X4+X+1,M 矩陣如下所示。
1.3單指令多數(shù)據(jù)處理
SIMD(singleinstructionmultipledata)技術(shù)是指使用單一指令并行處理多組數(shù)據(jù)。當(dāng)前,Intel、AMD、ARM和IBM等公司所生產(chǎn)的處理器均可支持SIMD技術(shù)。Intel處理器中的SSE/AVX/AVX2指令集21正是基于SIMD技術(shù)實(shí)現(xiàn)。SSE指令集使用128bitXMM寄存器,可以使用單次指令處理 128bit 數(shù)據(jù)。AVX指令集使用256bitYMM寄存器,該寄存器由兩個(gè)128bit通道組成。
2013年,Intel推出了支持AVX2指令集的處理器。AVX2指令集是AVX指令集的擴(kuò)展和改進(jìn),增加了對(duì)跨通道操作的支持,被稱為“Haswell新指令集”。AVX2支持8通道 32bit 異或操作、與非操作、循環(huán)移位和查找表等。表2列出了關(guān)于AVX2的部分指令。
1.4 比特切片
比特切片是一種軟件實(shí)現(xiàn)技術(shù),能有效減少邏輯運(yùn)算。首先,將數(shù)據(jù)劃分為與CPU寄存器寬度一致的分組大小,再通過使相同索引數(shù)據(jù)接受相同運(yùn)算操作以達(dá)到減少邏輯指令的目的,由此實(shí)現(xiàn)固定時(shí)間處理多組明文數(shù)據(jù)。LED算法輸入輸出均為 64bit ,圖2展示了64組明文數(shù)據(jù)在64位處理器中數(shù)據(jù)存儲(chǔ)形式,其中 bji 代表第 i 個(gè)明文分組中的第 j bit數(shù)據(jù)。在64位處理器上,原始加密方式只能依次處理單個(gè)分組數(shù)據(jù)來(lái)生成密文,而通過比特切片技術(shù)可以單次并行處理多個(gè)分組數(shù)據(jù)來(lái)提高算法的實(shí)現(xiàn)速度。多個(gè)分組的明文數(shù)據(jù)通過數(shù)據(jù)預(yù)處理階段進(jìn)行排列組合,具體排列方式如圖3所示。隨后,多個(gè)分組加密操作合并為一個(gè)函數(shù),并使用邏輯操作指令來(lái)實(shí)現(xiàn)。為確保加密結(jié)果的正確性,完成加密操作后需進(jìn)行預(yù)處理階段的逆排列組合,以生成最終密文數(shù)據(jù)。通過分析現(xiàn)有基于比特切片技術(shù)優(yōu)化實(shí)現(xiàn)方法,如圖3所示的比特切片方法,雖可更加細(xì)致地將比特?cái)?shù)據(jù)進(jìn)行移位重組,但對(duì)寄存器數(shù)量有較高要求,并且加大了寄存器之間數(shù)據(jù)讀取操作,尤其在進(jìn)行數(shù)據(jù)初始化和S盒替換時(shí)消耗更加明顯?;谝陨显?,為了充分利用寄存器的并行處理能力,本文提出了一種對(duì)于類AES分組密碼算法的通用切片方法。
2通用的類AES分組密碼算法切片方法
2.1理論依據(jù)
以原始比特切片實(shí)現(xiàn)模型為例,當(dāng)使用 128bit 指令集對(duì)LED算法進(jìn)行比特切片實(shí)現(xiàn)時(shí),并行處理的明文數(shù)據(jù)多達(dá)256組,這不僅需要大量?jī)?nèi)存來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),還會(huì)消耗更多操作指令來(lái)完成加密前后的數(shù)據(jù)編排以保證加密結(jié)果的正確性。內(nèi)存消耗以及數(shù)據(jù)編排所需的繁雜指令反而會(huì)影響算法整體加密效率。因此選擇合適的切片窗口成為了提升算法效率的關(guān)鍵。為提高現(xiàn)有比特切片實(shí)現(xiàn)方法的靈活性以及實(shí)現(xiàn)效率,本文方案針對(duì)類AES分組密碼算法提出了一種通用的比特切片方法,其設(shè)計(jì)理念如下。
定義在一個(gè) N 位處理器中對(duì)分組數(shù)據(jù)進(jìn)行切片,切片寬度為 y bit,數(shù)據(jù)分組長(zhǎng)度為 n bit,處理分組數(shù)量為 t,g 是切片的窗口寬度。如圖3所示,當(dāng) g 取 64bit 時(shí),第一個(gè)窗口將順序存儲(chǔ)每個(gè)數(shù)據(jù)塊中的 b0i bit,每個(gè)寄存器字包含 64bit 信息,從而使不同數(shù)據(jù)分組相同比特位置完全隔離。為了方便切片,切片窗口寬度與分組數(shù)量滿足關(guān)系 g=x×t ,令 x 為正整數(shù)。
本文方法在實(shí)際操作中將 t×n 比特?cái)?shù)據(jù)分割為兩個(gè)部分分別進(jìn)行操作,所以本文將切片窗口數(shù)量作如下規(guī)定:在處理Φt×n bit數(shù)據(jù)且切片窗口為 N 時(shí),所需占用切片窗口數(shù)量為a=(t×n)/N ,當(dāng)切片窗口大小為 g 時(shí),將數(shù)據(jù)拆分為兩部分,且每部分大小為 (t×n)/2 ,此時(shí)每部分所占用的切片窗口數(shù)量為 ,令 a 與 b 滿足關(guān)系 a=b ,可以推出(t×n)/N=[(t×n)/2]/g 即 N=2g 。
2.2 切片設(shè)計(jì)方案
綜上,本文比特切片設(shè)計(jì)方法將 Φt×n bit數(shù)據(jù)進(jìn)行拆分,在N 位處理器環(huán)境下得到切片窗口寬度為 g=N/2 。通過觀察發(fā)現(xiàn),本文方法進(jìn)行切片時(shí)只考慮待處理數(shù)據(jù)大小、切片窗口大小、處理器位寬、寄存器寬度。當(dāng)對(duì)切片窗口寬度為 g 寄存器大小為 yγ 大小為 t×n bit的數(shù)據(jù)進(jìn)行切片時(shí)具體步驟如下:
a)數(shù)據(jù)加載與矩陣構(gòu)建。將 χt 個(gè) n bit分組數(shù)據(jù)構(gòu)建為矩陣 M ,其維度為 t×n bit,每個(gè)分組對(duì)應(yīng)矩陣的第 i 行,記為Mi,0,Mi,1,…,Mi,n-1 ,即矩陣的每一行表示一個(gè)分組數(shù)據(jù)。
b)矩陣分解。將矩陣 M 按列分解為兩個(gè)子矩陣 ??M1 表示矩陣 M 的前 n/2 列,維度為 t×(n/2) bit, M2 表示矩陣 M 的后n/2 列,維度同樣為 t×(n/2) bit。
c)矩陣切片與存儲(chǔ)。構(gòu)建矩陣 N1=(N1*,0,N1*,1,… N1?,(t×n)/2y-1) ,本文方案使用256bitYMM寄存器,所以設(shè)置矩陣 N1 的維度為 256×(t×n)/2y bit,其中 N1 中的每個(gè)元素均為256bit,N1*,i 為 N1 中的第 i 列, 0?i?(Ωt×Ω)/2y-1 。對(duì) M1 矩陣進(jìn)行切片:將 M1 的第 (t×n)/2y×w+i 列數(shù)據(jù)按順序放入 N1*,i 中, 0?w2 采用與 M1 相同的切片與存儲(chǔ)方法,構(gòu)建相應(yīng)矩陣N2 ,并將其存儲(chǔ)到另一組YMM寄存器中。
按上述步驟對(duì)數(shù)據(jù)進(jìn)行比特切片分組后便可調(diào)整密碼算法輪函數(shù)進(jìn)行加密實(shí)現(xiàn),生成的密文則需要再次通過切片方法的逆運(yùn)算進(jìn)行轉(zhuǎn)換,從而將寄存器中數(shù)據(jù)按原始矩陣比特排列順序進(jìn)行存放。
利用SIMD指令集技術(shù)將 χt 個(gè)分組長(zhǎng)度為 n bit數(shù)據(jù)高效地進(jìn)行切片組合,通過比特切片和SIMD的結(jié)合對(duì)密碼算法進(jìn)行多組數(shù)據(jù)同時(shí)加密,從而充分利用寄存器容量與處理能力。與圖3中的原始切片方法相比,本文方法切片效率更高,能用更少的指令達(dá)到切片效果,并且減少了寄存器之間的數(shù)據(jù)讀取操作,使算法的加密效率進(jìn)一步得到提升。算法2與3分別表示類AES分組密碼算法通用比特切片與逆類AES分組密碼算法通用比特切片,其中 s[i] 為第 i 組YMM寄存器。
算法2類AES分組密碼算法通用比特切片
輸人: sTATE 。
輸出 :i 個(gè)256bit寄存器 s[0]…s[i-1] 。
(204for (j=0;j 通過load函數(shù)將明文數(shù)據(jù)存儲(chǔ)在256bits [j] 寄存器中,完成步驟a)的數(shù)據(jù)加載與矩陣構(gòu)建工作
/move(s[0],…s[i-1])/* 將 s[i] 中的數(shù)據(jù)進(jìn)行分解,完成步驟 b )得到的兩個(gè)子矩陣
/Bitslice(s[0]…s[i-1])/* 對(duì)步驟b)的輸出進(jìn)行切片處理,將寄存器中的數(shù)據(jù)進(jìn)行重排實(shí)現(xiàn)步驟c),并將切片后的數(shù)據(jù)返回寄存器中進(jìn)行存儲(chǔ)*/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])/* 對(duì)unBitslice函數(shù)輸出數(shù)據(jù)進(jìn)行恢復(fù)重排并存儲(chǔ)在寄存器中 /for (j=0;j
returnSTATE一
3LED密碼算法的切片應(yīng)用
3.1LED分組密碼算法切片加密實(shí)現(xiàn)流程
本節(jié)采用第2章所提出的類AES分組密碼算法的通用切片方法對(duì)LED分組密碼進(jìn)行應(yīng)用實(shí)現(xiàn),以下為具體切片加密流程。
關(guān)于LED密碼算法優(yōu)化實(shí)現(xiàn)主要包含數(shù)據(jù)的預(yù)處理編排、輪函數(shù)加密、數(shù)據(jù)逆編排三個(gè)步驟。首先,在保證LED密碼基于比特切片技術(shù)實(shí)現(xiàn)過程正確的情況下,使用較少AVX2指令數(shù)來(lái)實(shí)現(xiàn)加密前數(shù)據(jù)預(yù)處理編排和加密后數(shù)據(jù)逆編排。基于AVX2指令集優(yōu)化實(shí)現(xiàn),使得算法在相同時(shí)鐘周期下可以處理更多比特?cái)?shù)據(jù)。本文實(shí)現(xiàn)過程中,采用了Feng等人[22提出的基于SAT搜索方法對(duì)LED加密過程的非線性部件S盒進(jìn)行優(yōu)化實(shí)現(xiàn),利用此方案在進(jìn)行S盒實(shí)現(xiàn)時(shí),可進(jìn)一步減少邏輯運(yùn)算操作,使算法加密效率得到明顯提升。其詳細(xì)優(yōu)化實(shí)現(xiàn)過程如圖4所示。
3.2數(shù)據(jù)預(yù)處理編排
3.2.1 明文初始化模塊
LED密碼算法分組長(zhǎng)度為 64bit ,為了能夠更好地進(jìn)行切片處理,本文采用 256bit 寄存器對(duì)數(shù)據(jù)進(jìn)行處理與存儲(chǔ)操作,處理器寬度 N 為64,根據(jù)第2章推導(dǎo)結(jié)果可知,比特切片窗口g 為32bit,將分組數(shù)量 Φt 設(shè)置為32,通過計(jì)算得到應(yīng)使用8組256 bit寄存器 ,其中, Vmi=(Vmi,0) Vmi,1,…,Vmi,255) 為 256bit 的寄存器,圖5為比特切片示意圖,0?i?7 。
將32個(gè)64bit分組數(shù)據(jù)放入寄存器中進(jìn)行存儲(chǔ)。具體存儲(chǔ)方式為:構(gòu)建矩陣 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 個(gè)明文分組, 0?a?31,0?b?63 。
隨后,對(duì)矩陣 M 進(jìn)行切片存儲(chǔ)。首先,將 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列所構(gòu)成的矩陣,矩陣 M2 是矩陣 M 后32列所構(gòu)成的矩陣。隨后,定義維度為 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 。由此完成對(duì)矩陣 M1 的分離存儲(chǔ)。之后對(duì)矩陣 M2 進(jìn)行同樣的處理,將剩余 32×32 bit明文數(shù)據(jù)放入寄存器 Vm4 、Vm5,Vm6,Vm7 中。
3.2.2密鑰編排模塊
關(guān)于密鑰編排操作,本文以LED-64進(jìn)行描述。首先,定義一個(gè) 32×64 bit矩陣 K ,對(duì)64bit密鑰key進(jìn)行擴(kuò)展,將擴(kuò)展后的密鑰數(shù)據(jù)分別放人矩陣 K 中的每一行。之后,密鑰編排實(shí)現(xiàn)與存儲(chǔ)方法與3.2.1節(jié)中對(duì)明文初始化操作步驟一致。同樣選取8組 256bit 寄存器 Km=(Km0,Km1,…,Km7) 對(duì)編排后的密鑰進(jìn)行存儲(chǔ)。LED-128的密鑰編排方式與LED-64同理,唯一不同的是,需要16組 256bit 寄存器進(jìn)行存儲(chǔ)。
3.2.3輪常數(shù)擴(kuò)展模塊
首先,將LED經(jīng)典實(shí)現(xiàn)方法的 64bit 輪常數(shù)進(jìn)行存儲(chǔ),定義 r 個(gè)維度為 32×64bit 矩陣 ΨCr,r 表示輪數(shù),用于存儲(chǔ)輪常數(shù),0?r?31 。每輪輪常數(shù)擴(kuò)展為 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 輪輪常數(shù)中第 a 行第 b 列比特?cái)?shù)據(jù), 0?r?31 ,0?a?31 , 0?b?63 。之后關(guān)于輪常數(shù)編排與存儲(chǔ)工作與
3.2.2節(jié)方法一致,將編排后的輪常數(shù)存儲(chǔ)到輪常數(shù)寄存器 Cmr=(Cm0r,Cm1r,…,Cm7r) 中。
3.3輪函數(shù)加密
3.3.1輪密鑰加模塊
將3.2節(jié)中完成編排后的明文數(shù)據(jù)存放在YMM寄存器Vm=(Vm0,Vm1,Vm2,Vm3,Vm4,Vm5,Vm6,Vm7) 中,編排后的輪密鑰存放于YMM寄存器 Km=(Km0 , Km1 , Km2 , Km3 Km4 ,Km5,Km6,Km7) 中,寄存器中的數(shù)據(jù)利用AVX2指令進(jìn)行輪密鑰加: Vmi=XOR(Vmi,Kmi) , 0?i?7 。其中 XOR(x,y) 代表指令 。
3.3.2 輪常數(shù)加模塊
在處理輪常數(shù)加時(shí),按照輪數(shù) r 來(lái)選取輪常數(shù)寄存器 ,將輪常數(shù)寄存器 Cmir 與3.3.1節(jié)輪密鑰加模塊后的 Vmi 寄存器進(jìn)行輪密鑰加操作: 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盒運(yùn)算模塊
利用SAT局部求解編碼方案搜索更加簡(jiǎn)潔的S盒實(shí)現(xiàn)方法。在原始LED算法[1]S盒實(shí)現(xiàn)工作中,使用了12次異或操作、2次或操作、3次與操作,利用文獻(xiàn)[22]中所提出的SAT模型,搜索到LED的S盒實(shí)現(xiàn)方法僅使用了10次異或操作、2次或操作和2次與操作?;谖墨I(xiàn)[22]實(shí)現(xiàn)方法,進(jìn)一步給出了LED的S盒切片實(shí)現(xiàn)新方案,通過實(shí)驗(yàn)證明,新方案給出的S盒實(shí)現(xiàn)方法在處理 128MB 數(shù)據(jù)時(shí)僅需要0.6s,相比于文獻(xiàn)[1]中S盒實(shí)現(xiàn)效率提升了 23.5% 。
3.3.4 行移位模塊
將完成S盒替換后的數(shù)據(jù)放人寄存器 Vmi 后,( Vm0 Vm1,Vm2,Vm3; 使用 1
shuffle_epi8( Vmi MASK(z1) )指令, 0?i?3 ;對(duì)YMM寄存器 (Vm4,Vm5,Vm6,Vm7) 使用指令
set_epi8 (z2 )、
shuffle_epi8( Vmi MASK(z2); )4?i?7 ,從而對(duì)寄存器中的比特位置進(jìn)行相應(yīng)的調(diào)整實(shí)現(xiàn)移位操作。表3為 z1,z2 移位參數(shù)。
3.3.5 列混淆模塊
對(duì)于左乘列混淆矩陣部分,可以根據(jù)特定位之間相互異或組合操作來(lái)表示。這里以輸入寄存器( Vm0,Vm1,Vm2,Vm3) 為例,在進(jìn)行列混淆運(yùn)算時(shí)經(jīng)過以下計(jì)算,得到四個(gè)對(duì)應(yīng)的YMM輸出寄存器 (Y0,Y1,Y2,Y3) ,其中, Vm0 和 Y0 均為四個(gè)連續(xù)比特?cái)?shù)據(jù)中的最高位。對(duì)寄存器 (Vm4,Vm5,Vm6,Vm7) 所做操作與寄存器( ?Vm0,Vm1,Vm2,Vm3) 同理。
在LED密碼算法中,本文切片方案是以每半字節(jié)為單位進(jìn)行分組,所以比特之間相互異或等操作就變成了寄存器之間的移位與異或操作相結(jié)合。具體實(shí)現(xiàn)原理為
4實(shí)驗(yàn)結(jié)果
本章分析比較了已公開文獻(xiàn)中對(duì)LED加密算法的幾種軟
3.4數(shù)據(jù)逆編排模塊
按照上述模塊操作順序,對(duì)明文信息進(jìn)行加密,即可完成一輪數(shù)據(jù)加密,循環(huán)迭代32輪,即可得到LED-64加密后的密文信息,最后對(duì)密文信息進(jìn)行逆初始化處理,將3.2.1節(jié)明文初始化模塊操作逆向?qū)崿F(xiàn),由此得到與明文比特?cái)?shù)據(jù)相對(duì)應(yīng)的密文數(shù)據(jù)。
件實(shí)現(xiàn)方法。實(shí)驗(yàn)使用C語(yǔ)言對(duì)LED算法進(jìn)行了優(yōu)化實(shí)現(xiàn),并在相同的軟硬件環(huán)境下測(cè)試了這些方法的效率。同時(shí),編寫了原始的LED切片且以不使用指令集的代碼和只使用SIMD技術(shù)的LED實(shí)現(xiàn)方法作為對(duì)比參考??紤]到個(gè)人電腦端通常內(nèi)存較充裕,測(cè)試并沒有區(qū)分8GB與16GB的內(nèi)存差異。表4詳細(xì)展示了測(cè)試環(huán)境參數(shù)。
本文對(duì) 1024bit 數(shù)據(jù)進(jìn)行 1000000 次加密測(cè)試來(lái)計(jì)算各類算法所花費(fèi)的時(shí)間,以此來(lái)評(píng)估其實(shí)現(xiàn)效率。如表6所示,匯總了幾類密碼算法在不同CPU上使用比特切片技術(shù)、SIMD技術(shù)和S盒優(yōu)化技術(shù)對(duì)加密速度及內(nèi)存占用的影響。實(shí)驗(yàn)采用debug模式進(jìn)行調(diào)試,測(cè)試結(jié)果揭示了在相同處理器環(huán)境中不同實(shí)現(xiàn)方法所造成的性能差異,這為將來(lái)的優(yōu)化工作提供了重要參考。
以上實(shí)驗(yàn)數(shù)據(jù)表明,使用了SIMD技術(shù)與比特切片技術(shù)的密碼算法的實(shí)現(xiàn)效率有著顯著提升,并且本文研究比較了五種不同密碼算法實(shí)現(xiàn)效率,其中LED-64性能提升了2.26倍左右,LED-128性能提升了2.14倍左右。相比于其他四種密碼算法,本文LED實(shí)現(xiàn)方案無(wú)論在內(nèi)存還是加密效率上都有著明顯優(yōu)勢(shì)。此類切片方法具有優(yōu)勢(shì)的主要原因是減少了實(shí)現(xiàn)過程中的指令消耗以及數(shù)據(jù)調(diào)度,能夠用相同數(shù)量指令完成更多的切片處理工作,同時(shí)使用AVX2指令完成對(duì)S盒優(yōu)化后的并行加密方案在效率上也高于其他方案。由于實(shí)驗(yàn)平臺(tái)的不同,實(shí)驗(yàn)數(shù)據(jù)雖與其他參考文獻(xiàn)數(shù)據(jù)略有不同,但使用方法一致。實(shí)驗(yàn)結(jié)果表明,采用本文的類AES分組密碼算法切片方法可以使加密效率得到明顯提升。
5結(jié)束語(yǔ)
本文提出一種通用的類AES分組密碼算法切片方法,并利用SIMD技術(shù)對(duì)切片過程進(jìn)行了優(yōu)化實(shí)現(xiàn),不僅提升了算法實(shí)現(xiàn)效率,也提高了算法針對(duì)緩存計(jì)時(shí)攻擊等側(cè)信道攻擊的防御能力。最后,利用本文方法對(duì)LED分組密碼算法進(jìn)行了實(shí)現(xiàn),并通過簡(jiǎn)化S盒的邏輯運(yùn)算,使算法加密效率再次提升。數(shù)據(jù)顯示,LED-64與LED-128加密性能分別提升了 226% 和214% ,證明了本文方法是有效的。
本文針對(duì)類AES分組密碼軟件實(shí)現(xiàn)方案,是基于 架構(gòu)處理器并且結(jié)合AVX2指令集實(shí)現(xiàn)的,但設(shè)計(jì)理念也可應(yīng)用于資源受限的嵌入式平臺(tái)。結(jié)合國(guó)內(nèi)外相關(guān)研究進(jìn)展可知,該研究領(lǐng)域仍有值得探索的價(jià)值。例如,在本文的比特切片設(shè)計(jì)模型中使用了20個(gè)YMM寄存器,大量中間變量必然會(huì)導(dǎo)致算法在執(zhí)行過程中出現(xiàn)頻繁的內(nèi)存訪問與數(shù)據(jù)交互,這對(duì)算法實(shí)現(xiàn)效率有著相當(dāng)大的影響,之后的研究可以圍繞如何減少寄存器使用,尋求更加高效的比特切片實(shí)現(xiàn)模型來(lái)減少內(nèi)存訪問次數(shù)。
參考文獻(xiàn):
[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]劉波濤,彭長(zhǎng)根,吳睿雪,等.基于MILP方法的LED密碼安全 性分析[J].計(jì)算機(jī)應(yīng)用研究,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]樊婷,韋永壯,武小年,等.輕量級(jí)分組密碼LED的相關(guān)密鑰差 分分析[J].信息安全學(xué)報(bào),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]馮秀濤,曾祥勇,張凡,等.輕量級(jí)分組密碼算法FBC[J].密 碼學(xué)報(bào),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]張笑從,郭華,張習(xí)勇,等.SM4算法快速軟件實(shí)現(xiàn)[J].密碼 學(xué)報(bào),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軟件優(yōu)化實(shí)現(xiàn)方法 [J].密碼學(xué)報(bào),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 算法快速軟件實(shí)現(xiàn) [J].國(guó)防科技大學(xué)學(xué)報(bào),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的格密碼高速并行實(shí) 現(xiàn)[J].計(jì)算機(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.