国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于AES-GCM的數(shù)據(jù)完整性校驗(yàn)方法*

2016-12-13 06:51雷志群
關(guān)鍵詞:密文存儲(chǔ)器解密

雷志群

(武漢數(shù)字工程研究所 武漢 430205)

?

一種基于AES-GCM的數(shù)據(jù)完整性校驗(yàn)方法*

雷志群

(武漢數(shù)字工程研究所 武漢 430205)

隨著嵌入式系統(tǒng)的廣泛應(yīng)用,嵌入式系統(tǒng)的安全問題逐漸引起人們的重視。其中,片外存儲(chǔ)器的安全問題是整個(gè)嵌入式系統(tǒng)安全問題中不可忽視的一部分。目前已經(jīng)存在很多關(guān)于片外存儲(chǔ)安全方面的研究,這些研究一般是片上微處理器和片外的存儲(chǔ)器之間增加安全防御模塊(硬件)。但是,在嵌入式系統(tǒng)中增加存儲(chǔ)器安全防御模塊(硬件)無疑會(huì)對整個(gè)系統(tǒng)的性能、存儲(chǔ)器開銷、SOC面積開銷等造成一定的負(fù)面影響。因此,現(xiàn)在很多方法都是在安全性,性能開銷、存儲(chǔ)器開銷、SOC面積開銷等因素之間尋找一個(gè)折中的最優(yōu)方案。論文充分考慮這些因素的影響,提出了一種基于AES-GCM的數(shù)據(jù)完整性校驗(yàn)方法。該方法對片外存儲(chǔ)器同時(shí)提供數(shù)據(jù)機(jī)密性和完整性保護(hù),可以防御一系列典型的惡意攻擊,如欺騙攻擊、重放攻擊等。

數(shù)據(jù)完整性; 數(shù)據(jù)機(jī)密性; 硬件架構(gòu); AES-GCM

Class Number TM76

1 引言

近年來,隨著電子信息技術(shù)的迅猛發(fā)展和進(jìn)步,嵌入式系統(tǒng)在我們的生活中隨處可見,比如手機(jī)、平板電腦、ATM機(jī)(自動(dòng)取款機(jī))以及車載GPS等。這些嵌入式系統(tǒng)經(jīng)常需要處理一些敏感信息,包括手機(jī)支付,ATM機(jī)處理的用戶銀行賬戶信息,平板電腦用戶上網(wǎng)時(shí)輸入的密碼信息等[1]。然而,現(xiàn)如今嵌入式系統(tǒng)正廣泛地受到各種軟件攻擊和硬件攻擊的威脅,這些攻擊嚴(yán)重威脅了嵌入式系統(tǒng)的數(shù)據(jù)機(jī)密性、數(shù)據(jù)完整性和系統(tǒng)可用性,威脅了用戶的隱私和財(cái)產(chǎn)安全,限制了嵌入式系統(tǒng)在一些數(shù)據(jù)敏感領(lǐng)域的應(yīng)用[2]。所以,嵌入式系統(tǒng)的安全問題越來越受到人們的重視[3]。

典型的嵌入式系統(tǒng)硬件由兩大主要部分組成,一個(gè)片上系統(tǒng)(System on Chip,SOC)芯片和一個(gè)片外隨機(jī)訪問存儲(chǔ)器(Random Access Memory,RAM)。然而,連接片外RAM和SOC的總線(Bus)是嵌入式系統(tǒng)最薄弱的一個(gè)環(huán)節(jié),很容易被攻擊者俘獲,進(jìn)而使存儲(chǔ)器的數(shù)據(jù)遭到竊聽、篡改或者破壞,攻擊者以數(shù)據(jù)注入的方式實(shí)施硬件攻擊[4]。嵌入式系統(tǒng)軟件一般是由不支持運(yùn)行時(shí)錯(cuò)誤檢測的低級語言編寫,所以容易受到惡意代碼的軟件攻擊。這些攻擊都將直接或者間接的威脅到嵌入式系統(tǒng)的數(shù)據(jù)機(jī)密性、數(shù)據(jù)完整性和系統(tǒng)可用性,使敏感數(shù)據(jù)遭到泄露或者使系統(tǒng)運(yùn)行混亂。因此,研究保證嵌入式系統(tǒng)片外存儲(chǔ)的數(shù)據(jù)機(jī)密性和數(shù)據(jù)完整性的方法,來保護(hù)嵌入式系統(tǒng)片外存儲(chǔ)器的安全,是一個(gè)重要的研究課題,而重放攻擊作為一種最難抵御的硬件攻擊類型,成為研究的重點(diǎn)[5]。

本文提出了一種基于AES-GCM的片外存儲(chǔ)器數(shù)據(jù)安全校驗(yàn)方法,本方法可以同時(shí)對片外的數(shù)據(jù)機(jī)密性和完整性提供保護(hù)。本方法是一種雙層加解密機(jī)制,第一層對數(shù)據(jù)進(jìn)行加解密,第二層對第一層產(chǎn)生的tag進(jìn)行加解密。通過兩層加解密機(jī)制的配合,可以有效地減小片內(nèi)存儲(chǔ)器的開銷,而且性能損失比較小。

2 攻擊模型

