徐翌豪, 李智虎, 樊燕紅, 王美琴
1. 山東大學網(wǎng)絡(luò)空間安全學院, 青島 266237
2. 密碼技術(shù)與信息安全教育部重點實驗室, 青島 266237
3. 中國電力科學研究院有限公司, 北京 100192
密碼算法的理論安全性是隨著密碼分析技術(shù)的不斷發(fā)展而逐漸完善的, 但是現(xiàn)代密碼算法安全性的威脅不僅來自對算法層次的數(shù)學理論分析. 隨著無線傳感、射頻識別(radio frequency identification,RFID)以及物聯(lián)網(wǎng)的高速發(fā)展, 輕量級密碼算法在資源相對受限的環(huán)境中應(yīng)用越來越廣泛[1,2], 而輕量級密碼算法大多采用硬件方式實現(xiàn), 這就導(dǎo)致物理攻擊對于密碼算法安全性的威脅越來越大. 在物理攻擊中, 錯誤注入攻擊[3]屬于主動的物理攻擊, 相比于被動的側(cè)信道分析[4], 錯誤注入攻擊可以極大地減少分析的樣本量[5], 極大提高了攻擊效率. 錯誤注入攻擊主要通過電磁脈沖、時鐘毛刺、激光束等手段在密碼算法的硬件實現(xiàn)中使寄存器、門電路或者線發(fā)生錯誤, 之后結(jié)合數(shù)學統(tǒng)計和分析, 通過注入錯誤得到的錯誤密文與正確運算得到的無錯密文之間的差分來獲取密鑰的相關(guān)信息, 這就是差分錯誤分析(differential fault analysis, DFA)[6–9]. 隨著錯誤注入精度以及軟硬件逆向技術(shù)的提高, 實施錯誤攻擊所依賴的設(shè)備條件不斷減弱, 成本不斷下降, 錯誤類型和位置已經(jīng)在一定程度上可以控制, 敵手可以輕松對任意不受保護的密碼算法進行錯誤注入, 因此幾乎所有的密碼算法都易受到DFA 的威脅. Aghaie 等人[10]從基于錯誤檢測碼(error detecting code, EDC) 的并發(fā)錯誤檢測(concurrent error detection, CED) 模式[11]出發(fā), 考慮錯誤傳播在組合邏輯電路中的消極影響, 設(shè)計出對于給定的敵手模型下對于錯誤注入的檢測有100% 覆蓋率的完美電路. Beierle 等人[12]首先在密碼算法的設(shè)計階段就考慮到在不同安全級別下抵抗DFA, 并設(shè)計出高效的輕量級密碼算法CRAFT. CRAFT 的S 盒設(shè)計理念充分考慮到錯誤傳播的消極影響, 利用獨立特性, 使S 盒的全部輸入共同決定輸出的1 比特信息, 這樣不復(fù)用的電路元件之間就可以避免注入錯誤的擴散, 結(jié)合CED 模型, 敵手注入的錯誤可以100% 被檢測到. Baksi 等人[13]從密碼算法抵抗差分分析和差分錯誤分析的權(quán)衡出發(fā), 設(shè)計出可以用于抵抗DFA 的具有特殊線性結(jié)構(gòu)的S 盒, 為密碼算法抵抗DFA 的研究提供了新的思路.
S 盒是分組密碼算法的重要組件之一, 是執(zhí)行非線性運算的算法組件, 安全性和軟硬件性能[14–16]是衡量S 盒優(yōu)劣的兩個重要指標. S 盒的實現(xiàn)方式有兩種: 查表(lookup table, LUT) 和布爾函數(shù)表達式, S 盒的實現(xiàn)環(huán)境分為軟件實現(xiàn)和硬件實現(xiàn). S 盒的軟硬件實現(xiàn)通常利用LUT 實現(xiàn). 對于S 盒查表的硬件實現(xiàn)[17]而言, 實現(xiàn)者利用綜合器內(nèi)置的優(yōu)化算法將S 盒轉(zhuǎn)化為布爾電路. 雖然綜合器能夠?qū)盒的LUT 實現(xiàn)進行一定程度的優(yōu)化, 但是由于其內(nèi)置的優(yōu)化算法是面向通用函數(shù)的, 對于S 盒的特殊實現(xiàn)要求輸出的結(jié)果有可能不是最優(yōu)[18]. 針對不同的實現(xiàn)準則如等價門電路的復(fù)雜度(gate equivalent complexity, GEC)、切片門電路的復(fù)雜度(bitslice gate complexity, BGC)、深度(depth) 等, 如何找到S 盒較好的布爾函數(shù)實現(xiàn)成為近期的熱門研究領(lǐng)域. 針對ASIC (application specific integrated circuit)平臺, Lighter[18]工具實現(xiàn)了在給定指令集下搜索S 盒的最優(yōu)面積布爾函數(shù); Guo 等人[19]提出了一種基于深度的S 盒實現(xiàn)方法, 通過遞歸的算法尋找給定S 盒的深度最優(yōu)的布爾函數(shù)實現(xiàn); PEIGEN[20]工具是一種集S 盒實現(xiàn), 評估及設(shè)計為一體的綜合工具, 其在Lighter 工具的基礎(chǔ)上進行改進, 提升了搜索S 盒布爾表達式的效率, 除此之外, PEIGEN 工具也優(yōu)化了Guo 等人S 盒深度最優(yōu)的實現(xiàn)方法, 在保證深度最優(yōu)的前提下同時保證面積的局部最優(yōu).
我們的工作深入理解在差分錯誤分析中錯誤傳播的消極影響, 提出密碼算法抵抗DFA 的S 盒獨立性實現(xiàn), 并在實現(xiàn)性能方面進行了提升. Aghaie 等人[10]采用LUT 方法進行S 盒實現(xiàn), 利用綜合軟件內(nèi)部的優(yōu)化算法進行優(yōu)化. 綜合器對復(fù)雜S 盒的LUT 的優(yōu)化并不是最優(yōu)的, 因為通用的優(yōu)化算法不會考慮S 盒的具體實現(xiàn)特性. 我們使用基于圖的布爾函數(shù)生成算法, 通過回溯的方式篩選出給定S 盒滿足獨立性的布爾表達式, 在限制深度的同時, 選取面積最優(yōu)的實現(xiàn)方式, 來優(yōu)化獨立性S 盒的硬件布爾表達式實現(xiàn). 利用我們提出的生成獨立性S 盒的算法, 對GIFT、Khazad、LBlock 等已知S 盒進行實現(xiàn), 并利用Synopsys DC 綜合軟件和UMC 55 nm 標準元件庫對S 盒獨立性布爾表達式實現(xiàn)進行綜合. 綜合結(jié)果顯示, 與單純的依賴綜合軟件優(yōu)化的LUT 實現(xiàn)方法相比, 我們提出的S 盒獨立性優(yōu)化實現(xiàn)方法, 不同程度地提升了S 盒的實現(xiàn)效率.
密碼算法的錯誤注入攻擊方法首先被Boneh 和DeMillo 等人[3]提出并成功運用到RSA 的CRT 版本中. 隨后Shamir 等人[6]利用差分分析的方法與錯誤注入攻擊相結(jié)合, 提出差分錯誤分析的攻擊方法,并對傳統(tǒng)的DES 算法進行了攻擊. 其核心思想就是利用差分錯誤分析的方法, 使用時鐘毛刺、激光束、電磁干擾等手段在密碼算法運行時向其中注入錯誤, 使最終的加密結(jié)果出現(xiàn)差錯, 從而恢復(fù)出相關(guān)的密鑰信息. 2018 年, Aghaie 等人[10]從錯誤傳播的消極影響出發(fā), 設(shè)計出在給定敵手模型下錯誤檢測率100% 的完美電路, 并提出獨立性將其應(yīng)用于抵抗DFA 的S 盒實現(xiàn)中, 下面給出獨立性質(zhì)的定義.
其中Gi代表成員函數(shù)Ti的門電路實現(xiàn)集合. 那么滿足上述形式的組成電路集合是獨立的, 滿足獨立特性可以避免錯誤傳播, 即一個錯誤的門最多導(dǎo)致輸出1 比特的錯誤.
由定義可知, 獨立性質(zhì)主要為了避免密碼算法執(zhí)行時在S 盒組件中發(fā)生的錯誤擴散傳播, 如果設(shè)計的S 盒滿足獨立特性, 那么在最壞的情況下(注入的錯誤門一定導(dǎo)致錯誤的輸出), 敵手攻擊t個門電路也最多只會導(dǎo)致對應(yīng)t比特出現(xiàn)錯誤, 這就使注入的錯誤不會在電路中發(fā)生擴散.
接下來我們介紹非獨立性S 盒的實現(xiàn)方式與獨立特性S 盒實現(xiàn)方式的區(qū)別, 非獨立性S 盒實現(xiàn)時一般不考慮門電路是否復(fù)用, 這就可能導(dǎo)致在S 盒的具體實現(xiàn)時, 會存在S 盒不同輸出復(fù)用門電路的情況,使得一個門可能被多個輸出共用, 如圖1(a) 所示. 獨立性S 盒的電路實現(xiàn)避免了門電路的復(fù)用問題, S 盒的每一比特輸出都獨立于其他輸出比特對應(yīng)的電路實現(xiàn), 如圖1(b) 所示. 圖中的x,y,z表示電路的輸入,x′和y′表示電路的輸出.
從圖1 可以看出,非獨立特性S 盒的兩個輸出具有一個復(fù)用的異或門(XOR),獨立特性S 盒的實現(xiàn)沒有復(fù)用的門. 假設(shè)敵手有攻擊一個門電路XOR 的能力, 非獨立性的實現(xiàn)方式會使錯誤擴散到第二個OR門從而導(dǎo)致輸出的兩個比特全部出錯, 而獨立性的實現(xiàn)方式保證了兩個輸出對應(yīng)的門電路獨立, 只能影響輸出的1 個比特, 這樣就阻止了錯誤的擴散, 使得在并發(fā)錯誤檢測模式下可以精準的檢測錯誤.
圖1 非獨立性電路與獨立性電路的錯誤擴散Figure 1 Error propagation in non-independent circuits and independent circuits
電路深度復(fù)雜度通常定義為從輸入門到輸出門的最長路徑的長度. 在高速電路硬件實現(xiàn)的情況下, 實現(xiàn)者有時候希望將電路的深度保持盡可能低, 以便能夠增加時鐘頻率, 而不必使用更多的門. 例如任何函數(shù)都可以通過深度為2 的電路來計算, 即將該函數(shù)通過合取或析取范式來表示, 然而這樣的表示方法可能會導(dǎo)致電路中門電路數(shù)量較大, 這是實現(xiàn)者不希望看到的, 因此需要在電路的深度和門電路數(shù)量之間權(quán)衡.下面給出S 盒深度的定義.
定義2 (S 盒深度) S 盒深度定義為, 在S 盒輸入到輸出電路中, 最長路徑所包含的邏輯門電路的個數(shù).
Guo 等人[19]提出一種S 盒的深度評估工具, 其核心是預(yù)計算的功能模塊. 預(yù)計算模塊通過一個遞歸算法枚舉在某一個深度下S 盒輸入比特的所有可能的布爾函數(shù). 深度評估工具通過與預(yù)計算得到的布爾函數(shù)進行匹配來找到給定S 盒深度最優(yōu)的布爾函數(shù)實現(xiàn). Bao 等人[20]對文獻[19] 中的算法在等價門電路復(fù)雜度(GEC) 方面進行了提升, 實現(xiàn)了深度最優(yōu)、等價門電路局部最優(yōu)的S 盒布爾表達式的實現(xiàn). 具體實現(xiàn)方式是在一個指令集β(包括AND, OR, XOR, NAND, NOR, XNOR 和NOT 等) 中, 通過廣度優(yōu)先的方式生成一個圖. 圖的每一個節(jié)點表示一個狀態(tài)值(即操作數(shù))及其布爾函數(shù),邊代表前一層上的節(jié)點與當前節(jié)點通過操作指令產(chǎn)生的聯(lián)系. 假設(shè)一個i比特輸入的S 盒, 初始節(jié)點定義為v0,v1,··· ,v(i-1),也稱為輸入的恒等變換布爾函數(shù), 初始節(jié)點對應(yīng)的層數(shù)定義為圖的第0 層. 圖的擴展以初始節(jié)點開始, 以層為單位遍歷指令集中的所有指令, 圖的生成過程如圖2 所示.
圖2 布爾函數(shù)圖的生成示意圖Figure 2 Diagram of generation of Boolean function graph
在每一層圖節(jié)點的生成過程中, 不僅需要對指令集中的操作指令遍歷, 同時還要遍歷操作數(shù), 操作數(shù)包括層數(shù)小于當前層數(shù)的所有節(jié)點, 新生成的節(jié)點需要記錄生成該節(jié)點的操作類型以及操作數(shù), 在圖的生成過程中, 對新生成的節(jié)點布爾函數(shù)的門電路復(fù)雜度不斷優(yōu)化, 過濾掉有相同狀態(tài)值但門電路復(fù)雜度較大的節(jié)點, 不僅保證S 盒每一個分量的門電路復(fù)雜度最小, 同時利用在不同分量之間選擇可共享的指令前綴的方式優(yōu)化等價門電路的全局復(fù)雜度, 即對于每一個分量深度最小的前提下找到等價門電路復(fù)雜度最小的實現(xiàn)方式, 最后保證圖中每個布爾函數(shù)都是深度最優(yōu), 等價門電路復(fù)雜度局部最優(yōu).
我們借鑒了Guo 等人[19]的生成S 盒的布爾表達式的方法以及Bao 等人[20]的改進方法, 通過生成圖的方式在一個指令集β中, 尋找已知S 盒獨立實現(xiàn)的最優(yōu)硬件表達式.
(1) 本文的算法著重于布爾函數(shù)的硬件實現(xiàn)的優(yōu)化, 選擇的硬件指令集是單輸入的NOT 門以及兩輸入的邏輯門AND/OR, XOR/XNOR, NAND/NOR. 我們使用∧、∨、⊕和?分別代表邏輯與、或、異或、非, 指令集及邏輯運算如表1 所示.
表1 算法邏輯指令集Table 1 Logic instruction set in algorithm
(2) 設(shè)計的S 盒的門電路實現(xiàn)具有獨立特性. 本文設(shè)計的獨立性布爾函數(shù)的過濾策略基于這種以深度擴展的圖算法, 獨立性要求在門電路實現(xiàn)時沒有共用門, 即如果在以初始節(jié)點進行第一層圖擴展時生成的所有新節(jié)點, 在給定S 盒的所有分量布爾函數(shù)中至多只出現(xiàn)一次, 則該S 盒的布爾函數(shù)實現(xiàn)滿足獨立特性.
(3) 根據(jù)指令集的權(quán)重, 尋找滿足獨立性S 盒的最優(yōu)面積實現(xiàn). 我們設(shè)計策略是在深度最優(yōu)的情況下,搜索面積局部最優(yōu)的獨立布爾表達式實現(xiàn).
獨立性S 盒實現(xiàn)算法包括兩個模塊的設(shè)計: 圖生成模塊和獨立性實現(xiàn)模塊. 圖生成模塊利用指令集和擴展算法構(gòu)建不同層上的節(jié)點, 直至構(gòu)建出滿足S 盒特定狀態(tài)值的節(jié)點. 獨立性實現(xiàn)模塊的主要功能是:在生成圖的基礎(chǔ)上, 篩選滿足獨立特性S 盒的布爾表達式.
3.2.1 圖生成模塊
在圖生成模塊中, 與文獻[19,20] 的不同之處在于, 我們不對生成的節(jié)點進行過濾與優(yōu)化, 保留所有的節(jié)點, 這樣生成的圖中, 存在多個不同的節(jié)點代表的狀態(tài)值是相同的, 但是他們分別表示不同的布爾函數(shù),這樣我們可以得到所有可能的布爾表達式, 以保證進入獨立性實現(xiàn)模塊的布爾函數(shù)的完整性. 當然算法的生成圖模塊只需執(zhí)行一次, 對于不同S 盒可以多次重用. 隨著圖的層數(shù)的增加, 節(jié)點數(shù)量呈指數(shù)級增長, 我們考慮有限的計算資源和內(nèi)存資源, 定義參數(shù)λ作為層數(shù)閾值,λ可以根據(jù)內(nèi)存資源設(shè)定作為圖擴展算法的終止條件. 當圖的擴展算法完成時, 就得到了在給定指令集下的全部布爾函數(shù), 對于給定的S 盒, 算法可以回溯圖中的節(jié)點, 推導(dǎo)出該S 盒對應(yīng)的布爾函數(shù)實現(xiàn).
3.2.2 獨立性實現(xiàn)模塊
在給定深度和指令集的生成圖中, 包含了S 盒對應(yīng)的所有可能的布爾函數(shù). 算法的獨立性實現(xiàn)模塊的設(shè)計思路是, 在所有可能的布爾表達式實現(xiàn)中, 利用兩次過濾的方法, 篩選出滿足獨立特性的布爾表達式.兩次過濾的具體內(nèi)容如下:
(1) 首先過濾掉面積成本較高的實現(xiàn)方式;
(2) 然后過濾掉不滿足獨立特性的實現(xiàn)方式.
以4 比特S 盒為例, 我們介紹搜索獨立性實現(xiàn)模塊的操作流程.
(1) 在生成的圖中搜索滿足目標S 盒的4 個分量函數(shù)的節(jié)點并分類存儲為4 個組,記C1,C2,C3,C4.
(2) 從4 個組的每一組中任取其中一個元素進行組合, 即可得到給定S 盒的一種布爾函數(shù)實現(xiàn). 這樣的組合方式會使一個S 盒有很多種不同的布爾函數(shù)實現(xiàn).
(3) 我們首先針對所有組合, 考慮其實現(xiàn)的等價門電路復(fù)雜度, 根據(jù)指令集的面積權(quán)重設(shè)置過濾閾值,濾除面積實現(xiàn)成本高的組合, 這樣大大減少了獨立性篩選的樣本量.
已知S 盒的獨立性布爾表達式的優(yōu)化實現(xiàn)如算法1 所示. 給定參數(shù)λ作為層數(shù)閾值, 此參數(shù)可根據(jù)操作系統(tǒng)的內(nèi)存容量進行調(diào)整, 以避免深度過大時的內(nèi)存溢出, 算法的另一個參數(shù)target 是目標S 盒. 以i表示S 盒的位數(shù),V表示圖的節(jié)點,Vdepth表示在第depth 層的生成的所有節(jié)點集合, 其中depth 參數(shù)初始化為0, 使用SUCC(v,o) 記錄新節(jié)點與操作數(shù)以及指令之間的運算關(guān)系, 使用before 指針記錄新節(jié)點與操作數(shù)節(jié)點之間的邏輯關(guān)系, 以便于節(jié)點指針的回溯. 在判斷候選布爾表達式是否為獨立特性時, 為了便于表述, 我們使用AreaFilter 函數(shù)過濾面積較大的布爾函數(shù)實現(xiàn). 取出分量節(jié)點N1,N2,··· ,Ni中的指令面積并求和與AreaThreshold 參數(shù)進行比較, 返回值為True 表示面積大于指定閾值, 此函數(shù)可以根據(jù)給定的S 盒自定義調(diào)整以獲得局部面積最優(yōu)的實現(xiàn)方式. 另外使用IsDump 函數(shù)表示向量組中是否有重復(fù)的節(jié)點, 如果返回為真, 則說明給定S 盒的i個候選布爾函數(shù)在圖的首次擴展時產(chǎn)生了共同了相同的節(jié)點, 即最終結(jié)果不滿足獨立特性, 反之, 則表示S 盒的布爾函數(shù)實現(xiàn)沒有共用的門電路, 即此候選布爾表達式滿足獨立特性. 算法1 生成圖階段和獨立性搜索階段的時間復(fù)雜度均約為226.56, 故本算法總時間復(fù)雜度約為227.56, 而在生成圖的具體實現(xiàn)時, 本文使用structure 來表示節(jié)點記錄的信息, 具體包括該節(jié)點的狀態(tài)值及其對應(yīng)的布爾函數(shù)、操作指令、指令權(quán)重, 所以, 本文所提算法的空間復(fù)雜度約為226.56個structure.
算法1 獨立性S 盒實現(xiàn)Input: target, λ Output: 獨立布爾函數(shù)實現(xiàn)ImplementFile 1 初始化depth ←0,E ←?,V0 ←{v0,v1,··· ,vi},G = {V0,E}2 調(diào)用圖生成函數(shù)GenGraph(G,depth,λ)3 遍歷圖G 搜索目標S 盒targrt 的分量函數(shù), 并將這些節(jié)點分別存儲在C1,C2,··· ,Ci 中4 for each N1,N2,··· ,Ni in C1,C2,··· ,Ci do 6 while (N1,N2,··· ,Ni) /∈V1 do 5if AreaFilter(N1,N2,··· ,Ni,AreaThreshold) then 7 N1 = N1.before,N2 = N2.before,···, Ni = Ni.before 8 end將N1,N2,··· ,Ni 的切片數(shù)據(jù)存儲到向量Vec 中10if IsDump(Vec) then 9 11Print Result(N1,N2,··· ,Ni,False)12end 13else 14Print Result(N1,N2,··· ,Ni,True)15end 16end 17 end 18 function GenGraph(G,depth,λ)19 Vt = ? 20 for all o in β do 21if (o == NOT) then 22for all v ∈Vdepth do 23N ←SUCC(v,o)24N.before=v,Vt ←Vt ∪N, E ←E ∪{v →N}25end 26end 27else 28for all vx ∈Vdepth do 29for all vy ∈V do 30N ←SUCC(vx,vy,o), N.before=(vx,vy)31Vt ←Vt ∪N,E ←E ∪{vx →N}32end 33end 34end 35 end 36 depth = depth+1, Vdepth = Vt, G ←G ∪{Vdepth,E}37 if (depth ≤λ) then 38GenGraph(G,depth,λ)39 end 40 return G
S 盒獨立特性優(yōu)化實現(xiàn)算法用C++ 語言進行了程序?qū)崿F(xiàn), 程序運行的系統(tǒng)環(huán)境為: Intel Xeon CPU E5 2620 @2.00 GHz 128 G 內(nèi)存, 64 位Ubuntu 16.04.4 LTS. 對不同的目標S 盒, 算法程序返回優(yōu)化后的獨立表達式所用的時間平均約為12.36 分鐘. 獲得S 盒的具有獨立性的布爾表達式后, 先使用Verilog HDL 進行硬件實現(xiàn), 然后在Modelsim 軟件上進行功能仿真, 最后使用Synopsys Design Compiler 綜合軟件與UMC 55 nm 的標準元件庫進行硬件電路的綜合仿真, 得到S 盒的面積及時延的測試結(jié)果.
我們以GIFT 的S 盒為例, 給出生成的獨立布爾表達式. 值得注意的是, 使用我們的算法生成的所有布爾表達式中, 可能存在一個給定S 盒的多種不同的表達式實現(xiàn), 而這些不同的表達式經(jīng)過綜合之后得到相同的硬件面積和時延, 這里只給出其中一種表達式實現(xiàn). 定義S 盒的輸入和輸出分別為{X[3],X[2],X[1],X[0]}和{Y[3],Y[2],Y[1],Y[0]}, 其中X[3] 和Y[3] 分別代表最高位.
從如上所示的布爾表達式實現(xiàn)來看, GIFT 的S 盒的每一個分量函數(shù)對應(yīng)的布爾表達式彼此之間互相獨立, 這樣就可以使注入的錯誤在S 盒層不發(fā)生擴散, 大大提高并發(fā)錯誤檢測的效率. 利用我們的S 盒實現(xiàn)算法, 生成了目標S 盒的具有獨立特性的布爾表達式. 然后對每個目標S 盒進行兩種實現(xiàn): LUT 和獨立布爾函數(shù). 最后利用ASIC 綜合平臺分別將兩種實現(xiàn)方式進行綜合, 得到面積和時延的測試結(jié)果, 具體的實驗結(jié)果見表2. 從實驗結(jié)果可以看出, 對于一個給定的S 盒, 使用本文的算法生成的獨立布爾表達式的實現(xiàn)無論在面積或者時延開銷上都優(yōu)于直接獨立LUT 的實現(xiàn)方法. 本文對S 盒的獨立性實現(xiàn)性能進行提升, 使其在實現(xiàn)時的硬件開銷和時延都優(yōu)于之前的工作, 為抵抗DFA 的S 盒的實現(xiàn)設(shè)計提供了新的思路.
表2 實驗結(jié)果Table 2 Experimental results
實驗結(jié)果顯示, 使用我們的算法生成S 盒獨立特性的布爾表達式綜合之后的結(jié)果會好于獨立LUT 的方法. 該算法以及思路是首次對于抵抗DFA 的S 盒獨立特性的研究, 提出的生成獨立特性布爾表達式的新方法, 對于防止差分錯誤注入分析的S 盒有實踐意義, 為研究設(shè)計抵抗DFA 的密碼算法的組件提供一個新的思路. 雖然我們提出的新思想和新方法對于傳統(tǒng)的抵抗DFA 的S 盒有提升, 但是我們提出的算法也有局限性, 對于實現(xiàn)復(fù)雜的S 盒, 需要更多的層數(shù)來實現(xiàn), 生成的圖的規(guī)模會呈指數(shù)級別的增長, 從而需要相當大的時間和空間復(fù)雜度去生成優(yōu)化的獨立布爾表達式. 接下來我們會繼續(xù)研究和改進我們的算法,考慮在生成圖的過程中如何避免龐大的節(jié)點個數(shù)以及在獨立的布爾表達式的生成過程中如何設(shè)計更高效的搜索算法.