999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種適用于SHE 規(guī)范的安全加密電路設(shè)計(jì)

2024-03-20 04:31:04史興強(qiáng)劉夢(mèng)影王芬芬
電子技術(shù)應(yīng)用 2024年2期
關(guān)鍵詞:指令

史興強(qiáng),劉夢(mèng)影,王芬芬

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

0 引言

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

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

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

1 AES 加密算法

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

1.1 AES 加密流程

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

AES 算法以字節(jié)為單位進(jìn)行運(yùn)算,其中的明文是一個(gè)128 比特分組,即16 個(gè)字節(jié),被描述為一個(gè)4×4 的狀態(tài)矩陣,其中前4 個(gè)字節(jié)被復(fù)制到第1 列,緊接著的4 個(gè)字節(jié)被復(fù)制到第2 列,依次往下,最后4 個(gè)字節(jié)被復(fù)制到第4 列。例如一個(gè)128 比特?cái)?shù)據(jù)A,其表示為:A=a0,a1,a2,…,a15,則在進(jìn)行加密運(yùn)算時(shí),表示為矩陣S,形式如:

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

行移位是對(duì)狀態(tài)矩陣S的行進(jìn)行循環(huán)的移位操作,將某個(gè)字節(jié)從一列移動(dòng)到另一列,它的線性距離是4 字節(jié)的倍數(shù),這個(gè)轉(zhuǎn)換能夠確保每列中的任意一個(gè)字節(jié)都移到不同的列中。對(duì)于一個(gè)4×4 的狀態(tài)矩陣,秘鑰長(zhǎng)度為128 比特,第0、1、2、3 行根據(jù)密鑰長(zhǎng)度分別向左移動(dòng)0、1、2、3 個(gè)字節(jié)。

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

列混淆變換中每列的運(yùn)算可用如下矩陣表示:

輪密鑰加是將數(shù)據(jù)加密和密鑰結(jié)合的過(guò)程,通過(guò)列混淆后的矩陣S與輪密鑰矩陣W做相加運(yùn)算實(shí)現(xiàn),即進(jìn)行異或操作,配合相對(duì)復(fù)雜的密鑰擴(kuò)展流程可以保證該步驟的復(fù)雜度。其運(yùn)算過(guò)程如下所示:

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

當(dāng)秘鑰長(zhǎng)度為128 比特時(shí),先將種子秘鑰劃分為4個(gè)字,再通過(guò)秘鑰擴(kuò)展運(yùn)算生成每輪迭代所需的4 個(gè)秘鑰字,最終完成44 個(gè)32 位字的構(gòu)造。

密鑰擴(kuò)展的基本原則如下[11]:

密鑰擴(kuò)展涉及的函數(shù)T是在簡(jiǎn)單的異或運(yùn)算中進(jìn)一步混淆密鑰生成過(guò)程[12],該計(jì)算過(guò)程如圖 2 所示。

圖2 中,Rcon[j]為輪常數(shù),其中j=i/4,Rcon[j]與j的關(guān)系在表 1 中列出。

表1 輪常數(shù)

1.2 AES 加密模式

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

ECB 模式是最早采用和最簡(jiǎn)單的模式,它將加密的數(shù)據(jù)分成若干組,每組的大小與加密密鑰長(zhǎng)度相同,每組使用相同的密鑰進(jìn)行加密。ECB 模式加密過(guò)程如圖3所示,該模式明文分組與密文分組是一一對(duì)應(yīng)的關(guān)系,且加密分塊之間不相互影響,可通過(guò)密文的規(guī)律推測(cè)出明文規(guī)律,存在一定的風(fēng)險(xiǎn)。

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

2 安全加密電路設(shè)計(jì)

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

2.1 SHE 規(guī)范

SHE 在車聯(lián)網(wǎng)中,被應(yīng)用在車端ECU 中負(fù)責(zé)安全存儲(chǔ)和安全計(jì)算,是由HIS 制定的標(biāo)準(zhǔn)。它旨在將對(duì)加密密鑰的控制從軟件域移到硬件域,從而保護(hù)這些密鑰免受軟件攻擊,設(shè)備和數(shù)據(jù)的安全性僅依賴于算法的強(qiáng)度和密鑰的機(jī)密性。