針對嵌入式系統(tǒng)的攻擊主要分為兩大類:軟件攻擊和物理攻擊。由于嵌入式系統(tǒng)的使用環(huán)境導(dǎo)致嵌入式系統(tǒng)的計(jì)算能力和硬件資源都比較有限,因此,用軟件的方法防御外界的攻擊對嵌入式系統(tǒng)的性能損失比較大。

假設(shè)所要保護(hù)的嵌入式設(shè)備是處在一個(gè)易受外界攻擊的環(huán)境中的,假設(shè)SOC可以抵御所有的物理攻擊并且是可信的,即片內(nèi)的寄存器和存儲(chǔ)器對外界的攻擊者而言是不可訪問和攻擊的。邊頻攻擊和軟件攻擊不在本文的考慮范圍之內(nèi)。

對于嵌入式系統(tǒng),片外的存儲(chǔ)器(external memory)以及片外的存儲(chǔ)器與SOC連接的總線是最容易受物理攻擊的薄弱環(huán)節(jié),比如總線監(jiān)聽(bus probing)、存儲(chǔ)器篡改(memory tampering)等。AES(高級加密標(biāo)準(zhǔn))、3DES(三重?cái)?shù)據(jù)加密算法)這樣的算法可以保證數(shù)據(jù)的機(jī)密性[6],但是單一地對數(shù)據(jù)加密不能保證數(shù)據(jù)的完整性。這些加密過的數(shù)據(jù)在外存儲(chǔ)器中仍然可能遭到攻擊,即數(shù)據(jù)的完整性可能遭到破壞。常見的攻擊方式有三種。

欺騙攻擊(Spoofing attacks):攻擊者使用一個(gè)任意偽造的存儲(chǔ)塊替換已有的存儲(chǔ)塊。

拼接攻擊(Splicing or relocation attacks):也叫改變位置攻擊,攻擊者用位于地址B的存儲(chǔ)塊替換位于地址A的存儲(chǔ)塊(A≠B),這種攻擊可以看作是存儲(chǔ)塊位置的空間置換。

重放攻擊(Replay attacks):位于給定地址的存儲(chǔ)塊內(nèi)容被記錄下來,并且在一個(gè)稍后的時(shí)間點(diǎn)被插入到同樣的地址上。通過這樣做,當(dāng)前存儲(chǔ)塊的值被一個(gè)舊的值替換了。

3 國內(nèi)外現(xiàn)狀

XOM是早期比較經(jīng)典的片外存儲(chǔ)器保護(hù)方法之一。XOM主要是通過一個(gè)比較復(fù)雜的密鑰管理系統(tǒng)來保護(hù)存儲(chǔ)器安全的,它主要的優(yōu)點(diǎn)是安全性極高(成功攻擊的概率為1/2-160),但它的主要問題是性能損失太大,延遲帶來的負(fù)面效果是無法忽略的,而且需要很大的存儲(chǔ)器開銷,因此實(shí)用意義不大。

AEGIS是最早提出使用單片安全處理器來抵御物理攻擊的模型。在AEGIS中,數(shù)據(jù)機(jī)密性是采用OTP流加密來實(shí)現(xiàn)的,數(shù)據(jù)完整性采用了簡單的類似于Merkle Tree的Cached Hash Tree結(jié)構(gòu)來保證,因?yàn)槭褂昧嘶跇涞募夹g(shù),所以AEGIS的片內(nèi)存儲(chǔ)器開銷大大減小,但它的性能損失依舊很大,尤其是緩存空間缺失時(shí)。

并行加密和完整性檢查引擎(Parallelized Encryption and Integrity Checking Engine,PE-ICE)是由Reouven Elbaz等于2006年提出來的。PE-ICE是基于BL-AREA的概念而被提出來的[7]。PE-ICE利用了塊加密的擴(kuò)散屬性來確保機(jī)密性和完整性。雖然性能開銷比較小,但是由于需要在片內(nèi)為每個(gè)數(shù)據(jù)塊存儲(chǔ)相應(yīng)的標(biāo)簽信息,使得其片內(nèi)的存儲(chǔ)器開銷較大,所以并不適合嵌入式系統(tǒng)片上資源有限的應(yīng)用環(huán)境。

TEC-Tree,由Reouven Elbaz 等在2007年提出的一種類似于Merkle Tree的理論,它使用PE-ICE架構(gòu)而不是標(biāo)準(zhǔn)的散列算法,從而有效地減少獲取消息簽名所需要的延遲和重放攻擊的脆弱性。與PE-ICE相比,TEC-Tree需要較小的內(nèi)存空間。然而,與大多數(shù)的基于樹結(jié)構(gòu)的技術(shù)一樣,檢查數(shù)據(jù)的完整性產(chǎn)生的延遲取決于節(jié)點(diǎn)的數(shù)量,需要計(jì)算之前到達(dá)樹的根。它需要進(jìn)行多輪的節(jié)點(diǎn)計(jì)算,并且需要多次與片外存儲(chǔ)器進(jìn)行訪問,這些過程需要消耗大量的延時(shí)。與Merkle Tree相比,盡管計(jì)算每個(gè)節(jié)點(diǎn)的延時(shí)大大減小,但總的延時(shí)依然會(huì)很大,總的性能上的開銷依然會(huì)很大。TEC-Tree若要完全實(shí)現(xiàn)并行計(jì)算,那么必須實(shí)例化多個(gè)AES內(nèi)核,且AES內(nèi)核的個(gè)數(shù)將于整個(gè)樹的層數(shù)相等,這必將對面積消耗比較大。

