?

一種適用于SHE 規范的安全加密電路設計

2024-03-20 04:31史興強劉夢影王芬芬
電子技術應用 2024年2期
關鍵詞:明文密文字節

史興強,劉夢影,王芬芬

(1.中國電子科技集團第五十八研究所,江蘇 無錫 214035;2.中科芯集成電路有限公司,江蘇 無錫 214072)

0 引言

當今世界隨著全球信息化和網絡化的高速發展,信息安全問題也與日俱增,信息安全問題在各個領域越來越受到重視[1],汽車行業尤其顯著。當前社會對于汽車的需求往往更偏向于功能的提升,因此汽車電子系統日漸復雜且越來越數字化,汽車電子系統不僅需要具備運算更強的控制單元,更高速的數據傳輸功能[2],更集成了無人駕駛、物聯網和5G 等新技術,因此,安全、智能、可靠和低碳環保的網聯汽車必然是全球汽車行業共同的發展趨勢[3]。汽車電子系統復雜化和數字化導致車載電子系統的數量越來越多,從而使得車輛越來越易受到網絡安全攻擊。汽車系統不僅存儲大量的用戶數據(包括車輛行駛記錄、車主個人信息和導航數據等),而且具有眾多ECU,用戶數據的竊取和篡改或者ECU 非法替換等都會造成經濟甚至生命的損失,因此對汽車系統進行信息安全防御是非常必要的。

近年來,針對如何加強汽車信息安全,許多研究提出相關方案。王玲[4]提出了一種基于AES 的RKE 單向認證協議改進的雙向通信認證協議,采用一個固定密鑰和一個動態密鑰的AES 加密來保證數據的安全性,并將該協議應用于免鑰門禁技術,但是該協議不存在對密鑰的管理機制,存在密鑰泄露的風險。劉鵬[5]提出了一種適用于短碼場景的車聯網安全通信方案,采用ECC 和AES 結合的混合加密方案,選用QR 碼完成數據檢錯糾錯,實現安全、可靠、高吞吐的數據傳輸。孫怡琳[2]在XXTEA 異或加密算法和HMAC 認證算法的技術基礎上,設計了一種動態加密機制來實現車內網絡CAN 總線的安全通信。王龍[3]設計了一個面向汽車的數字身份管理系統,可以對車輛本身和主要電子零部件的數字身份進行有效識別和管理。

本文基于AES 算法,設計了一個適用于SHE 規范的安全加密電路。該電路支持ECB 和CBC 模式下的AES-128 加密解 密、CMAC 生成和驗證、Miyaguchi-Preneel 壓縮算法等。此外,該安全加密模塊符合SHE 規范標準,支持密鑰管理、運算隔離等保護措施,具有嚴格的訪問權限,由硬件域控制加密密鑰的管理,保護密鑰免受軟件攻擊,提高設備信息安全性能,以獲得比軟件執行更好的硬件性能和保護。

1 AES 加密算法

AES 算法是2001 年由NIST(美國國家標準技術研究所)為替代數據加密標準(Data Encryption Standard,DES)而發布的新一代數據高級加密標準[6]。該算法是由比利時科學家Joan Daemen 和Vincent Rijmen 提出的,它是一種明文分組長度和秘鑰長度均可變的分組密碼算法,也是一個對稱分組算法。其明文分組長度和秘鑰長度都可獨立地設定為128、192 或256 比特[7],與秘鑰相關的迭代輪數Nr 分別為10、12 或14 輪[8]。在AES高級加密標準規范中限定明文分組長度只能是128 比特,秘鑰長度可選擇三者中的任意一種。

1.1 AES 加密流程

AES 加密算法主要完成明文到密文的轉換,包含字節替換、行移位、列混淆和輪秘鑰加4 個步驟[9],其算法結構如圖 1 所示,共計10 輪變換。

AES 算法以字節為單位進行運算,其中的明文是一個128 比特分組,即16 個字節,被描述為一個4×4 的狀態矩陣,其中前4 個字節被復制到第1 列,緊接著的4 個字節被復制到第2 列,依次往下,最后4 個字節被復制到第4 列。例如一個128 比特數據A,其表示為:A=a0,a1,a2,…,a15,則在進行加密運算時,表示為矩陣S,形式如:

