陳 銳,李 冰,夏吉安,胡光永
(1.南京工業(yè)職業(yè)技術大學計算機與軟件學院,江蘇 南京 210023;2.東南大學微電子學院,江蘇 南京 210096)
近年來,物聯(lián)網技術被廣泛應用于各行各業(yè),如智慧醫(yī)療[1]、智慧養(yǎng)殖[2]、智慧電力[3]、智慧城市[4]等。物聯(lián)網技術之所以被廣泛應用,主要是因為其采集數(shù)據的隱含價值。通過GPRS[5]、NB-IoT[6]、LoRa[3]等無線通信協(xié)議將采集數(shù)據傳遞至云端,借助于大數(shù)據、人工智能等技術,可實現(xiàn)數(shù)據挖掘、預測分析、智能決策等先進應用。在許多應用領域,物聯(lián)網終端設備采集的數(shù)據與用戶隱私、生命財產安全密切相關,使得物聯(lián)網攻擊事件頻發(fā),如2010 年的“震網病毒”攻擊多國核電站[7]、2016 年Mirai 惡意代碼控制物聯(lián)網終端發(fā)起DDoS 攻擊導致大半個美國網絡癱瘓[8]。為了避免數(shù)據在傳輸過程中遭受篡改、泄露而引起安全事故,應在數(shù)據源即物聯(lián)網終端側對采集數(shù)據進行安全保護。數(shù)據的保護可以通過在物聯(lián)網終端設備上部署密碼學算法來實現(xiàn)。認證加密算法作為一類應用廣泛的密碼學算法,不僅可以保障數(shù)據的機密性,還可以保障數(shù)據的完整性。2021 年IETF 公布了RFC 8998 標準[9],提出基于國產分組密碼算法SM4 的兩種認證加密算法,SM4-CCM 就是其中一種。本文面向物聯(lián)網數(shù)據安全,以SM4-CCM 為對象,研究適合于物聯(lián)網資源受限場景下的數(shù)據安全保障方法。
由于物聯(lián)網終端資源受限,有些甚至采用電池供電,因而對算法實現(xiàn)的成本、功耗要求較高。相比于軟件實現(xiàn)計算密集的密碼學算法,硬件實現(xiàn)具有更高的性能、更低的功耗、更好的安全性、更少的ROM/RAM 資源占用等優(yōu)勢。硬件實現(xiàn)的這些優(yōu)勢促使我們研究和設計SM4-CCM 的專用硬件電路架構。
與本文相關的文獻主要集中針對SM4 算法的某一種工作模式的硬件實現(xiàn)(如CBC 模式[10-11],CTR 模式[12])、針對SM4 算法的指令集擴展[13-14]、針對SM4 算法本身的低開銷設計[15-17]等。本文也是針對SM4 算法的一種工作模式,但是與上述文獻不同的是:①采用資源復用技術,僅用一個輪函數(shù)就實現(xiàn)了CCM 模式所包含的CBC-MAC 模式和CTR模式,不僅實現(xiàn)了加解密功能,還實現(xiàn)了完整性校驗功能;②為了降低SM4-CCM 算法的功耗,引入基于Decoder-Switch-Encoder(DSE)[18]架構的Sbox,與其他設計相比,功耗降低明顯。
SM4 算法是國家密碼局2010 年公布的分組密碼算法行業(yè)標準,2016 年成為國家標準,2021 年成為國際標準。該算法由加解密算法和密鑰擴展算法組成。加密算法和解密算法結構相同,均由32 輪迭代和1 個反序變換組成,二者不同之處在于輸入到迭代輪函數(shù)的輪密鑰順序相反。如圖1 所示,加解密算法迭代所需的輪密鑰由密鑰擴展算法依據輸入的128 比特主密鑰經過32 輪迭代生成,共32 個,每個輪密鑰32 比特。密鑰擴展算法與加密算法結構相似,但是不需要反序變換。關于SM4 算法的詳細介紹可以查看文獻[19]。
圖1 SM4 加解密算法和密鑰擴展算法示意圖
CCM 算法是美國NIST 提出的分組密鑰算法認證加密工作模式,由兩種工作模式組成:用于產生128 比特消息認證碼的CBC-MAC 模式和用于加解密的CTR 模式。因而,CCM 算法既能對輸入數(shù)據進行加解密,又能保障數(shù)據的完整性。關于CCM 模式的詳細介紹可以查看文獻[20]。CCM 算法對數(shù)據的處理可分為四個階段:Nonce 數(shù)據的處理、AAD 數(shù)據的處理、明文數(shù)據的處理以及認證碼的生成。圖2 為按照這四個階段繪制的CCM 算法簡化流程圖,其中,AAD 為認證附加數(shù)據,用于提升算法的安全性,不需要對其進行加解密。從圖2 中可以看,輸入的明文需同時送入工作于CBC-MAC 模式的SM4模塊和工作于CTR 模式的SM4 模塊。這兩個SM4模塊完全相同,只不過輸入的數(shù)據不同。
圖2 簡化之后的CCM 算法示意圖
由上述分析可知,SM4-CCM 算法可從兩個層面實現(xiàn)資源復用以降低資源開銷,即SM4 算法本身的實現(xiàn)層面和CCM 算法的實現(xiàn)層面。
基于前文分析,借助于資源復用技術,本節(jié)提出一種低開銷、低功耗的SM4-CCM 硬件架構設計。
圖3 給出了本文提出的SM4-CCM 硬件架構。如圖3 所示,采用狀態(tài)機控制單個SM4 算法內核,以分時復用的方式實現(xiàn)SM4-CCM 正向加密和反向驗證算法。整體架構主要包括:SM4 算法內核、SM4-CCM 算法控制狀態(tài)機、總線讀/寫接口、3 個控制類寄存器和5 個128 比特的數(shù)據寄存器。其中,控制寄存器控制算法開關和工作模式,數(shù)據類型寄存器指示總線寫入數(shù)據的類型,狀態(tài)寄存器存放SM4-CCM 算法狀態(tài)或者驗證結果。為了降低設計難度,SM4-CCM IP 處理完一個128 比特的數(shù)據塊即返回空閑狀態(tài)。因此需要為每次輸入的數(shù)據塊指明數(shù)據類型,依據數(shù)據塊類型是計數(shù)器初值、AAD 還是明文數(shù)據塊觸發(fā)狀態(tài)機進入不同的模式,待計算完畢之后將SM4 算法內核的計算結果存入對應的結果寄存器中。當所有數(shù)據傳遞完畢之后,將數(shù)據類型寄存器中的“FINISH”標志位置高,那么狀態(tài)機將控制SM4 算法內核完成最后一次計算,生成MAC值寫入CBC-MAC 結果寄存器中,上位機通過總線讀接口讀取該值。
圖3 本文提出的SM4-CCM 硬件架構框圖
本文提出的設計支持SM4-CCM 正向加密和反向驗證,圖4 給出狀態(tài)機狀態(tài)跳轉示意圖。當SM4-CCM IP 使能時,一旦檢測到總線寫接口向總線數(shù)據寄存器寫入數(shù)據即啟動狀態(tài)機。
圖4 本文提出的SM4-CCM 控制狀態(tài)機狀態(tài)跳轉示意圖
對于SM4-CCM 正向加密采用以下執(zhí)行流程:①將密鑰存入SM4 算法內核中的密鑰狀態(tài)寄存器;②將總線數(shù)據寄存器中的數(shù)據存入SM4 算法內核中的加解密狀態(tài)寄存器;③依據數(shù)據類型,執(zhí)行狀態(tài)跳轉,如果是計數(shù)器初值或者AAD 數(shù)據,則進行CBC-MAC 模式后返回空閑狀態(tài)(狀態(tài)跳轉路徑①→②→③→⑧);如果是明文數(shù)據則進入CBCMAC 模式之后再進入CTR 模式最后返回空閑狀態(tài)(狀態(tài)跳轉路徑①→②→③→⑤→⑥);如果數(shù)據傳遞完畢,在收到數(shù)據傳遞完畢信號(數(shù)據類型寄存器中“FINISH”標志置高)則直接進入CTR 模式,對計數(shù)器初值加密之后與CBC-MAC 結果異或得到所有數(shù)據的MAC(狀態(tài)跳轉路徑①→②→④→⑥)。
對于SM4-CCM 反向驗證采用以下流程:步驟①、②與SM4-CCM 正向加密流程完全一致;③依據數(shù)據類型,執(zhí)行狀態(tài)跳轉,如果是計數(shù)器初值或者AAD 數(shù)據,則進行CBC-MAC 模式后返回空閑狀態(tài)(狀態(tài)跳轉路徑①→②→③→⑧);如果是密文數(shù)據則進入CTR 模式之后再進入CBC-MAC 模式最后返回空閑狀態(tài)(狀態(tài)跳轉路徑①→②→④→⑦→⑧);如果數(shù)據傳遞完畢,在收到數(shù)據傳遞完畢信號(數(shù)據類型寄存器中“FINISH”標志置高)則直接進入CTR 模式,對計數(shù)器初值加密之后與CBC-MAC 結果異或得到所有數(shù)據的MAC(狀態(tài)跳轉路徑①→②→④→⑥),最后將其與原始MAC 比較確認數(shù)據是否完整。
圖5 給出了SM4 算法內核的架構設計,該模塊負責完成SM4 算法的加解密算法和密鑰擴展算法。其中,密鑰擴展算法采用的是在線生成方法,因而無需存放32 個32 bit 的擴展密鑰。SM4 算法內核中包含一個密鑰擴展/加解密共享輪函數(shù),其架構如圖6 所示。共享輪函數(shù)交替工作于密鑰擴展模式和加解密模式。密鑰擴展模式在前,加解密模式在后。密鑰擴展模式下產生的狀態(tài)數(shù)據存放于密鑰擴展狀態(tài)寄存器中,其低32 bit 輸出作為加解密模式下的輪密鑰。兩種模式交替執(zhí)行32 次之后一個128 bit 的數(shù)據塊處理完畢。另外,由于SM4-CCM在CBC-MAC 和CTR 模式下輸入到SM4 算法內核進行加密的數(shù)據是不一樣的,需要特殊處理。在CBC-MAC 模式下,總線數(shù)據與上一個CBC-MAC 結果異或之后送入加解密狀態(tài)寄存器,在輪函數(shù)32 輪的迭代之后,直接將加解密狀態(tài)寄存器中的數(shù)據輸出寫入到CBC 結果寄存器。在CTR 模式下,輸入到加解密狀態(tài)寄存器的數(shù)據是計數(shù)器的值,在輪函數(shù)32 輪迭代之后,輸出結果與總線數(shù)據寄存器異或之后寫入到CTR 結果寄存器。
圖5 SM4 算法內核硬件架構框圖
圖6 密鑰擴展/加解密共享輪函數(shù)硬件架構框圖
密鑰擴展/加解密共享輪函數(shù)架構較為簡單,如圖6 所示,輸入是4 個32 bit 數(shù)據,經過異或之后生成一個32 bit 數(shù)據。該數(shù)據將分4 個時鐘周期輪流將其各個字節(jié)送入到Sbox 中進行字節(jié)替換。替換之后的32 bit 數(shù)據依當前模式是密鑰擴展還是加解密模式,采用不同的移位和異或方式輸出并更新狀態(tài)寄存器。
2.3.1 基于DSE 架構的Sbox
為了降低功耗,本文采用了基于Decoder-Switch-Encoder 架構的Sbox[18]。這種Sbox 被認為是功耗最低的一種Sbox[21],但是面積較基于查找表的Sbox 或者基于復合域的Sbox 面積大。然而,由于本文只采用單個Sbox,因而對整個SM4-CCM IP的面積影響較小。其架構如圖7 所示,輸入為1 個字節(jié)8 個信號,經過譯碼器之后轉換成為256 個信號組成的獨熱信號。連線模塊將256 位的獨熱信號按照SM4 標準中定義的替換表固定連接輸入和輸出。經過連線模塊輸出依然是256 位的獨熱信號,再經過編碼器識別出256 位的獨熱信號1 的位置,將其轉換成8 比特的位置索引值。獨熱信號的引入使得Sbox 內部信號翻轉率降低,而功耗與信號翻轉率成正比,因而可以降低功耗。
圖7 基于Decoder-Switch-Encoder 架構的Sbox
為了評估本文提出的SM4-CCM 算法硬件架構的性能、面積和功耗,本文采用Verilog HDL 對其進行了描述,采用Synopsys EDA 工具鏈對其進行功能驗證和仿真以獲得吞吐率報告、綜合以獲得面積報告、門級功耗分析以獲得功耗報告。
圖8 給出了SM4 模塊的仿真結果,當輸入數(shù)據塊和密鑰均為0123456789ABCDEFFEDCBA98765 43210 時,加密結果應為681EDF34D206965E86 B3E94F536E4246,仿真截圖證明SM4 模塊功能的正確性。
圖8 SM4 模塊的仿真結果
圖9 給出了SM4-CCM 仿真結果,實驗數(shù)據來源于文獻[9],Nonce 數(shù)值為00001234567800000000 ABCD,密鑰為 0123456789ABCDEFFEDCBA9876 543210,明文為AAAAAAAAAAAAAAAABBBBBB BBBBBBBBBBCCCCCCCCCCCCCCCCDDDDDDDDD DDDDDDDEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAA,AAD 數(shù)據為FEEDFACEDEADBEEFFEEDFACEDEADBEEFABADDAD2,最終的認證碼應該為16842D4FA186F56AB33256971FA110F4,圖9 仿真截圖證明本文設計的SM4-CCM 硬件電路的功能正確性。
圖9 SM4-CCM 的仿真結果
表1 給出了本文設計的性能評估結果。在90 nm工藝100 MHz 時鐘頻率下,本文設計的硬件電路吞吐率達到32.12 Mbps,面積為31 428 門,而功耗只有1.338 mW。
表1 本文設計的性能評估結果
為了獲得較為精確的功耗分析結果,本文首先采用門級后仿真的方式獲得SAIF 文件,然后將其載入到功耗分析工具PrimeTime-PX 進行分析,由此獲得了較為精確的功耗分析報告,具體結果如表2 所示。從表2 可以看出,本文架構的動態(tài)功耗、靜態(tài)功耗和泄露功耗分別為84.2 μW、1.223 mW 和30.96 μW,三者分別占了總功耗的6.29%、91.4%和2.31%。
表2 本文設計的門級功耗分析結果
表3 羅列本文架構與參考文獻的比較結果。從表中可以看出,僅有本文設計實現(xiàn)了SM4-CCM 算法,并且本文設計的功能涵蓋列表中所有文獻的功能。與文獻[15,22]相比,本文設計功耗最低,但是由于SM4-CCM 算法復雜度相較于SM4 算法高很多,使得本文設計的面積開銷較二者高。雖然本文架構的吞吐率較其他文獻低,但是考慮到本文面向的是物聯(lián)網領域,而該領域的無線通信協(xié)議對數(shù)據速率要求較低(比如LoRa 的數(shù)據速率僅為250 kbps),因而可得出以下結論:本文提出的SM4-CCM 硬件架構是一種具有低開銷、低功耗、吞吐率適中、完全滿足物聯(lián)網應用需求的設計。
表3 本文設計與參考文獻的性能比較
最后,為了證明本文提出的硬件架構功能的正確性,我們將其實現(xiàn)并下載到DE10-Standard FPGA開發(fā)板,然后通過Signal Tap 邏輯分析儀抓取FPGA芯片運行結果,原型驗證環(huán)境如圖10(a)所示。我們將RFC 8998 提供的SM4-CCM 測試向量以MIF文件的方式載入到FPGA 中,然后通過邏輯分析儀抓取波形。圖10(b)所示的波形抓取結果與RFC 8998 中的結果完全一直,證明本文提出的硬件架構的功能正確性。
圖10 本文設計的FPGA 原型驗證環(huán)境和抓取波形
面向物聯(lián)網終端數(shù)據安全保護需求,本文以SM4-CCM 認證加密算法為對象,借助于資源復用技術,研究和設計了一款SM4-CCM 算法專用硬件架構。在TSMC 90 nm 工藝下的實驗結果顯示,本文提出的硬件架構設計的面積開銷、功耗、吞吐率分別為31428 門、1.338 mW、32.12 Mbps@ 100MHz。實驗結果表明,本文提出的架構設計具有低開銷、低功耗、吞吐率適中的特點,能夠滿足物聯(lián)網終端對數(shù)據保護的應用需求。后續(xù)研究將面向物聯(lián)網數(shù)據安全,研究和設計更多的滿足物聯(lián)網應用需求的密碼算法IP。