Romain Vaslin是2008年提出的一個(gè)為解決嵌入式系統(tǒng)片外存儲(chǔ)器安全的完整解決方案[8]。安全的核心是基于一次性墊(OTP)加密電路和CRC-based完整性檢查模塊。這種策略較之前提出的方法的確減少了內(nèi)存延遲。但完整性驗(yàn)證是通過CRC,其在安全性上不如標(biāo)準(zhǔn)的散列算法。此外,CRC在片上內(nèi)存空間開銷依然很高。

FEDTIC[9]是2010年提出的用于加密/解密、標(biāo)簽、完整性驗(yàn)證和機(jī)密性的外部存儲(chǔ)器訪問方法。但是所有的加密數(shù)據(jù)和標(biāo)簽都存儲(chǔ)在外部存儲(chǔ)器和沒有時(shí)間戳信息的芯片內(nèi)存上。所以這種方法的安全性值得懷疑,比如這種方法能否防御重放攻擊等。

本文提出了一種適用于嵌入式系統(tǒng)的基于AES-GCM的存儲(chǔ)器保護(hù)機(jī)制。該機(jī)制可以對片外的數(shù)據(jù)機(jī)密性和完整性提供保護(hù)。該機(jī)制將片內(nèi)存儲(chǔ)器的開銷、性能的損失以及安全性進(jìn)行了很好的折中。與之前的研究方法相比,本文提出的機(jī)制在保證相對較高安全性的前提下,片內(nèi)存儲(chǔ)器開銷與性能開銷都比較小。

4 基于AES-GCM的數(shù)據(jù)完整性校驗(yàn)

4.1 AES-GCM介紹

AES-GCM是一種由NIST(國家標(biāo)準(zhǔn)與技術(shù)研究院)在2007年提出的加密認(rèn)證算法。不像其他的密碼模式操作,如CBC(密碼塊鏈接)、ECB(電子代碼書)和CTR(反模式)。AES-GCM可以同時(shí)確保機(jī)密性和真實(shí)性,可以實(shí)現(xiàn)管線式和并行。AES-GCM的另一個(gè)優(yōu)點(diǎn)是輸入的數(shù)據(jù)長度幾乎沒有限制,而輸出的tag的長度始終不變,可以為64到128之間任何值。

對AES-GCM加密機(jī)制而言,AES-GCM有四個(gè)輸入,分別是K, IV, P, A;有兩個(gè)輸出,分別是tag和C。其中,IV是內(nèi)部用來產(chǎn)生流密鑰的,密文C是流密鑰與明文異或的結(jié)果。如果使用同一個(gè)密鑰流幾次,信息泄漏可能發(fā)生,因?yàn)楣粽呖梢源_定數(shù)據(jù)加密相同密鑰流有相同的值。在本文的設(shè)計(jì)中,AES-GCM的IV是由數(shù)據(jù)內(nèi)存地址和一個(gè)時(shí)間戳組成。使用數(shù)據(jù)的初始內(nèi)存地址的密鑰流(圖3)保護(hù)數(shù)據(jù)值應(yīng)對搬遷的攻擊。為了防止重放攻擊,我們設(shè)計(jì)了一個(gè)簡單的32位計(jì)數(shù)器或線性反饋移位寄存器(LFSR)計(jì)數(shù)器來生成時(shí)間戳。

由于第一層AES-GCM的IV中包含時(shí)間戳信息,所以,即使兩次明文輸入完全一樣的情況下,第一層AES-GCM產(chǎn)生的密文數(shù)據(jù)和tag1不會(huì)出現(xiàn)一樣的情況,即第二層AES-GCM的明文輸入不可能出現(xiàn)完全相同的情況。因此第二層AES-GCM輸出的標(biāo)簽2和標(biāo)簽1密文也不會(huì)出現(xiàn)一樣的情況。所以,針對第二層AES-GCM,其IV沒有采用時(shí)間戳信息,而是直接用其地址信息組成。

AES-GCM每次使用由單獨(dú)TS生成的密鑰流后, 32位TS寫入內(nèi)存的值隨之增加。它存儲(chǔ)在內(nèi)存的時(shí)間戳基于內(nèi)存地址產(chǎn)生。隨著TS值的更新,系統(tǒng)將計(jì)算不同的密鑰流并為每個(gè)新高速緩存內(nèi)存寫請求。在讀的時(shí)候,最初的TS值是用于比較。TS值獲取時(shí)間戳的內(nèi)存使用的是數(shù)據(jù)內(nèi)存地址。

檢索到的TS值會(huì)在讀取請求期間提供給AES。這個(gè)值由使用內(nèi)存數(shù)據(jù)地址的時(shí)間戳內(nèi)存獲得。AES的結(jié)果會(huì)給出相同的密鑰流,由寫請求和成文明文的加密數(shù)據(jù)進(jìn)行異或算法得到。

4.2 基于AES-GCM的數(shù)據(jù)完整性校驗(yàn)的框架