字節替換又叫做S 盒替換,用來完成明文分組的字節到字節的替換,它可通過S 盒把輸入或中間態s 中的每一個字節{xsys}映射為另一個字節,對每一個字節數據中的每一位都能起到混淆作用。AES 中,只有字節替換是非線性變換,因此在面對已知攻擊時字節替換具有極其重要的作用,在秘鑰擴展過程中也使用了該運算。S 盒替換運用查找表的形式實現,雖然該方法占用較大的硬件資源,但關鍵路徑短、速度快、結構簡單且設計實現難度小,綜合考慮硬件資源和速度兩個因素,該方法最為合適。

行移位是對狀態矩陣S的行進行循環的移位操作,將某個字節從一列移動到另一列,它的線性距離是4 字節的倍數,這個轉換能夠確保每列中的任意一個字節都移到不同的列中。對于一個4×4 的狀態矩陣,秘鑰長度為128 比特,第0、1、2、3 行根據密鑰長度分別向左移動0、1、2、3 個字節。

列混淆是對行移位后的狀態矩陣S進行列的變換,將狀態矩陣的每一列看作系數取自有限域GF(28)且次數小于4 的多項式,然后與多項式c(x)相乘并模多項式x4+1。AES 算法給出c(x)={03}x3+{01}x2+{01}x+{02}[10]。

列混淆變換中每列的運算可用如下矩陣表示:

輪密鑰加是將數據加密和密鑰結合的過程,通過列混淆后的矩陣S與輪密鑰矩陣W做相加運算實現,即進行異或操作,配合相對復雜的密鑰擴展流程可以保證該步驟的復雜度。其運算過程如下所示:

密鑰矩陣W通過密鑰擴展獲得,由圖 1 可知,整個AES 算法加密需要10 輪運算共計11 次輪密鑰加,且每一輪相加的子密鑰均不同。秘鑰擴展是加解密重要的組成部分,通過對初始的128、192、256 位秘鑰進行擴展,產生每輪輪變換中需要的秘鑰。

當秘鑰長度為128 比特時,先將種子秘鑰劃分為4個字,再通過秘鑰擴展運算生成每輪迭代所需的4 個秘鑰字,最終完成44 個32 位字的構造。

密鑰擴展的基本原則如下[11]:

密鑰擴展涉及的函數T是在簡單的異或運算中進一步混淆密鑰生成過程[12],該計算過程如圖 2 所示。

圖2 中,Rcon[j]為輪常數,其中j=i/4,Rcon[j]與j的關系在表 1 中列出。

表1 輪常數

1.2 AES 加密模式

NIST 于2000 年3 月為AES 散發公開征集工作模式[13],并于2001 年公開了5 種工作模式,分別為電子密碼本(Electronic Code Book,ECB)模式、密文分組鏈接(Cipher Block Chain,CBC)模 式、密文反 饋(Cipher Feedback,CFB)模式、輸出反饋(Output Feedback,OFB)模式、計算器(Counter,CTR)模式[14],SHE 規范涉及其中的ECB 和CBC 兩種工作模式。

ECB 模式是最早采用和最簡單的模式,它將加密的數據分成若干組,每組的大小與加密密鑰長度相同,每組使用相同的密鑰進行加密。ECB 模式加密過程如圖3所示,該模式明文分組與密文分組是一一對應的關系,且加密分塊之間不相互影響,可通過密文的規律推測出明文規律,存在一定的風險。

CBC 模式在加密當前明文塊時需與前一個密文塊進行異或計算后再進行加密操作[15],第一塊需要初始向量進行異或運算,然后加密作為第一塊密文塊,隨后每一個明文分塊在加密前均需與前一個密文塊進行異或運算,隨后再進行加密運算。加密過程如圖4 所示。因此,每一次加密都需要前一次密文的參與,明文中微小的改變都會使后續所有的密文改變,該模式具有較高的安全性。

2 安全加密電路設計

本文設計了一種安全加密電路,該電路基于AES 加密算法,支持ECB 和CBC 模式下的AES-128 加密解密、CMAC 生成和驗證、Miyaguchi-Preneel 壓縮算法等。此外,該安全加密模塊符合SHE 規范標準,支持密鑰管理、運算隔離等保護措施,提高設備信息安全性能,以獲得比軟件執行更好的硬件性能和保護。

2.1 SHE 規范

SHE 在車聯網中,被應用在車端ECU 中負責安全存儲和安全計算,是由HIS 制定的標準。它旨在將對加密密鑰的控制從軟件域移到硬件域,從而保護這些密鑰免受軟件攻擊,設備和數據的安全性僅依賴于算法的強度和密鑰的機密性。

