NEWS
前沿技術(shù)|SM2-KDF算法快速實(shí)現(xiàn)及其應(yīng)用
發(fā)布時(shí)間: 2024-05-30 18:22引言
SM2橢圓曲線公鑰密碼算法是我國(guó)自主設(shè)計(jì)的公鑰密碼算法,包括橢圓曲線數(shù)字簽名算法,橢圓曲線密鑰交換協(xié)議,橢圓曲線公鑰加密算法,分別用于實(shí)現(xiàn)數(shù)字簽名、密鑰協(xié)商、數(shù)據(jù)加密等功能。我國(guó)的SM3密碼雜湊算法[1]是一種典型的密碼雜湊算法,用于計(jì)算數(shù)據(jù)的數(shù)字摘要(也叫雜湊值),目前已被廣泛運(yùn)用在網(wǎng)上銀行、電信運(yùn)營(yíng)商、電子商務(wù)、企業(yè)等眾多應(yīng)用領(lǐng)域。SM3算法計(jì)算數(shù)據(jù)的雜湊值是采取鏈?zhǔn)椒謮K計(jì)算法,即必須先計(jì)算輸入數(shù)據(jù)的前一個(gè)分塊(512比特)的迭代壓縮值,然后將此迭代壓縮值與后一個(gè)分塊(512比特)一起進(jìn)行迭代壓縮得到更新后的迭代壓縮值,如此反復(fù)直至處理完所有分塊。在SM2加密算法[2]中使用KDF(密鑰派生函數(shù))算法生成與明文等長(zhǎng)的密鑰流用于加密明文,KDF所采用的核心模塊就是SM3雜湊算法。
在云計(jì)算、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)葓?chǎng)景中,通常需要對(duì)數(shù)據(jù)進(jìn)行加密傳輸,現(xiàn)有的技術(shù)方案是采取數(shù)字信封的加密保護(hù)方式。PKCS#7解釋為:數(shù)字信封包含被加密的內(nèi)容和被加密的密鑰(用于加密該內(nèi)容)。數(shù)字信封就像一個(gè)雙保險(xiǎn)鎖,它不僅鎖住了你的秘密(數(shù)據(jù)),還把開(kāi)鎖的鑰匙(密鑰)也一起鎖了起來(lái)。在數(shù)字信封中,信息發(fā)送方采用對(duì)稱密鑰來(lái)加密信息內(nèi)容,比如使用SM4算法[3],然后將此對(duì)稱密鑰用接收方的公開(kāi)密鑰來(lái)加密(這部分稱數(shù)字信封)之后,將它和加密后的信息一起發(fā)送給接收方,接收方先用相應(yīng)的私有密鑰打開(kāi)數(shù)字信封,得到對(duì)稱密鑰,然后使用對(duì)稱密鑰解開(kāi)加密信息。數(shù)字信封主要包括數(shù)字信封封裝和數(shù)字信封解封裝,數(shù)字信封封裝是使用對(duì)方的公鑰將加密密鑰進(jìn)行加密的過(guò)程,只有對(duì)方的私鑰才能將加密后的數(shù)據(jù)還原;數(shù)字信封解封裝是使用私鑰將加密過(guò)的數(shù)據(jù)解密的過(guò)程。事實(shí)上,SM2算法有類似的屬性,可以直接對(duì)大塊的數(shù)據(jù)(數(shù)據(jù)長(zhǎng)度不超過(guò)128GB−32B)執(zhí)行加解密。
技術(shù)概述
傳統(tǒng)方案中不直接使用SM2而是選擇數(shù)字信封方案的一個(gè)主要原因是SM2執(zhí)行效率不高,其中瓶頸之一是SM2加密和解密使用的密鑰派生算法KDF的執(zhí)行效率較低。陳學(xué)雷等[4]提出了一種基于SIMD(Single Instruction Multiple Data,單指令流多數(shù)據(jù)流)寄存器并行執(zhí)行SM3的SM2-KDF快速實(shí)現(xiàn)方法。但該方法未能進(jìn)一步考慮SM2-KDF在SM2加解密應(yīng)用中的特殊性,有鑒于此,海泰方圓深入挖掘SM2-KDF在SM2加解密快速實(shí)現(xiàn)中的綜合應(yīng)用,給出更加高效的SM2加解密實(shí)現(xiàn)方案[5]。
方案介紹
海泰方圓提出一種基于并行計(jì)算方法執(zhí)行SM2算法的密鑰派生算法KDF的方法,不僅實(shí)現(xiàn)密鑰派生算法KDF的并行快速處理,還能進(jìn)一步提升SM2加密和解密功能的執(zhí)行效率。
在探究SM2加解密算法快速實(shí)現(xiàn)的過(guò)程中,海泰方圓公司關(guān)注到了算法關(guān)鍵步驟對(duì)KDF函數(shù)的使用。該函數(shù)的執(zhí)行涉及到對(duì)恒定長(zhǎng)度為512比特的SM2點(diǎn)坐標(biāo)與32比特計(jì)數(shù)器的雜湊處理。在此過(guò)程中,SM3雜湊函數(shù)特定的數(shù)據(jù)處理方式為SM2加解密算法的優(yōu)化提供了可能。輸入值的固定長(zhǎng)度與SM3的消息分塊大小匹配,使得第一個(gè)消息分塊的計(jì)算結(jié)果不變。這便于通過(guò)僅執(zhí)行一次計(jì)算并復(fù)用結(jié)果,規(guī)避了重復(fù)計(jì)算所導(dǎo)致的資源浪費(fèi)。第二個(gè)消息塊的值由計(jì)數(shù)器和特定填充字節(jié)構(gòu)成,呈現(xiàn)出相對(duì)穩(wěn)定性。在適當(dāng)?shù)臈l件下,例如存儲(chǔ)空間充裕時(shí),可以通過(guò)預(yù)計(jì)算第二個(gè)消息塊的消息擴(kuò)展階段進(jìn)一步減輕計(jì)算負(fù)擔(dān),提升效率。不同SM3計(jì)算實(shí)例之間的第二個(gè)消息塊相互獨(dú)立,為并行處理提供了用武之地。通過(guò)運(yùn)用SIMD指令集,如SSE、AVX、AVX2、AVX512,以及多線程技術(shù),可以實(shí)現(xiàn)SM3計(jì)算的并行化,從而顯著提高計(jì)算效率。這些優(yōu)化策略不僅提升了SM2-KDF的執(zhí)行效率,更為SM2加密算法和解密算法的性能增強(qiáng)開(kāi)辟了路徑。具體的優(yōu)化方案和執(zhí)行細(xì)節(jié),請(qǐng)參考相關(guān)文獻(xiàn)[5],以獲取更深入的技術(shù)解析和實(shí)施指南。通過(guò)這些優(yōu)化技術(shù),SM2能夠在保障信息安全的同時(shí),大幅提升數(shù)據(jù)處理的速度和效率,這可以為構(gòu)建高性能的信息安全體系奠定堅(jiān)實(shí)的基礎(chǔ)。
技術(shù)優(yōu)勢(shì)
本方案的技術(shù)優(yōu)勢(shì)包括:執(zhí)行效率高,可以顯著提升SM2加密和解密的性能,比如結(jié)合SSE指令、AVX512指令并行實(shí)現(xiàn)SM3的CF壓縮函數(shù),可以顯著提升KDF效率和SM2加解密效率,特別適合于大量數(shù)據(jù)的加密,擺脫對(duì)數(shù)字信封的依賴;兼容標(biāo)準(zhǔn)的SM2算法,不改變標(biāo)準(zhǔn)的SM2算法的加密解密執(zhí)行流程;可實(shí)施、可兼容和場(chǎng)景廣泛,從低端密碼產(chǎn)品至高端服務(wù)器都能兼容,并表現(xiàn)出很高的性能。
應(yīng)用場(chǎng)景分析
眾多應(yīng)用場(chǎng)景均可以使用,特別是大塊數(shù)據(jù)需要加密的應(yīng)用場(chǎng)景,比如金融、交通、水利、黨政等領(lǐng)域均可實(shí)施應(yīng)用。
后記
本文給出了一種通過(guò)提升SM2-KDF性能來(lái)快速實(shí)現(xiàn)SM2加解密的方案,結(jié)合SIMD技術(shù),比如SSE指令、AVX指令、AVX2指令、AVX512指令等可以顯著提升SM2公鑰加密算法的KDF性能以及SM2加密解密性能。本方法并不局限于特定平臺(tái),在X86、ARM、RISC-V、國(guó)產(chǎn)化平臺(tái)等眾多平臺(tái)上都有較好的發(fā)揮空間。