我們的設(shè)計(jì)是在嵌入式處理器和片外存儲(chǔ)器之間增加的安全防御模塊。圖1顯示了設(shè)計(jì)的頂層架構(gòu)??梢钥闯?我們的存儲(chǔ)器安全防御模塊包括一個(gè)二級緩存模塊和一個(gè)數(shù)據(jù)完整性校驗(yàn)核心模塊。數(shù)據(jù)完整性校驗(yàn)核心模塊包括三個(gè)主要子模塊:AES-GCM加解密引擎、一個(gè)緩存模塊tag1 cache和一個(gè)片內(nèi)存儲(chǔ)器模塊Partial tag2 memory。我們的方案的一個(gè)很大創(chuàng)新點(diǎn)是提出了雙層加解密機(jī)制,通過雙層AES-GCM加密機(jī)制,有效地減小了片內(nèi)和片外的存儲(chǔ)器開銷,尤其是片內(nèi)存儲(chǔ)器的開銷。第一層AES-GCM機(jī)制是用來加密來自L2 cache數(shù)據(jù)的,第二層AES-GCM機(jī)制是用來加密由第一層AES-GCM機(jī)制所產(chǎn)生的tag的,第二層AES-GCM機(jī)制所產(chǎn)生的tag一半存儲(chǔ)在片內(nèi),另一半存儲(chǔ)在片外。(為便于表述,我們將第一層AES-GCM加密機(jī)制(即對來自L2 cache的數(shù)據(jù)進(jìn)行加密)所產(chǎn)生的tag稱為tag1,將第二層AES-GCM加密機(jī)制(即對tag1進(jìn)行加密)所產(chǎn)生的tag稱為tag2,類似的,第一層AES-GCM解密產(chǎn)生的tag稱為tag1’,第二層AES-GCM解密產(chǎn)生的tag稱為tag2’)。為節(jié)省面積,兩層AES-GCM加解密機(jī)制共用一個(gè)AES-GCM引擎。

由于AES-GCM加密時(shí)的明文輸入以及解密時(shí)的密文輸入必須是128bit的整數(shù)倍,即一次性的數(shù)據(jù)訪問寬度比較大,但是有些嵌入式系統(tǒng)的處理器不支持較寬的片外數(shù)據(jù)訪問,所以,我們在處理器和數(shù)據(jù)完整性校驗(yàn)?zāi)K之間增加了一個(gè)二級緩存模塊,簡稱為L2 cache,該二級緩存模塊面向數(shù)據(jù)完整性校驗(yàn)?zāi)K一端的緩存線的寬度正好等于AES-GCM的數(shù)據(jù)輸入輸出的寬度。增加二級緩存模塊的另一個(gè)原因是減小因增加了數(shù)據(jù)完整性校驗(yàn)?zāi)K而對處理器訪問片外存儲(chǔ)器速度的影響。

圖1 基于AES-GCM的數(shù)據(jù)完整性校驗(yàn)架構(gòu)

AES-GCM輸出的tag的寬度是在64bit和128bit之間的,本設(shè)計(jì)為了減小片內(nèi)存儲(chǔ)器的開銷,對AES-GCM輸出的tag采取了64bit的寬度。另外,為了便于硬件實(shí)現(xiàn),減少片外地址映射,將片外存儲(chǔ)器分為data區(qū)和tag區(qū)。AES-GCM加密的密文數(shù)據(jù)則存儲(chǔ)在data區(qū),加密的密文tag1以及部分tag2則存儲(chǔ)在tag區(qū)。下面,將分別對處理器的讀寫片外存儲(chǔ)器的過程進(jìn)行詳細(xì)描述。

實(shí)際上,AES-GCM內(nèi)部處理輸入的數(shù)據(jù)一般都是以128bit作為data block的大小的。因此,為了計(jì)算方便,將AES-GCM外部輸入數(shù)據(jù)寬度定為128bit的整數(shù)倍,即128nbits,因此L2 cache的緩存線也為128nbits。

寫:L2 cache發(fā)出寫請求,從時(shí)間戳內(nèi)存中讀取出相應(yīng)的TS值, 并加n,然后和地址信息組合成IV輸入給AES-GCM模塊。

并將128nbits數(shù)據(jù)輸出給AES-GCM模塊,經(jīng)AES-GCM加密后,生成的128nbits的密文直接存入片外存儲(chǔ)器;生成的64bits的tag1則寫入Tag1 cache模塊,然后把更新后的TS值寫入到時(shí)間戳內(nèi)存中。在寫tag1 cache的過程中,會(huì)出現(xiàn)三種情況: 1) 直接寫命中。 2) 當(dāng)Tag1 cache需要回寫時(shí),暫停L2 cache對AES-GCM的輸入,將Tag1 cache中的數(shù)據(jù)讀取出128nbits進(jìn)入AES-GCM模塊進(jìn)行加密處理,將生成的128nbits密文存入片外的tag區(qū);生成的tag稱為tag2,截取tag2的前32bits(稱為tag2-1)存入Partial tag2 memory模塊中,tag2的后32bits(稱為tag2-2)則存入片外的tag區(qū)。3)若tag1 cache缺失,同樣暫停L2 cache對AES-GCM的輸入,然后從片外的Tag zone區(qū)讀取對應(yīng)的128nbits數(shù)據(jù)到AES-GCM模塊中,進(jìn)行解密,將解密后生成的128nbits明文寫入tag1 cache中,此時(shí)tag1 cache重新寫命中,并完成寫tag1操作。Tag1寫操作完成后,則恢復(fù)L2 cache對AES-GCM模塊的輸入,L2 cache寫片外存儲(chǔ)器的操作完成。