圖5 為SHE 邏輯結構圖,有一塊單獨的安全區域,該區域中即為SHE 定義的模塊,該模塊包括控制邏輯、AES 算法、存儲單元、偽隨機數生產器,且該模塊僅與CPU 通信。同時,SHE 必須被實現為微控制器的片上外圍設備,可通過多種方式連接到CPU,如:通過專用接口或內部外圍總線,互連必須以其他外設或外部實體不能修改CPU 和SHE 之間傳輸數據的實現方式。

AES 算法即為AES-128 的加密和解密算法,通過控制邏輯模塊控制加載密鑰和數據信號,輸入數據流等,調用AES 算法模塊以實現ECB 和CBC 模式下的AES 加解密、CMAC 生成、壓縮函數等算法;存儲單元存放密鑰數值、密鑰屬性等相關信息,密鑰相關信息僅允許控制邏輯訪問,且不能隨意讀取和修改;執行命令的控制信號、輸入數據以及需要輸出的數據等,SHE 規范涉及的命令在表 2 中列出,每條命令實現不同的功能,且對應一個FuncID,應用程序將要執行的命令、所需控制字段和輸入數據按照一定的格式通過總線寫入存儲單元,控制邏輯從中讀取并解析,完成指令操作。

2.2 算法硬件實現

本文設計的安全加密電路支持AES-128 在ECB 和CBC 模式下的加密和解密、CMAC 的生成和校驗、Miyaguchi-Preneel 壓縮算法,其中CMAC 的生成和Miyaguchi-Preneel 壓縮算法均基于AES 算法實現。

根據2.1 節介紹的AES 加密流程,設計了AES 算法模塊。輸入信號包括加載密鑰或數據控制信號Ld_cmd,128 比特的密鑰數值KEY,128 比特明文數據TextIn,輸出信號包括當前明文加密完成信號AES_cipher_done,128 比特密文數據TextOut。圖6 所示為AES加密時序,T2 時鐘周期,Ld_cmd 有效,同時密鑰KEY 和密文TextIn 一并輸入;下個時鐘T3 周期密鑰擴展開始進行計算得到第一輪擴展密鑰wk[0:3],與明文進行異或計算得到狀態矩陣Sa(T3);T4 周期,將狀態矩陣Sa(T3)通過S 盒替換,行移位和列混淆等計算,并與下一輪擴展密鑰wk[4:7] 進行異或計算得到第一輪狀態矩陣Sa(T3),以此類推,在進行最后一輪計算時即T14 時鐘周期,Sa(T13)通過S 盒替換和行移位計算后,與擴展密鑰wk[40:43]進行異或運算得到最終的密文,此時加密完成信號AES_cipher_done 置為1,TextOut 輸出有效密文數據。

該設計采用迭代運算過程和流水線結構,可以復用硬件邏輯循環迭代來進行運算,節約了邏輯資源,雖然需要消耗多個時鐘周期才能得到一個密文數據,但其吞吐率能夠滿足SHE 規范規定的最大2 μs 的等待周期。

圖7 為CMAC 計算過程,將信息碼分為n個128 比特的信息塊,即M=M1||M2||…||Mn-1||Mn*,采用AES-128 CBC 模式,使用密鑰K對每塊信息碼進行加密,對于最后一塊信息碼,不僅需要根據其位寬補全128 比特,還需根據密鑰K計算得到所需K1和K2,如果最后一塊信息碼Mn*為完整的信息碼,則Mn*與K1異或之后作為最后一個信息碼進行AES-128 加密計算;如果Mn*為非完整的信息碼,則先補齊Mn*,再與K2異或之后作為最后一個信息碼進行AES-128 加密計算。取最后一組密文的高有效位Tlen 作為MAC 值OUTn。

根據CMAC 計算過程,且為便于正確地處理密鑰載入和數據載入控制信號,以及輸入數據流,本文在實現CMAC 算法硬件電路設計了一個有限狀態機,其狀態和跳轉條件在圖 8 中詳細標出。該狀態默認處于空閑狀態(IDLE),當密鑰載入控制信號有效,且密鑰數值K同時輸入,則狀態跳轉至K1、K2生成狀態(K1K2_GEN),此時調用AES-128 的CBC 模式加密算法,使用密鑰K對0128進行加密;K1和K2計算完成之后,可載入待計算的數據Mi,如果Mi不為最后一個信息碼,狀態處于跳至計算前N個信息碼狀態(CAL_FRONT_NBLOCK),同樣調用AES-128 的CBC 模式加密算法,每次當前信息碼加密完成之后,再載入新的數據進行AES 加密;當計算最后一個信息碼時,狀態跳至CAL_LAST_BLOCK,該次加密得到的密文即為CMAC 結果。