圖5 為SHE 邏輯結(jié)構(gòu)圖,有一塊單獨(dú)的安全區(qū)域,該區(qū)域中即為SHE 定義的模塊,該模塊包括控制邏輯、AES 算法、存儲(chǔ)單元、偽隨機(jī)數(shù)生產(chǎn)器,且該模塊僅與CPU 通信。同時(shí),SHE 必須被實(shí)現(xiàn)為微控制器的片上外圍設(shè)備,可通過(guò)多種方式連接到CPU,如:通過(guò)專用接口或內(nèi)部外圍總線,互連必須以其他外設(shè)或外部實(shí)體不能修改CPU 和SHE 之間傳輸數(shù)據(jù)的實(shí)現(xiàn)方式。

AES 算法即為AES-128 的加密和解密算法,通過(guò)控制邏輯模塊控制加載密鑰和數(shù)據(jù)信號(hào),輸入數(shù)據(jù)流等,調(diào)用AES 算法模塊以實(shí)現(xiàn)ECB 和CBC 模式下的AES 加解密、CMAC 生成、壓縮函數(shù)等算法;存儲(chǔ)單元存放密鑰數(shù)值、密鑰屬性等相關(guān)信息,密鑰相關(guān)信息僅允許控制邏輯訪問(wèn),且不能隨意讀取和修改;執(zhí)行命令的控制信號(hào)、輸入數(shù)據(jù)以及需要輸出的數(shù)據(jù)等,SHE 規(guī)范涉及的命令在表 2 中列出,每條命令實(shí)現(xiàn)不同的功能,且對(duì)應(yīng)一個(gè)FuncID,應(yīng)用程序?qū)⒁獔?zhí)行的命令、所需控制字段和輸入數(shù)據(jù)按照一定的格式通過(guò)總線寫入存儲(chǔ)單元,控制邏輯從中讀取并解析,完成指令操作。

2.2 算法硬件實(shí)現(xiàn)

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

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

該設(shè)計(jì)采用迭代運(yùn)算過(guò)程和流水線結(jié)構(gòu),可以復(fù)用硬件邏輯循環(huán)迭代來(lái)進(jìn)行運(yùn)算,節(jié)約了邏輯資源,雖然需要消耗多個(gè)時(shí)鐘周期才能得到一個(gè)密文數(shù)據(jù),但其吞吐率能夠滿足SHE 規(guī)范規(guī)定的最大2 μs 的等待周期。

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

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

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

其中,OUT0=0128。

2.3 安全加密模塊硬件設(shè)計(jì)

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

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

表2 SHE 指令

表3 對(duì)于每個(gè)狀態(tài)進(jìn)行了簡(jiǎn)要的闡述,根據(jù)命令操作的具體流程,合并相同的步驟,整理得到表中列舉的狀態(tài)。例如,Rd_CSEc_Pram_ST1 狀態(tài),每條指令都需跳轉(zhuǎn)至該狀態(tài),讀取命令頭,并判斷相關(guān)信息是否有效,如果命令頭判定為無(wú)效則狀態(tài)跳轉(zhuǎn)至ERR_ST,向CSEc_PRAM 中寫入該錯(cuò)誤對(duì)應(yīng)的ERROR_BIT(具體對(duì)應(yīng)關(guān)系在表 4 詳細(xì)列出),否則根據(jù)當(dāng)前命令跳轉(zhuǎn)至其他狀態(tài)進(jìn)行下一步操作。

表3 SHE 命令處狀態(tài)描述

表4 錯(cuò)誤情況狀態(tài)跳轉(zhuǎn)

表5 AES 數(shù)據(jù)測(cè)試