具體過程見算法1。

算法1

1)L2 cache發(fā)出寫信號,AES-GCM加密128n bits數(shù)據(jù),產(chǎn)生128n bits密文數(shù)據(jù)和64 bits tag1。

2)寫128n bits密文數(shù)據(jù)到片外的數(shù)據(jù)區(qū)。

3)寫64bits tag1到tag1 cache中

IF(寫命中)

完成64bits tag1寫過程;

Else if(寫缺失)

a.從片外tag區(qū)讀取128n bits tag1密文,作為AES-GCM的輸入。

b.AES-GCM解密,將恢復(fù)出的tag1明文寫入到tag1 cache中。

c.將恢復(fù)出的tag1明文寫入到tag1 cache中。

Else if(回寫)

a.從tag1 cache中讀取128n bits的tag1,作為AES-GCM的輸入。

b.AES-GCM加密,生成128n bits的tag1密文和64 bits的tag2。

c.以上步驟產(chǎn)生的128n bits的tag1密文寫入到片外的tag區(qū),將64 bits的tag2的前32 bits寫入片內(nèi)的Partial tag2 memory中,將tag2的后32 bits寫入片外的tag區(qū)。

讀:L2 cache發(fā)出讀信號,數(shù)據(jù)完整性校驗(yàn)?zāi)K從片外data區(qū)讀取相應(yīng)的128nbits的密文數(shù)據(jù),作為AES-GCM的輸入,并從時(shí)間戳內(nèi)存中讀取TS值,并和地址信息組合成IV后輸入給AES-GCM模塊。

經(jīng)AES-GCM解密后,恢復(fù)出128nbits的明文數(shù)據(jù)和64 bits的tag1,為了區(qū)分,這里記為tag1’。然后從tag1 cache中讀取對應(yīng)的tag1,比較tag1和tag1’,若二者相等,則數(shù)據(jù)完整性驗(yàn)證通過,將第一步解密生成的明文數(shù)據(jù)送給L2 cache,否則數(shù)據(jù)完整性驗(yàn)證不通過,給出報(bào)警信號。同樣,在讀tag1 cache過程中,會(huì)出現(xiàn)三種情況:

1) tag1 cache讀命中。

2) 若tag1 cache讀缺失,則從片外的tag區(qū)讀取相應(yīng)的128nbits的tag1的密文,作為AES-GCM的輸入,進(jìn)行解密并得到128nbits的tag1明文和64bits的tag2,同樣為了區(qū)分,這里記為tag2’,將解密生成的tag1明文寫入tag1 cache中,最后從片外的tag區(qū)讀取相應(yīng)的32 bits的tag2-2,并從片內(nèi)的Partial tag2 memory中讀取相應(yīng)的32 bits的tag2-1,將tag2-1和tag2-2合并成tag2,比較tag2和tag2’, 若二者相等,將第二步解密生成的128nbits的tag1明文送給tag1 cache,若不相等,tag1完整性驗(yàn)證不通過,給出報(bào)警信號。

3) 若tag1 cache回寫,從tag1 cache中讀取128nbits的tag1,作為AES-GCM的輸入。AES-GCM加密,生成128nbits的tag1密文和64 bits的tag2。以上步驟產(chǎn)生的128n bits的tag1密文寫入到片外的tag區(qū),將64 bits的tag2的前32 bits寫入片內(nèi)的Partial tag2 memory中,將tag2的后32 bits寫入片外的tag區(qū)。至此回寫結(jié)束。

需要說明的是,tag1 cache是一個(gè)標(biāo)準(zhǔn)的cache,也可能會(huì)出現(xiàn)先缺失,后又需要回寫的情況,此時(shí)則將上述三種情況的后兩種情況依次執(zhí)行??傊?在對tag1 cache操作完成后,再進(jìn)行tag1和tag1’的比較。

4.3 安全性分析

本文提出的存儲(chǔ)器安全保護(hù)機(jī)制是基于AES-GCM加解密機(jī)制的,在片外存儲(chǔ)的是密文,并且兩層AES-GCM加密的各自密鑰都存儲(chǔ)在片內(nèi)。因此數(shù)據(jù)機(jī)密性是可以保證的。

關(guān)于數(shù)據(jù)完整性,針對常見的三種攻擊(Spoofing attacks, Splicing or relocation attacks, Replay attacks),本設(shè)計(jì)都可以有效地防御。若攻擊者只對片外存儲(chǔ)器的數(shù)據(jù)區(qū)進(jìn)行攻擊,則第一層AES-GCM解密時(shí)對比相應(yīng)的tag1即可檢測出這三種攻擊。