Miyaguchi-Preneel 壓縮算法是一種單向密碼散列函數,由Miyaguchi 和Preneel 于1992 年提出,主要用于數據完整性檢查、數字簽名等安全應用場景。相較于SHA-1 和 MD5 等傳統的密碼散列函數,MP 壓縮算法不僅可以提供相同的安全保障,而且具有運算速度較快、安全性好、內存占用小等優勢。該壓縮算法的每一塊消息都會作為明文Mi,而前一塊明文的壓縮結果OUTi-1作為密鑰,對Mi進行AES 加密計算,輸出之后的密文、Mi和OUTi-1三者進行異或運算,最終得到當前明文的壓縮數據OUTi,該算法的表達式如下所示:

其中,OUT0=0128。

2.3 安全加密模塊硬件設計

基于AES 算法,本文設計了一種適用于SHE 規范的安全加密模塊,設計框圖如圖9 所示。該電路主要包括4 個 模塊:AES 算 法模 塊、SHE_ctrl 模 塊、PRAM_ctrl 模塊以及Flexram_ctrl 模塊。AES 算法模塊主要實現AES-128 加密和解密功能。SHE_ctrl 模塊主要實現SHE 指令解析、控制算法輸入信號和指令輸入輸出數據流等。用戶程序可通過總線向CSEc_PRAM 中按照規定的格式和地址寫入命令相關信息,包括包含FuncID 的命令頭、控制字段和輸入數據等,安全加密模塊則通過PRAM_ctrl模塊從CSEc_PRAM 獲取指令相關信息,待SHE_ctrl 模塊完成該指令,將需輸出的數據和狀態信息寫入CSEc_PRAM 供用戶程序獲取。FlexRAM 中存放密鑰及其相關信息,規定每個密鑰存放在相應的地址,SHE_ctrl模塊通過Flexram_ctrl 對相應的密鑰區域進行讀寫操作。由此可知,該安全加密模塊嚴格控制了密鑰的訪問權限,僅SHE_ctrl 模塊可以讀取密鑰數值等相關信息;且在命令執行過程中,運算過程和數據不被其他模塊和應用程序影響和訪問。

本文設計的安全加密模塊支持表2 列出的所有指令,由于同一時間僅能夠執行一條指令,且不同的指令存在訪問相同地址區域、調用相同算法等共性操作,因此為節約硬件資源,提高指令完成效率,設計了指令處理狀態機(如圖 10 所示),該狀態機共有17 個狀態。

表2 SHE 指令

表3 對于每個狀態進行了簡要的闡述,根據命令操作的具體流程,合并相同的步驟,整理得到表中列舉的狀態。例如,Rd_CSEc_Pram_ST1 狀態,每條指令都需跳轉至該狀態,讀取命令頭,并判斷相關信息是否有效,如果命令頭判定為無效則狀態跳轉至ERR_ST,向CSEc_PRAM 中寫入該錯誤對應的ERROR_BIT(具體對應關系在表 4 詳細列出),否則根據當前命令跳轉至其他狀態進行下一步操作。

表3 SHE 命令處狀態描述

表4 錯誤情況狀態跳轉

表5 AES 數據測試

以執行指令ENC 為例,該命令是對所有明文進行ECB 模式的AES-128 加密,該指令的硬件流程如圖11 所示。當應用程序通過總線寫入該指令執行所需數據信息、控制信號和命令頭,則狀態機從WAIT_ST 跳轉至Rd_CSEc_Pram_ST1,并判斷密鑰標志和FuncID 是否有效,如果無效則狀態跳轉至ERR_ST 以向CSEc_PRAM錯誤狀態位寫入相應的ERROR_BIT;否則跳轉至Rd_Flexram_ST,根據密鑰標志從對應的FlexRAM 地址讀取該密鑰數據及其屬性參數,并判斷密鑰是否為空且密鑰屬性是否允許該密鑰使用,如果密鑰為空或密鑰屬性與當前不匹配,則狀態跳轉至ERR_ST,否則跳轉至Rd_CSEc_Pram_ST2 讀取控制參數待加密明文個數;緊接著再從CSEc_PRAM 中讀取一個128 比特待加密明文,進入AES-128 加密進程;當加密完成,生成的密文則寫入CSEc_PRAM 相應的地址,并判斷是否還有待加密明文,如果有則硬件繼續從CSEc_PRAM 中讀取明文并進行AES 加密計算,并將密文結果寫入CSEc_PRAM,如此反復上述操作,直至所有明文信息都完成加密,并輸出每個密文結果,此時,狀態機跳轉至NO_ERR_ST,硬件在CSEc_PRAM 錯誤狀態位寫入0x800。至此,ENC_ECB 指令執行完成。