以執(zhí)行指令ENC 為例,該命令是對(duì)所有明文進(jìn)行ECB 模式的AES-128 加密,該指令的硬件流程如圖11 所示。當(dāng)應(yīng)用程序通過(guò)總線寫入該指令執(zhí)行所需數(shù)據(jù)信息、控制信號(hào)和命令頭,則狀態(tài)機(jī)從WAIT_ST 跳轉(zhuǎn)至Rd_CSEc_Pram_ST1,并判斷密鑰標(biāo)志和FuncID 是否有效,如果無(wú)效則狀態(tài)跳轉(zhuǎn)至ERR_ST 以向CSEc_PRAM錯(cuò)誤狀態(tài)位寫入相應(yīng)的ERROR_BIT;否則跳轉(zhuǎn)至Rd_Flexram_ST,根據(jù)密鑰標(biāo)志從對(duì)應(yīng)的FlexRAM 地址讀取該密鑰數(shù)據(jù)及其屬性參數(shù),并判斷密鑰是否為空且密鑰屬性是否允許該密鑰使用,如果密鑰為空或密鑰屬性與當(dāng)前不匹配,則狀態(tài)跳轉(zhuǎn)至ERR_ST,否則跳轉(zhuǎn)至Rd_CSEc_Pram_ST2 讀取控制參數(shù)待加密明文個(gè)數(shù);緊接著再?gòu)腃SEc_PRAM 中讀取一個(gè)128 比特待加密明文,進(jìn)入AES-128 加密進(jìn)程;當(dāng)加密完成,生成的密文則寫入CSEc_PRAM 相應(yīng)的地址,并判斷是否還有待加密明文,如果有則硬件繼續(xù)從CSEc_PRAM 中讀取明文并進(jìn)行AES 加密計(jì)算,并將密文結(jié)果寫入CSEc_PRAM,如此反復(fù)上述操作,直至所有明文信息都完成加密,并輸出每個(gè)密文結(jié)果,此時(shí),狀態(tài)機(jī)跳轉(zhuǎn)至NO_ERR_ST,硬件在CSEc_PRAM 錯(cuò)誤狀態(tài)位寫入0x800。至此,ENC_ECB 指令執(zhí)行完成。

圖1 128-AES 算法結(jié)構(gòu)

圖2 函數(shù)T 的計(jì)算過(guò)程

圖3 ECB 模式加密過(guò)程

圖4 CBC 模式的加密過(guò)程

圖5 SHE 邏輯結(jié)構(gòu)圖

圖6 AES 加密時(shí)序圖

圖7 CMAC 計(jì)算過(guò)程

圖8 CMAC 計(jì)算狀態(tài)機(jī)

圖9 安全加密模塊設(shè)計(jì)框圖

圖10 SHE 指令處理狀態(tài)機(jī)

圖11 ENC 指令硬件處理流程

3 仿真與分析

本文使用Verilog HDL 語(yǔ)言對(duì)所設(shè)計(jì)的安全加密電路進(jìn)行設(shè)計(jì)描述,在功能仿真中搭建測(cè)試設(shè)備模型,使用Cadence irun 和 Novas Verdi 聯(lián)合仿真環(huán)境。編寫testcase 模擬應(yīng)用程序向系統(tǒng)發(fā)出SHE 指令。根據(jù)SHE協(xié)議提供的測(cè)試案例,將仿真結(jié)果和案例結(jié)果進(jìn)行對(duì)比,同時(shí)驗(yàn)證了該安全加密電路的設(shè)計(jì)是否合理可靠。

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

圖12為加密模塊執(zhí)行該指令的仿真波形圖。cmd_cur_st為當(dāng)前狀態(tài)機(jī)狀態(tài)信號(hào),ld_cmd_aes為AES算法模塊加載明文控制信號(hào),AES_cipher_done 為AES 加密完成信號(hào),TextIn_aes 為輸入數(shù)據(jù),TextOut_aes 為輸出數(shù)據(jù)。從仿真圖可見(jiàn),狀態(tài)機(jī)跳轉(zhuǎn)符合圖 11 的設(shè)計(jì),每次加密完成則將密文信息寫入CSEc_PRAM 相應(yīng)區(qū)域,csec_pram_wr_req連續(xù)置位4 次,完成1 個(gè)128 比特密文的寫入。

圖12 ENC_CBC 仿真波形