需要說明的是第一層AES-GCM每加密128n bits數(shù)據(jù)產(chǎn)生一個(gè)64 bits的tag1,第二層AES-GCM每加密2n(128n/64=2n)個(gè)tag1產(chǎn)生一個(gè)64 bits的tag2和128nbits的tag1密文。因此,在片外的tag區(qū)128n bits的tag1密文包含了數(shù)據(jù)區(qū)128n*2n bits數(shù)據(jù)的完整性信息。若攻擊者同時(shí)對片外的存儲(chǔ)器的數(shù)據(jù)區(qū)和tag區(qū)進(jìn)行攻擊,對于Splicing攻擊,即同時(shí)調(diào)換片外數(shù)據(jù)區(qū)的某些數(shù)據(jù)塊以及這些數(shù)據(jù)塊對應(yīng)的tag區(qū)的數(shù)據(jù)塊,調(diào)換的過程如圖2所示, 則處理器在讀地址addr1的數(shù)據(jù)時(shí),實(shí)際讀到的是地址為addr2的內(nèi)容,若Tag1 cache中沒有對應(yīng)的tag,則需從片外讀取地址為addr3的512bits數(shù)據(jù)并進(jìn)行解密,此時(shí)又需要從片外讀取地址為addr5的32bits數(shù)據(jù),但實(shí)際上從地址addr3和地址addr5讀取的都是數(shù)據(jù)段B對應(yīng)的Tag1B和Tag2’B。但是,數(shù)據(jù)段A和數(shù)據(jù)段B它們各自的tag2的前32bits是存儲(chǔ)在片內(nèi)的,是不可能被調(diào)換的。因此,從片外的地址addr5讀取的32bits數(shù)據(jù)(實(shí)際上讀取的是Tag2-2B)和片內(nèi)的數(shù)據(jù)段A的tag2的前32bits合并成新的tag2在與第二層AES-GCM解密時(shí)生成的tag對比時(shí)不相等的概率是極大的,從而檢測出Splicing attacks。

圖2 片外存儲(chǔ)器的data區(qū)和tag區(qū)同時(shí)受到Splicing攻擊

同理,對于Replay attacks(重放攻擊),如圖3所示,在t2時(shí)刻,當(dāng)攻擊者同時(shí)用t1時(shí)刻的A1、Tag1A1和Tag2-2A1替代t2時(shí)刻對應(yīng)的數(shù)據(jù)時(shí),由于片內(nèi)存儲(chǔ)的關(guān)于數(shù)據(jù)塊A的tag2的前32bits已經(jīng)更新,因此,在與Tag2-2A1合并成新的tag2后,與第二層AES-GCM解密時(shí)生成的tag2對比時(shí)不相等的概率時(shí)非常大的,從而檢測出Replay attacks。

圖3 片外存儲(chǔ)器的data區(qū)和tag區(qū)同時(shí)受到Replay攻擊

本設(shè)計(jì)的安全性,很大程度上取決于AES-GCM的安全性能,本設(shè)計(jì)采用的是64位tag,其中tag的前32位存儲(chǔ)在片內(nèi),后32位存儲(chǔ)在片外。在密鑰未知的情況下,當(dāng)AES-GCM密文和tag的后32位同時(shí)改變或其中的一個(gè)改變時(shí),AES-GCM解密時(shí)能夠檢測得到的概率即為本設(shè)計(jì)能夠成功檢測出完整性攻擊的概率。對于Replace attacks,當(dāng)AES-GCM進(jìn)行加密時(shí),兩次不同的128n bits的輸入所產(chǎn)生的64bits的tag的前32bits相同的概率即為本設(shè)計(jì)漏報(bào)Replace attacks的概率,由AES-GCM的特性可知,該概率是極小的。攻擊者可以嘗試使用隨機(jī)數(shù)據(jù)打造一個(gè)t-bit MAC,但攻擊成功的概率是2-t。對于GCM,攻擊者可以成功獲取標(biāo)簽的概率是(B+1)2-t,B是128位的數(shù)量以明文的形式和額外的身份驗(yàn)證數(shù)據(jù)塊[10]。額外的身份驗(yàn)證數(shù)據(jù)是AES-GCM的輸入之一,它可以被看作是一個(gè)常數(shù),作為長度一樣的明文來設(shè)計(jì)。在我們的設(shè)計(jì)中,因?yàn)橹挥衪ag2的前32 bits存儲(chǔ)在片內(nèi),相當(dāng)于有效tag位只有32位,因此,成功攻擊的概率為(2n+1)/2-32。

5 運(yùn)用實(shí)例

在第3部分提到,將AES-GCM外部輸入數(shù)據(jù)寬度定為128bit的整數(shù)倍,即128nbits。這里取n等于4,即AES-GCM外部輸入的數(shù)據(jù)寬度為512 bits,L2 cache的cache line也為512 bits。那么第一層AES-GCM每加密512 bits數(shù)據(jù)產(chǎn)生一個(gè)64 bits的tag1,第二層AES-GCM每加密8(512/64=8)個(gè)tag1產(chǎn)生一個(gè)64 bits的tag2和512 bits的tag1密文。其中tag2的前32 bits存儲(chǔ)在片內(nèi)的Partial tag2 memory中。因此,在Partial tag2 memory中,每32 bits的一半的tag2包含了512*8 bits數(shù)據(jù)的完整性信息。因此片內(nèi)的存儲(chǔ)器開銷為32/(512*8),即0.78125%。每8個(gè)tag1進(jìn)行第二層加密時(shí),產(chǎn)生的512bits的密文需存儲(chǔ)在片外,產(chǎn)生的64bits的tag2的后32bits也需存儲(chǔ)在片外。因此片外的存儲(chǔ)器開銷為(512+32)/(512*8),即13.28125%。最后總的存儲(chǔ)器開銷為14.07%。安全性方面,成功進(jìn)行一次spoofing attacks(欺騙攻擊)的概率是9/2-32約等于1/2-29。