圖1 128-AES 算法結構

圖2 函數T 的計算過程

圖3 ECB 模式加密過程

圖4 CBC 模式的加密過程

圖5 SHE 邏輯結構圖

圖6 AES 加密時序圖

圖7 CMAC 計算過程

圖8 CMAC 計算狀態機

圖9 安全加密模塊設計框圖

圖10 SHE 指令處理狀態機

圖11 ENC 指令硬件處理流程

3 仿真與分析

本文使用Verilog HDL 語言對所設計的安全加密電路進行設計描述,在功能仿真中搭建測試設備模型,使用Cadence irun 和 Novas Verdi 聯合仿真環境。編寫testcase 模擬應用程序向系統發出SHE 指令。根據SHE協議提供的測試案例,將仿真結果和案例結果進行對比,同時驗證了該安全加密電路的設計是否合理可靠。

針對ENC_CBC 指令,采用密鑰KEY=128’h 2b7e151628aed2a6abf7158809cf4f3c,初始向量IV=128’h 000102030405060708090a0b0c0d0e0f,明文數據和密文在表 5 中列出,該結果與測試案例提供的結果一致。

圖12為加密模塊執行該指令的仿真波形圖。cmd_cur_st為當前狀態機狀態信號,ld_cmd_aes為AES算法模塊加載明文控制信號,AES_cipher_done 為AES 加密完成信號,TextIn_aes 為輸入數據,TextOut_aes 為輸出數據。從仿真圖可見,狀態機跳轉符合圖 11 的設計,每次加密完成則將密文信息寫入CSEc_PRAM 相應區域,csec_pram_wr_req連續置位4 次,完成1 個128 比特密文的寫入。

圖12 ENC_CBC 仿真波形

在SHE 眾多指令中,執行過程最為繁瑣的為LOAD_KEY 指令,也是密鑰管理的主要指令,其涉及了AES 加密和解密算法、CMAC 計算、MP 壓縮算法等。該命令執行流程可分為兩個子流程:密鑰加載/更新流程和校驗信息生成流程,分別對應圖13 和圖14。加密模塊通過壓縮函數算法和CMAC 函數計算得到M3,并與輸入參數M3′的值進行對比,當且僅當兩參數相同(圖13 中黑色標志處),狀態機進入CMD_DECRYPT_PROC對相關參數解密得到密鑰更新值128′h0f0e0d0c0b0a090 80706050403020100、密鑰屬性以及計數器值,并將上述信息存入Flex_ram 中。

圖13 LOAD_KEY 命令計算M3

圖14 LOAD_KEY 命令輸出校驗信息

加載完新的密鑰之后,加密模塊需要產生校驗信息M4 和M5 并輸出,應用程序通過比對該數值與后臺計算的結果即可證明密鑰更新成功。

4 結論

本文基于AES 加密算法,設計了一款適用于SHE 規范的安全加密電路,其支持AES-128 加密解密、CMAC算法和Miyaguchi-Preneel 壓縮算法等。此外,其符合SHE 規范標準,僅允許硬件管理密鑰,具有運算隔離等保護措施。較之傳統的加密模塊,該安全加密電路具有嚴格的訪問權限,由硬件域控制加密密鑰的獲取和加載更新,保護密鑰免受軟件攻擊,同時,軟件不能夠干預數據流的加解密過程以及密鑰更新等操作,提高了設備和數據的安全性和機密性。

猜你喜歡
明文密文字節
一種針對格基后量子密碼的能量側信道分析框架
一種支持動態更新的可排名密文搜索方案
No.8 字節跳動將推出獨立出口電商APP
基于模糊數學的通信網絡密文信息差錯恢復
No.10 “字節跳動手機”要來了?
奇怪的處罰
簡談MC7字節碼
奇怪的處罰
四部委明文反對垃圾焚燒低價競爭
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合