在SHE 眾多指令中,執(zhí)行過(guò)程最為繁瑣的為L(zhǎng)OAD_KEY 指令,也是密鑰管理的主要指令,其涉及了AES 加密和解密算法、CMAC 計(jì)算、MP 壓縮算法等。該命令執(zhí)行流程可分為兩個(gè)子流程:密鑰加載/更新流程和校驗(yàn)信息生成流程,分別對(duì)應(yīng)圖13 和圖14。加密模塊通過(guò)壓縮函數(shù)算法和CMAC 函數(shù)計(jì)算得到M3,并與輸入?yún)?shù)M3′的值進(jìn)行對(duì)比,當(dāng)且僅當(dāng)兩參數(shù)相同(圖13 中黑色標(biāo)志處),狀態(tài)機(jī)進(jìn)入CMD_DECRYPT_PROC對(duì)相關(guān)參數(shù)解密得到密鑰更新值128′h0f0e0d0c0b0a090 80706050403020100、密鑰屬性以及計(jì)數(shù)器值,并將上述信息存入Flex_ram 中。

圖13 LOAD_KEY 命令計(jì)算M3

圖14 LOAD_KEY 命令輸出校驗(yàn)信息

加載完新的密鑰之后,加密模塊需要產(chǎn)生校驗(yàn)信息M4 和M5 并輸出,應(yīng)用程序通過(guò)比對(duì)該數(shù)值與后臺(tái)計(jì)算的結(jié)果即可證明密鑰更新成功。

4 結(jié)論

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

猜你喜歡
指令
聽我指令:大催眠術(shù)
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
殺毒軟件中指令虛擬機(jī)的脆弱性分析
巧用G10指令實(shí)現(xiàn)橢圓輪廓零件倒圓角
中斷與跳轉(zhuǎn)操作對(duì)指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測(cè)算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動(dòng)制冷劑行業(yè)發(fā)展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 亚洲成人精品在线| 欧美一级99在线观看国产| 亚洲欧美日韩中文字幕在线| 扒开粉嫩的小缝隙喷白浆视频| 精品小视频在线观看| 丰满人妻一区二区三区视频| 伊人激情综合| 久久99国产乱子伦精品免| 免费人成又黄又爽的视频网站| 制服丝袜在线视频香蕉| 五月天在线网站| 国产精品视频免费网站| 国产精品专区第一页在线观看| 亚洲大尺度在线| 2022国产无码在线| 精品无码日韩国产不卡av| 中文字幕一区二区人妻电影| 国产嫩草在线观看| 少妇精品在线| 国产剧情一区二区| 日韩二区三区| 超碰91免费人妻| 日韩小视频在线播放| 亚洲欧洲国产成人综合不卡| 欧美日韩精品一区二区在线线| 四虎综合网| 国产女人在线| 亚洲成人动漫在线观看| 国内毛片视频| 女同久久精品国产99国| 日韩成人在线网站| 久久毛片免费基地| 亚洲天堂.com| 91视频精品| 亚洲最猛黑人xxxx黑人猛交| 91久久国产综合精品| 色噜噜狠狠色综合网图区| 欧美怡红院视频一区二区三区| 狼友av永久网站免费观看| 综合久久久久久久综合网| 亚洲第一成人在线| 99这里只有精品免费视频| 亚洲一级毛片| 狠狠操夜夜爽| 国产精品专区第1页| 天天躁狠狠躁| 午夜精品国产自在| 色婷婷成人| 无码精品福利一区二区三区| 日日摸夜夜爽无码| 中文字幕乱妇无码AV在线| 亚洲男人的天堂久久精品| 久久一本日韩精品中文字幕屁孩| 日韩在线第三页| 国产精品第一区| 91精品免费久久久| 国产第一色| 456亚洲人成高清在线| 亚洲伊人天堂| 久久这里只有精品免费| 精品一区二区三区中文字幕| 精品久久高清| 国产精品一区在线观看你懂的| 浮力影院国产第一页| 国产精品成人一区二区不卡| 免费99精品国产自在现线| 国产资源免费观看| 亚洲一区第一页| 亚洲欧洲日韩综合| 欧美性精品| 一区二区三区毛片无码| 九色国产在线| 午夜精品一区二区蜜桃| 亚洲人成影院午夜网站| 18禁不卡免费网站| 久久精品国产国语对白| 亚洲精品中文字幕无乱码| 综合色在线| 97无码免费人妻超级碰碰碰| 91久久精品日日躁夜夜躁欧美| 国产亚洲一区二区三区在线| 国产呦视频免费视频在线观看|