同時(shí),本文的方法不是基于樹結(jié)構(gòu),加解密的核心模塊是AES-GCM,而AES-GCM的主要計(jì)算延時(shí)在于內(nèi)部的GHASH的計(jì)算,而內(nèi)部一系列的AES計(jì)算可以以流水線的方式進(jìn)行,并和GHASH并行完成。本文中提到的一種實(shí)現(xiàn)GHASH for GCM的算法,完成8個(gè)block的計(jì)算只需要13個(gè)周期。因此完成4 blocks的AES-GCM的計(jì)算可以在15(±3)個(gè)周期內(nèi)完成。因此,在不考慮存儲(chǔ)器訪問延時(shí)的情況下,在tag1 cache命中的情況,我們的存儲(chǔ)器保護(hù)機(jī)制的性能開銷大概在20個(gè)周期以內(nèi)。若tag1 cache缺失,則其性能開銷將會(huì)翻一到兩倍。

下面將把已經(jīng)存在的五種安全模型(XOM、AEGIS、PEICE、AES-TAC和FEDTIC)以及本文提出的安全模型放到一起進(jìn)行比較分析。在評估一個(gè)模型的數(shù)據(jù)機(jī)密性和完整性保護(hù)能力時(shí),我們主要從安全性、性能的開銷、存儲(chǔ)器開銷(片內(nèi))三方面做重點(diǎn)考慮。表1是對相關(guān)文獻(xiàn)資料統(tǒng)計(jì)的結(jié)果。綜合比較分析,本文提出的安全系統(tǒng)模型具有以下特點(diǎn):

表1 本文模型與已有模型的對比(“/”表示文獻(xiàn)中沒有量化)

1)存儲(chǔ)開銷小。尤其是片內(nèi)的存儲(chǔ)器開銷,僅為0.78125%,與國內(nèi)外相關(guān)的研究結(jié)果相比,如PE-ICE,AEGIS,AES-TAC等,都要小很多。片外的存儲(chǔ)器開銷為13.28125%,總的存儲(chǔ)器開銷為14.0625%。

2)對系統(tǒng)速度影響小。本設(shè)計(jì)中增加了二級緩存L2 Cache模塊,有效減緩了AES-GCM加解密造成的延時(shí)的不利影響。對于第二層AES-GCM,由于本設(shè)計(jì)增加了Tag1 Cache模塊,可以有效地減小第二層AES-GCM執(zhí)行的概率,從而減小了性能損失。另外,AES-GCM算法的延時(shí)比標(biāo)準(zhǔn)的哈希算法要小很多。在我們的設(shè)計(jì)中,以上所有的措施有效地降低了性能的損失。

3)安全性高,基于AES加密,兩層加解密的密鑰都存儲(chǔ)在片內(nèi),片外存儲(chǔ)的是密文,安全性可以得到保證。對我們的方法而言,成功攻擊的概率是1/2-29(n=4), 這個(gè)安全級別滿足大多數(shù)的應(yīng)用環(huán)境的要求[11]。

6 需要說明的幾點(diǎn)

1)我們知道,對于TEC-Tree,若想進(jìn)一步提高其性能,可以例化多個(gè)AES核以實(shí)現(xiàn)其并行性。同樣的,本設(shè)計(jì)可以例化兩個(gè)AES-GCM核,使得兩層加解密操作分別使用各自的AES-GCM ,這樣可以在一定程度上提高我們的設(shè)計(jì)的性能,減小性能損失。但這樣必將不可避免地增加面積開銷。

2)關(guān)于AES-GCM輸入的數(shù)據(jù)寬度128nbits,我們的運(yùn)用實(shí)例中取n等于4,即AES-GCM的輸入寬度為512 bits。實(shí)際上,AES-GCM的輸入寬度也可以為其他值,這樣會(huì)導(dǎo)致片外存儲(chǔ)器的開銷也不一樣。比如可以為256 bits,此時(shí)第二層AES-GCM的輸入將只有4個(gè)tag1組成(256/64=4),若仍然只取第二層AES-GCM加密產(chǎn)生的tag2的前32 bits存儲(chǔ)在片內(nèi),那么片內(nèi)的存儲(chǔ)器開銷將是32/(256*4)=3.125%,明顯比AES-GCM的輸入寬度為512 bits時(shí)大多了。但這樣的好處是,AES-GCM加解密的速度將有所加快,即整體的性能將有所提高,性能開銷將有所減小。

3)關(guān)于本設(shè)計(jì)的安全性。本設(shè)計(jì)的安全性取決于對第二層AES-GCM加密產(chǎn)生的tag2存儲(chǔ)的位數(shù)。Tag2有64 bits,本文的運(yùn)用實(shí)例中是將tag2的前32bits存儲(chǔ)在片內(nèi),實(shí)際上,若想提高其安全性,可以將tag2的更多比特位存儲(chǔ)在片內(nèi),但這樣做的負(fù)面影響就是片內(nèi)存儲(chǔ)器的開銷增加了,反義亦然。

