楊亞濤,董輝,劉建韜,張艷碩
(1.北京電子科技學院電子與通信工程系,北京 100070;2.西安電子科技大學通信工程學院,陜西 西安 710071)
認證加密(AE,authenticated encryption)算法在信息保護領域作用重大,能夠兼顧數據的機密性和完整性。通過將消息認證碼和加解密算法結合,可以實現認證標簽的單向計算過程,且在加解密環(huán)節(jié)擁有足夠的安全強度,以抵抗常見的密碼分析。
目前,主流的基于分組密碼的認證加密算法主要有2 種設計方式:一是基于分組密碼的認證加密方式,二是在現有的分組密碼的基礎上進行設計。前者依靠設計可靠模式結構并在底層使用分組密碼算法為相關的加解密和認證驗證提供服務,但提供服務的過程是不可見的,底層的算法可以相對簡單地進行替換,這類典型的認證加密算法有OCB[1](offset codebook)、EAX[2](encryption with authentication for transfer)、GCM[3(]galois/counter mode)。
隨著物聯網等信息產業(yè)的迅速發(fā)展,認證加密算法的需求環(huán)境也發(fā)生了很大的變化,之前的通用算法和基于分組密碼的工作方式類在現有的資源受限環(huán)境下的表現不盡如人意,如RFID(radio frequency identification)環(huán)境。直接設計類認證加密算法是指采用已驗證安全性和其他性能指標的、成型的分組密碼部件來進行認證加密算法的設計。這種設計方式致力于降低算法的實現代價和提升軟硬件表現,因其采用消息來更新算法的狀態(tài),用于消息認證的實現代價較低。但這些算法的安全性不能通過可證明安全理論來證明,需依靠各種安全性分析方法,常見的此類型的認證加密算法有AEGIS[4]、ALE(authenticated lightweight encryption)[5]、AEZ(advanced encryption standard-easy)[6]等。為獲得更好的認證加密效率與安全性,本文提出了新的方案。
本文的貢獻如下。
1) 本文提出了一種認證加密算法通用結構R(t,s)。不同于已有采用AES(advanced encryption standard)輪函數的直接設計類認證加密算法,該結構基于輕量級分組密碼算法uBlock[7]設計,以抵抗內部碰撞攻擊為安全性目標,使用了混合整數線性規(guī)劃(MILP,mixed integer linear programming)[8]方法,搜索確定結構中關鍵參數t、s和算法所使用的置換P,保證該結構在10 輪后有不少于66 個活躍S 盒。
2) 基于通用結構R(t,s)設計了認證加密算法AEUR(authenticated encryption algorithm based on uBlock round function)。AEUR 算法的設計基于uBlock 輪函數和廣義Feistel 結構,以4 個uBlock輪函數和置換P組成了算法的輪函數,輪函數用來更新狀態(tài)值,狀態(tài)值保證算法的正確性。算法處理數據的過程簡潔有效,從而優(yōu)化了算法運行過程,減少了資源消耗。AEUR 算法對多種安全性分析方法具有充分的抵抗能力,為國產密碼算法應用提供了一條新的參考途徑。
3) 應用SSE(streaming SIMD extension)指令集[9]對AEUR 算法進行了軟件實現。對AEUR 算法進行實現速率測試,以軟件運行時間計算,AEUR算法相比其他同類算法在運算速度上均有不同程度的提升,具有較好的綜合性能。
Bellare 等[10]在ASIACRYPT 2000 上提出了認證加密這一全新概念,將認證和加解密在同一算法中完成,通過共享一個密鑰來實現數據的機密性與完整性。近年來,部分學者拓寬了認證加密算法的應用領域,并基于不同的經典密碼算法實現了新的認證加密方式。2002 年,Rogaway[11]提出了基于相關數據的認證加密(ADAE,associated-data authenticated encryption)算法,結合OCB 和偽隨機函數PMAC(parallelizable MAC)構造了ADAE 算法,這種認證方式在保證了明文信息的保密性和完整性同時也保證了相關數據的完整性。2008 年,Iwata[12]提出了一種針對區(qū)塊密碼的認證加密模式,其中加密部分由一個CENC(common encryption)的密鑰流生成,并結合了基于分組密碼的哈希函數。2010 年,Sarkar[13]提出了并行認證加密模式,并與IPMAC(improved parallelizable MAC)結合,獲得新的認證加密方案。
隨著對認證加密領域以及應用環(huán)境的不斷研究和探索,原有的認證加密方案設計思路不能很好地適應新的應用環(huán)境。同時,基于新結構和新思想的方案不斷被提出。CAESAR(competition for authenticated encryption: security,applicability,and robustness)競賽的舉辦大大推動了認證加密算法設計的發(fā)展,其第三輪算法的特點介紹[1,4,14-16]如表1 所示。
表1 CAESAR 競賽第三輪算法特點
表2 uBlock 算法S 盒
表3 PL128 和PR128 變換參數
2018 年,張建等[17]基于SM4 輪函數設計了認證加密算法SMAE,該算法利用MILP 方法構造了消息認證碼和認證加密算法。2020 年,高國強等[18]基于AES 算法底層的輪函數,實現了一種基于AES 輪函數的認證加密算法AMRAE。這2 種算法都是基于現有的分組密碼輪函數來設計的,但安全性分析與實現效率尚有不足。本文綜合前述經驗,分析了現有方案的不足,在上述學者的研究思路上進行了擴充改進,采用2019 年我國第一屆密碼算法設計競賽中獲得一等獎的分組密碼算法uBlock 設計認證加密算法AEUR,其在安全性和實現速率方面較SMAE 和AMRAE均有不同程度的提升,為國產認證加密算法提供了一種新的參考。
uBlock 算法[7]的分組和密鑰長度為128 bit 和256 bit,記為uBlock-128/128、uBlock-128/256、uBlock-256/256。本文采用uBlock-128/128。
uBlock 算法對差分分析、線性分析、積分分析、不可能差分分析等密碼分析方法都有相應的安全冗余。uBlock 算法的密鑰擴展算法可以通過隨用隨生成的方法得到輪密鑰,這樣能夠減少算法需要的存儲空間。在本文中,<<<b表示循環(huán)左移bbit,表示以32 bit 為單位循環(huán)左移bbit。
圖1 uBlock 算法輪函數
MILP[8]是在一定約束的條件下對目標函數進行優(yōu)化,遵循線性規(guī)劃的優(yōu)化問題方法。用MILP 方法對密碼算法進行差分分析和線性分析,就是通過設定相應的約束條件,將活躍S 盒的個數之和最小設定為目標函數,并對其求解。
依據S 盒的相關特性結合約束條件,再將最小活躍S 盒的數量作為目標函數的構造條件,設計目標函數的數值即所求的最小值。完成上述構造后,就可以用求解器對此MILP 問題進行求解。此外,當輸入階段差分和臨時變量都被設為0 或1 時,對于求解器的求解速率更加友好[19]。
R(t,s)結構以uBlock 算法輪函數和廣義Feistel結構為基礎,其安全性目標為在密鑰長度為128 bit時,可以抵抗內部碰撞攻擊。其構建過程采用了MILP 方法,搜索符合安全性目標的結構參數t、s和置換P,其中,t為uBlock 算法的執(zhí)行次數,s為輪函數輸入信息的長度,長度表示消息的塊數。
因為R(t,s)是基于分組密碼算法輪函數和分組密碼算法結構所設計的通用結構,不具備算法的完整性,從算法分析的角度來看,可以從某些分析方法的角度來設定其安全性目標。在AEUR 算法通用結構的設計中,主要考慮的是對內部碰撞攻擊的防御。碰撞攻擊[20]利用生日悖論,分析算法本身或其等效結構,結合與輪密鑰之間的對應關系來獲得區(qū)分屬性,繼而分析得到密鑰信息。碰撞攻擊大大減少了原始窮舉攻擊的計算量。對于R(t,s)結構,當存在2 個不同消息的差分時,引入初始差分,經過多輪迭代,內部狀態(tài)差分為0。R(t,s)的密鑰為128 bit,當攻擊復雜度大于128 bit 時,對該結構的攻擊是無效的。uBlock 算法使用的4 bit S 盒的最大差分概率[7]為2-2,為滿足上述安全性條件,在進行碰撞攻擊時活躍S 盒的個數不能少于66 個。
R(t,s)結構是一種通用的、可迭代的認證加密算法輪函數結構,采用uBlock 算法的輪函數,結合廣義Feistel 結構,如圖2 所示。置換P是區(qū)別于uBlock輪函數的向量置換PLn和PRn的新的置換,表示消息,S0~S7表示狀態(tài)值。MesHandl 為消息Fi與狀態(tài)值分別進行異或運算。
圖2 R(t,s)輪函數結構
定義1要對結構R(t,s)的效率進行計量,需要確定一個指標即處理32 bit 的消息塊需要的uBlock 輪函數的個數。
R(t,s)的效率與rate 相關性強,需要通過對結構的設計細節(jié)進行研究,以選取更高效率的結構。
假設置換P基于32 bit,給出t、s和相應約束,結合MILP 方法驗證是否找到符合條件的置換P。
當rate=1 時,存在只有一個活躍S 盒的差分路徑使結構發(fā)生內部碰撞[17]。下面證明rate 至少為2時結構R(t,s)才可能避免內部碰撞。在搜索了t=1 和t=2 的4!和8!個置換后,發(fā)現并沒有符合安全目標的結構;當t=3 時,開始出現滿足結構安全的輪函數。對于R(3,1),找到了多個可用的P,如P=(1,2,3,4,5,6,7,8,9,10,11,0),此時P被設為一個循環(huán)移位,進行10 輪后,活躍S 盒的個數達到70,滿足安全性目標,但其rate=3,需要尋找效率值更高的P。在對R(3,2)、R(3,3)、R(4,1)、R(4,2)、R(4,3)、R(4,4)進行搜索后發(fā)現,以上結構均存在滿足安全性目標的P,其中R(3,3)、R(4,4)的rate=1,效率較高。但是R(3,3)的算法全擴散輪數表現弱于R(4,4),故選擇R(4,4)[18]。
表4 列出了部分使R(4,4)符合安全性目標的置換P及其活躍S 盒個數。在滿足安全性目標的前提下,綜合各個結構的實現效率,P5的實現效率和安全性均能夠達到通用結構對認證加密算法實現的要求,其擴散和混淆特性也滿足作為認證加密算法部件的要求,經驗證P5的綜合性能優(yōu)于其他置換P,故本文方案選取P5作為通用結構的置換P。
表4 部分使R(4,4)符合安全性目標的置換P及其活躍S 盒個數
R(4,4)結構的安全目標是抵抗內部碰撞攻擊??紤]到該結構作為認證加密算法的主要部件,其安全性需要從更多方面進行檢驗,可以通過差分分析來實現。
差分分析針對明文差分對和相應的密文差分,盡可能地獲得更多的密鑰信息。對于R(4,4)結構,建立MILP 差分模型,搜索該結構的高概率差分路徑,該結構中存在異或和移位2 種線性操作。在構建差分模型過程中,移位只是單純地改變了差分值的位置,所以不需要進行多余限制。對于比特異或a⊕b=c,可以采用等式 △a+△b+△c=2d[21]結合R(4,4)結構的差分性質來求解,過程中還需利用MILP 進行約束,并用Gurobi 求解器求解。
按照R(4,4)結構進行差分路徑分析,在每一輪都選取差分值與上一輪差分值相同的差分,構成差分路徑,最終求得一條長度和精確度符合要求的差分路徑概率。搜索結果如表5 所示。
表5 R(4,4)結構差分路徑概率
從上述結果可知,當R(4,4)結構執(zhí)行9 輪時,差分路徑概率為2-152,滿足設定的差分復雜度安全目標128 bit,因此R(4,4)結構從理論上可以抵抗差分分析,且不存在可行的差分路徑。
AEUR 算法主要考慮底層算法的選取原則、通用結構設計和整體工作流程與安全性3 個方面。
首先,對于底層算法uBlock,主要關注其輕量級的設計思路和隨用隨生成的密鑰擴展算法,且能夠抵抗內部碰撞攻擊。其次,對于通用結構R(t,s)的設計,主要關注其安全性目標和使用MILP 方法搜索時的參數結果,且R(t,s)結構可以根據底層算法的安全性需求和運行特點,選擇不同的置換P和底層輪函數個數,適用性廣泛。最后,對于整體認證加密算法工作流程,主要考慮其認證加密過程和解密過程中對消息數據處理的運算效率和正確性。AEUR 算法的設計思路如圖3 所示。
圖3 AEUR 算法的設計思路
圖4 AEUR 算法的輪函數結構
AEUR 算法采用R(4,4)作為輪函數,密鑰、初始向量和隨機常數作為狀態(tài)值的初值,利用輪函數進行狀態(tài)值的更新,利用狀態(tài)值對數據進行加解密和生成標簽操作。
1) 初始化
首先進行相關數據與明文的填充。本文使用PKCS5 算法進行數據填充。PKCS7 算法是目前常用加密算法都遵循的數據填充標準,PKCS5 算法作為PKCS7 算法的子集算法,在數據塊大小blockSize 上固定為128 bit,即數據始終會被切割為128 bit 的數據塊。然后計算需要填充的長度,由需要填充的字節(jié)數目來決定要填充的內容。此外,為了解決加解密時對于數據填充的處理問題,當數據本身長度滿足128nbit 時,依據PKCS5 的規(guī)則,在數據的尾部仍需要填充8 個字節(jié)的內容,此時填充內容為0x08。
將k和N賦值到狀態(tài)值中,并利用輪函數更新16 輪狀態(tài)值,再對相關數據進行初始化,如算法1所示。
算法1AEUR 算法初始化
2) 明文信息的處理
將明文信息填充后按32 bit 分塊,利用狀態(tài)值與明文異或來生成密文,之后明文進行狀態(tài)值更新,重復q-1 輪。具體算法過程如算法2 所示。
算法2AEUR 算法明文信息處理
輸入明文M
3) 標簽的生成
首先利用相關數據和消息長度adlen 和msglen更新一輪狀態(tài)值;然后迭代更新16 輪;最后利用狀態(tài)值生成標簽tag。具體過程如算法3 所示。
算法3AEUR 算法標簽生成
AEUR 的解密認證算法輸入為密鑰k、初始向量N、相關數據A和密文C;輸出為明文M或停止符⊥,認證解密過程由初始化、密文信息處理和標簽生成過程構成。
解密認證過程的初始化、密文信息處理與加密認證過程的輸入輸出相同。最后生成狀態(tài)S16+d。
解密過程。利用狀態(tài)S16+d和密文C=(C0,…,C4q-1)生成M,同時更新狀態(tài)。具體算法如算法4所示。
算法4AEUR 算法密文信息處理
認證過程。在解密過程結束后可以得到狀態(tài)值S16+d+q,之后利用加密認證過程中的標簽生成算法,得到標簽tag′,如果標簽值tag′與之前加密認證過程中生成的標簽值tag 相同,那么解密成功且通過認證,即解密驗證算法執(zhí)行成功,輸出明文M;否則解密驗證過程失敗,輸出停止符⊥。
R(t,s)結構是能夠滿足不同算法使用的通用型迭代結構,滿足分組密碼算法要求的混淆和擴散特性,且可以保障認證加密算法的安全性和正確性。采用這種結構生成的認證加密算法總體類似于大型序列密碼算法。該結構通過并行操作可以大大提升運行效率,根據底層算法的安全性需求和運行特點,可以選擇不同的置換P和底層輪函數個數,從而構造出滿足安全性和實用性要求的結構,繼而將其進行組合排列,滿足算法的設計需求。
加密認證和解密驗證使用了相同的初始化、明/密文信息處理和標簽生成過程,如算法5 和算法6 所示。
算法5AEUR 算法加密過程
算法6AEUR 算法解密過程
由于算法的加解密與狀態(tài)值緊密相關,如果在任意某一輪數時,算法在加解密過程中產生的狀態(tài)值Si相同,則算法滿足正確性。執(zhí)行AEUR 算法時,其加密與解密的初始化過程、相關數據處理過程完全一致,每一輪產生的狀態(tài)值都相同,因此AEUR 算法滿足正確性。
現有的可證明安全理論雖然可以對基于分組密碼的認證加密模式進行安全性分析,但對于直接設計的認證加密算法,不能給出適合的安全假設。目前,直接設計的認證加密算法普遍使用針對密碼算法的安全性分析方法[22]。為了讓AEUR 算法具備能夠抵抗密鑰恢復攻擊和偽造攻擊的能力,保證攻擊的復雜度大于2128,做出如下約束[18]。
1) 初始向量值(Nonce)的取值要隨機,且不能復用,即每次使用認證加密算法之前都要更換隨機初始向量值。
2) 在解密驗證的過程中,明文信息對用戶不可見,只有在驗證成功后才會輸出明文;如果驗證失敗,則輸出停止符⊥。
3) 加密時,相同密鑰對相關數據和明文信息加密的最大數據長度不超過2128bit。
1) 線性攻擊
線性攻擊[23]是一種已知明文攻擊,也就是攻擊者能夠獲取當下使用密鑰狀態(tài)下的明密文對。在對明文、密文和密鑰三者滿足的某種線性關系的概率p進行研究后,得到一個統(tǒng)計特征,利用該特征能夠將分組密碼和隨機置換區(qū)分開。對分組密碼而言,期待找到一個線性區(qū)分器來恢復最后一輪密鑰。采用MILP 方法構建目標函數和約束條件來搜索其最小活躍S 盒,設置活躍S 盒的下界,從準確度考慮,將搜索過程中每一輪的S 盒個數進行輸出,結果如表6 所示。在線性攻擊的標準方法評估下,AEUR 算法的10 輪活躍S 盒下界為71,大于安全性目標設定的66 個。且AEUR 算法在標簽生成和初始化階段均使用了16 輪迭代,有足夠的安全冗余,所以其具有抵抗線性攻擊的能力。
表6 AEUR 算法在線性攻擊條件下的活躍S 盒個數
2) 滑動攻擊
滑動攻擊[24]是受相關密鑰攻擊的啟發(fā)而提出的。當分組密碼在迭代過程中出現一定的自相似性時,可以使用滑動攻擊對算法進行分析。與線性或者差分攻擊不同,迭代輪函數的性質和執(zhí)行輪數對滑動攻擊的影響很小,輪數對算法抵抗滑動攻擊的能力幾乎沒有影響。在密碼算法中,如果迭代函數可以被分解為若干小的輪函數,那么就可以利用這一缺點進行滑動攻擊。為了避免滑動攻擊,算法的輪函數,特別是迭代的輪函數應該避免在執(zhí)行過程中形成周期而被分解,在綜合考慮算法抵抗幾種攻擊方法的能力以及對運行效率的影響后,與文獻[18]的分析相同,AEUR 算法的輪函數并未生成周期,因此AEUR 算法可以抵抗滑動攻擊。
3) 猜測確定攻擊
猜測確定攻擊[25]的原理是對密碼算法實現過程中的一些變量進行猜測,猜測的變量在輪函數中迭代可得到新的變量,利用得到的變量恢復出算法實現過程中相應的狀態(tài)值。AEUR 算法的擴散層來源于uBlock 算法,其擴散層的二元域矩陣分支數為8,攻擊者需要已知64 bit 才能得到下一個字節(jié)變量的值。AEUR 算法輪函數是基于狀態(tài)值集合Si構造的,有16 個32 bit 的狀態(tài)值。那么對于AEUR 算法的猜測確定攻擊,則需要以32 bit 的狀態(tài)值進行攻擊,為了滿足算法的安全性目標,攻擊復雜度最高臨界值被設定為2128,顯然想通過4 個變量來恢復其他的狀態(tài)值并不現實,所以AEUR 算法可以抵抗猜測確定攻擊。
4) 狀態(tài)恢復攻擊
Pelican MAC 攻擊[26]主要利用小尺寸的內部狀態(tài)來構造基于生日悖論的碰撞。AEGIS、ALE 算法都具有較大的內部狀態(tài),在AEUR 算法中,狀態(tài)值Si的大小為16×32=512 bit,足以抵抗生日攻擊。當攻擊者使用相同的密鑰和隨機數進行多次重復攻擊時,可能會在標簽生成過程中對狀態(tài)值注入差分,特別是當標簽的長度小于算法的密鑰長度時,認證加密算法面對這種攻擊會顯得脆弱。在AEUR算法中,輪函數結構的安全性目標為抵抗內部碰撞攻擊,因此針對狀態(tài)恢復攻擊是不現實的。在多次攻擊之后,可能獲得相對成功的偽造,但無法恢復整個狀態(tài)值。因此AEUR 算法可以抵抗狀態(tài)恢復攻擊。
5) 偽造攻擊
偽造攻擊是指攻擊者偽造出通過驗證的密文來進行攻擊。R(4,4)在9 輪迭代情況下的差分路徑概率為2-152,遠超過設定的128 bit 安全性復雜度目標,因此,該結構能夠抵抗差分分析,且無可用差分路徑。AEUR 算法的結構與R(4,4)相同,且迭代輪數超過10 輪,擁有絕對安全冗余,無法實現偽造。因此,AEUR 可以抵抗偽造攻擊。
AEUR 算法作為直接設計類認證加密算法,其底層算法uBlock 對差分分析和不可能差分分析等具有良好的抵抗性。R(t,s)結構可以抵抗差分分析和偽造攻擊等,并以128 bit 的復雜度為安全性目標,保障結構的安全性。因此可以認為AEUR 算法對差分分析等方法也有足夠的抵抗能力。
為了進一步說明AEUR 算法的安全性,選用近年來最有代表性的具有同類結構的AEGIS 算法、SMAE 算法和Pyjamask 算法[27]作為對比對象。
AEGIS 算法[4]在拒絕初始向量重用的情況下,在標簽生成過程中,恢復密鑰攻擊的速度要慢于窮舉搜索,因此狀態(tài)恢復攻擊對于拒絕Nonce重用的AEGIS 無法實施。在偽造攻擊中,解密的明文若驗證成功,當t為標簽值tag 的長度時,有2-t的概率可以被攻擊者破解。AEGIS 的標簽長度為128 bit,在恢復狀態(tài)時至少需要2128次偽造嘗試,由計算復雜性理論可知,這一數值在計算上是不可接受的。因此,AEGIS 對狀態(tài)恢復攻擊和偽造攻擊具有安全性。
SMAE 算法[17]就猜測確定攻擊而言,因為其底層函數來源于SM4 算法,SM4 算法中線性變換L的分支數為5,即對于SMAE 算法而言,要想通過猜測確定攻擊來分析算法,至少需要得到32 bit 的輸出值,才能恢復新的字節(jié)值,同時考慮到算法的128 bit 的計算安全性指標,超過3×32 bit 的恢復狀態(tài)攻擊不可行,因此SMAE 算法對于抵抗猜測確定攻擊具有安全性。在線性攻擊分析中,計算搜索線性掩碼成立的最優(yōu)偏差為2-92.43,區(qū)分攻擊和明文恢復攻擊的數據復雜度約為2184,因此SAME 算法對于線性攻擊具有安全性。
AEUR 算法對于多種攻擊具有安全性,較SMAE[17]和AEGIS[4]更全面,對比細節(jié)如表7 所示。
表7 AEUR 算法和其他算法的安全性對比
2020 年,Goudarzi 等[27]提出了Pyjamask 算法并給出其規(guī)范和AEAD(authenticated encryption with associated data)建議。2022 年,賀水喻等[28]基于Pyjamask 算法提出一種對明文進行偽造的方法,可以偽造出認證標簽。在對Pyjamask 和AEUR算法的AEAD 安全性進行對比分析時,兩者均具有良好的認證加密安全性。AEAD 安全性要求算法具有保密性、真實性、對稱性和隨機分配的特點。
1) 在實際認證加密執(zhí)行過程中,AEUR 算法能夠抵抗線性攻擊等多種攻擊方法,密文解密后對應的明文正確,標簽值對應正確。除了明文長度之外,其他關于明文的內容是未知的,滿足保密性。
2) AEUR 由于R(t,s)結構,未經有效的密碼分析檢測,攻擊者不可能更改密文的底層,滿足真實性。
3) AEUR算法對各類明文進行加密和對各類密文進行解密時使用的密鑰相同,滿足對稱性。
4) AEUR 算法的加密過程是隨機分配的,同一明文的2 個消息會產生不同的密文,攻擊者無法獲知明文與密文的對應關系,滿足隨機分配性。
綜上,AEUR 算法滿足對稱密碼算法理想的AEAD 安全性。
本節(jié)使用C 語言結合SSE 指令集實現AEUR 算法。環(huán)境為Intel 處理器,16 GB 內存,Visual Studio 2019。AEUR 算法中的uBlock 輪函數采用SSE 實現。SSE指令集采用SIMD(single instruction multiple data)來提升數據的并行操作性和算法的實現效率。
將AEUR 算法的時間復雜度和空間復雜度與其他算法進行對比分析,結果如表8 所示。
表8 計算復雜度對比
由表8 可知,AEUR 算法的時間復雜度與SAME算法相同,優(yōu)于AMRAE 算法[18];AEUR 算法的空間復雜度與SMAE 算法相同,低于AMRAE 算法。參考AEUR 的存儲開銷和運行開銷等,其綜合性能良好。
AEUR 算法認證加密速率如圖5 所示。從圖5可以看出,AEUR 算法認證最高為5.41 Gbit/s,最低為3.91 Gbit/s,平均為4.63 Git/s,考慮到AEUR算法的運行環(huán)境,相比文獻[17]中SMAE 算法3.8 Gbit/s 的加密速率,AEUR 算法認證加密速率對比SMAE 算法仍有較大優(yōu)勢。
圖5 AEUR 算法認證加密速率
由表9 可知,AEUR 的認證加密速率相比AEGIS[4]、ALE[5]效率分別提升了3%和46%,相比AES-GCM[3]、ACORN[29]算法優(yōu)勢較明顯,加密速率分別提升了74%和92%。
表9 算法速度比較
另外,通過測試不同數據長度的認證加密運算過程,可以得到如圖6 所示的狀態(tài)曲線。隨著待處理數據長度的增加,AEUR 算法執(zhí)行的效率較AEGIS 算法和AES-GCM 算法更加穩(wěn)定。
圖6 算法認證加密時間隨數據長度變化
結合圖5、圖6 和表9 可以得出結論,AEUR算法與以AES 算法為基礎設計的AEGIS 算法、ALE算法、AES-GCM 算法和以序列密碼為基礎設計的ACORN 算法相比,具有更優(yōu)的運算性能。
通過上述對計算復雜度、認證加密速率和算法效率的對比分析可以看出,本文的AEUR 算法較其他認證加密算法具有技術優(yōu)勢。其原因一方面是AEUR 的底層結構是基于輕量級分組密碼算法uBlock,uBlock 算法的密鑰擴展算法可以通過隨用隨生成的方法得到輪密鑰,在一定程度上縮小了存儲空間,并且能夠提升運算效率。而且所使用的MILP 方法可以根據所采用的分組密碼算法S 盒的特性來設置約束條件,使其適用性得到增強。
另一方面是AEUR 算法的設計基于分組密碼uBlock 的輪函數和廣義Feistel 結構,以4 個uBlock輪函數和置換P組成了算法的輪函數,狀態(tài)值的更新通過輪函數來完成,因此算法處理數據的過程在一定程度上得到了優(yōu)化,也減少了資源消耗,從而降低了運算復雜度,提升了運算速率。
本文采用國產分組密碼算法uBlock 輪函數結合混合整數線性規(guī)劃方法,設計了一個適用于認證加密算法的通用迭代結構R(t,s),并基于R(t,s)結構設計了認證加密算法AEUR。AEUR 算法由初始化、明文信息處理和生成標簽過程構成。對算法的正確性與安全性進行分析,并與同類算法進行對比,AEUR 表現較好。使用C 語言結合SSE 指令集編碼實現了AEUR 算法,測試了算法的軟件實現效率。AEUR 算法與以AES 算法為基礎設計的AEGIS 算法、ALE 算法、AES-GCM 算法和以SM4 算法為基礎構造的SMAE 算法,以及以序列密碼為基礎設計的ACORN 算法相比,具有更優(yōu)的實現性能。
隨著口令認證加密技術的發(fā)展,該方向得到了廣泛研究[30-31],未來AEUR 算法可結合口令安全技術應用于物聯網、隱私計算等領域。