總之,在微處理器與片外存儲(chǔ)器之間增加安全防御機(jī)制以提高片外數(shù)據(jù)的安全性必將對整個(gè)系統(tǒng)的性能、片內(nèi)存儲(chǔ)器開銷帶來一定的負(fù)面影響。我們所提出的方案也是在系統(tǒng)的性能開銷、片內(nèi)存儲(chǔ)器開銷和安全性等因素之間尋求的一種折中方案。

7 結(jié)語

本文提出了一種基于AES-GCM的存儲(chǔ)器完整性保護(hù)機(jī)制。該機(jī)制的主要特點(diǎn)是采用了雙層加密機(jī)制,有效地減小了片內(nèi)存儲(chǔ)器的開銷。與其他存儲(chǔ)器完整性保護(hù)機(jī)制相比,我們的方法的片內(nèi)存儲(chǔ)器的開銷只有0.78%(n=4時(shí)),在嵌入式系統(tǒng)中具有很大的使用意義。在性能上,我們的設(shè)計(jì)的性能的開銷也是比較小的。

[1] O. Gelbart, E. Leontie, B. Narahari, R. Simha. A compiler hardware approach to software protection for embedded systems[J]. Computers and Electrical Engineering,2009:315-328.

[2] 郭春霞,裘雪紅.嵌入式系統(tǒng)安全的研究與設(shè)計(jì)[J].電子科技,2005(8):49-53. GUO Chunxia, QIU Xuehong. Research and design of embedded system security[J]. Electronic Science and technology,2005(8):49-53.

[3] G. Duc, R. Keryell: Cryptopage. An efficient secure architecture with memory encryption, integrity and information leakage protection[C]//22nd Annual Computer Security Applications Conference, ACSAC,2006:483-492.

[4] S.W.Smith ,S.H.Weingart: Building a High-Performance Programmable Secure Coprocessor[J]. Computer Networks,1999:831-860.

[5] 侯方勇.存儲(chǔ)系統(tǒng)數(shù)據(jù)機(jī)密性與完整性保護(hù)的關(guān)鍵技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2005. HOU Fangyong. Key technologies of data confidentiality and integrity protection for storage systems[D]. Changsha: National Defense Science and Technology University,2005.

[6] Romain Vaslin. Hardware Core for Off-chip Memory Security Management in Embedded Systems[J]. Lorient: PhD Thesis. University of South Brittany,2008.

[7] R. Elbaz, L. Torres, G. Sassatelli, P. Guillemin, M. Bardouillet, A. Martinez. Block-Level Added Redundancy Explicit Authentication for Parallelized Encryption and Integrity Checking of Processor-Memory Transactions[J]. Trans. on Comput. Sci. X, LNCS 6340,2010:231-260.

[8] Romain Vaslin, Guy Gogniat, Jean-Philippe Diguet, Eduardo Wanderley, Russell Tessier, Wayne Burleson. A security approach for off-chip memory in embedded microprocessor systems[J]. micpro,2008-08-008.

[9] Mei Hong, Hui Guo. FEDTIC: A Security Design for Embedded Systems with Insecure External Memory[J]. FGIT 2010, LNCS 6485,2010:365-375.

[10] David A. McGrew, John Viega. The Galois/Counter Mode of Operation (GCM)

[11] Tianshan Chen, Wenjie Huo, Zhenglin Liu, “The Design and Efficient FPGA Implementation of Ghash Core for GCM,” in: Conference on 2010 Computational Intelligence and Software Engineering (CiSE),2010:1-4.

A Data Integrity Verification Method Based on AES-GCM

LEI Zhiqun

(Wuhan Digital Engineering Institute, Wuhan 430205)

With the extensive application of embedded systems, security issues of embedded systems gradually attract people’s attention. In particular, security issues of off-chip memory are one of the most important security issues in embedded system and cannot be ignored. There are many existing related findings about off-chip memory security. A classical way to address the off-chip memory security issues is to add a security protection module between the microprocessor and the external memory. However, adding the extra security hardware brings overheads in system performance, memory cost and the SOC area. As a result, many methods are now in safety, performance cost, storage cost, SOC area overhead factors such as to find a compromise between the optimal solution.In this article, a novel architecture for off-chip memory encryption and integrity protection is proposed based on Advanced Encryption Standard - Galois/Counter Mode (AES-GCM). Our approach provides data confidentiality and integrity authentication at the same time and can safeguard against a series of well-known attacks, including replay attacks, spoofing attacks.

data integrity, data confidentiality, hardware architecture, AES-GCM

2016年5月3日,

2016年6月27日

雷志群,男,碩士研究生,助理工程師,研究方向:嵌入式系統(tǒng)測試及安全性。

TM76

10.3969/j.issn.1672-9722.2016.11.027

猜你喜歡
密文存儲(chǔ)器解密
一種支持動(dòng)態(tài)更新的可排名密文搜索方案
基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯(cuò)恢復(fù)
靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
炫詞解密
解密“一包三改”
基于網(wǎng)絡(luò)報(bào)文流量的協(xié)議密文分析方法
密鑰共享下跨用戶密文數(shù)據(jù)去重挖掘方法*
炫詞解密
炫詞解密
存儲(chǔ)器——安格爾(墨西哥)▲