雷志群
(武漢數字工程研究所 武漢 430205)
?
一種基于AES-GCM的數據完整性校驗方法*
雷志群
(武漢數字工程研究所 武漢 430205)
隨著嵌入式系統的廣泛應用,嵌入式系統的安全問題逐漸引起人們的重視。其中,片外存儲器的安全問題是整個嵌入式系統安全問題中不可忽視的一部分。目前已經存在很多關于片外存儲安全方面的研究,這些研究一般是片上微處理器和片外的存儲器之間增加安全防御模塊(硬件)。但是,在嵌入式系統中增加存儲器安全防御模塊(硬件)無疑會對整個系統的性能、存儲器開銷、SOC面積開銷等造成一定的負面影響。因此,現在很多方法都是在安全性,性能開銷、存儲器開銷、SOC面積開銷等因素之間尋找一個折中的最優方案。論文充分考慮這些因素的影響,提出了一種基于AES-GCM的數據完整性校驗方法。該方法對片外存儲器同時提供數據機密性和完整性保護,可以防御一系列典型的惡意攻擊,如欺騙攻擊、重放攻擊等。
數據完整性; 數據機密性; 硬件架構; AES-GCM
Class Number TM76
近年來,隨著電子信息技術的迅猛發展和進步,嵌入式系統在我們的生活中隨處可見,比如手機、平板電腦、ATM機(自動取款機)以及車載GPS等。這些嵌入式系統經常需要處理一些敏感信息,包括手機支付,ATM機處理的用戶銀行賬戶信息,平板電腦用戶上網時輸入的密碼信息等[1]。然而,現如今嵌入式系統正廣泛地受到各種軟件攻擊和硬件攻擊的威脅,這些攻擊嚴重威脅了嵌入式系統的數據機密性、數據完整性和系統可用性,威脅了用戶的隱私和財產安全,限制了嵌入式系統在一些數據敏感領域的應用[2]。所以,嵌入式系統的安全問題越來越受到人們的重視[3]。
典型的嵌入式系統硬件由兩大主要部分組成,一個片上系統(System on Chip,SOC)芯片和一個片外隨機訪問存儲器(Random Access Memory,RAM)。然而,連接片外RAM和SOC的總線(Bus)是嵌入式系統最薄弱的一個環節,很容易被攻擊者俘獲,進而使存儲器的數據遭到竊聽、篡改或者破壞,攻擊者以數據注入的方式實施硬件攻擊[4]。嵌入式系統軟件一般是由不支持運行時錯誤檢測的低級語言編寫,所以容易受到惡意代碼的軟件攻擊。這些攻擊都將直接或者間接的威脅到嵌入式系統的數據機密性、數據完整性和系統可用性,使敏感數據遭到泄露或者使系統運行混亂。因此,研究保證嵌入式系統片外存儲的數據機密性和數據完整性的方法,來保護嵌入式系統片外存儲器的安全,是一個重要的研究課題,而重放攻擊作為一種最難抵御的硬件攻擊類型,成為研究的重點[5]。
本文提出了一種基于AES-GCM的片外存儲器數據安全校驗方法,本方法可以同時對片外的數據機密性和完整性提供保護。本方法是一種雙層加解密機制,第一層對數據進行加解密,第二層對第一層產生的tag進行加解密。通過兩層加解密機制的配合,可以有效地減小片內存儲器的開銷,而且性能損失比較小。
針對嵌入式系統的攻擊主要分為兩大類:軟件攻擊和物理攻擊。由于嵌入式系統的使用環境導致嵌入式系統的計算能力和硬件資源都比較有限,因此,用軟件的方法防御外界的攻擊對嵌入式系統的性能損失比較大。
假設所要保護的嵌入式設備是處在一個易受外界攻擊的環境中的,假設SOC可以抵御所有的物理攻擊并且是可信的,即片內的寄存器和存儲器對外界的攻擊者而言是不可訪問和攻擊的。邊頻攻擊和軟件攻擊不在本文的考慮范圍之內。
對于嵌入式系統,片外的存儲器(external memory)以及片外的存儲器與SOC連接的總線是最容易受物理攻擊的薄弱環節,比如總線監聽(bus probing)、存儲器篡改(memory tampering)等。AES(高級加密標準)、3DES(三重數據加密算法)這樣的算法可以保證數據的機密性[6],但是單一地對數據加密不能保證數據的完整性。這些加密過的數據在外存儲器中仍然可能遭到攻擊,即數據的完整性可能遭到破壞。常見的攻擊方式有三種。
欺騙攻擊(Spoofing attacks):攻擊者使用一個任意偽造的存儲塊替換已有的存儲塊。
拼接攻擊(Splicing or relocation attacks):也叫改變位置攻擊,攻擊者用位于地址B的存儲塊替換位于地址A的存儲塊(A≠B),這種攻擊可以看作是存儲塊位置的空間置換。
重放攻擊(Replay attacks):位于給定地址的存儲塊內容被記錄下來,并且在一個稍后的時間點被插入到同樣的地址上。通過這樣做,當前存儲塊的值被一個舊的值替換了。
XOM是早期比較經典的片外存儲器保護方法之一。XOM主要是通過一個比較復雜的密鑰管理系統來保護存儲器安全的,它主要的優點是安全性極高(成功攻擊的概率為1/2-160),但它的主要問題是性能損失太大,延遲帶來的負面效果是無法忽略的,而且需要很大的存儲器開銷,因此實用意義不大。
AEGIS是最早提出使用單片安全處理器來抵御物理攻擊的模型。在AEGIS中,數據機密性是采用OTP流加密來實現的,數據完整性采用了簡單的類似于Merkle Tree的Cached Hash Tree結構來保證,因為使用了基于樹的技術,所以AEGIS的片內存儲器開銷大大減小,但它的性能損失依舊很大,尤其是緩存空間缺失時。
并行加密和完整性檢查引擎(Parallelized Encryption and Integrity Checking Engine,PE-ICE)是由Reouven Elbaz等于2006年提出來的。PE-ICE是基于BL-AREA的概念而被提出來的[7]。PE-ICE利用了塊加密的擴散屬性來確保機密性和完整性。雖然性能開銷比較小,但是由于需要在片內為每個數據塊存儲相應的標簽信息,使得其片內的存儲器開銷較大,所以并不適合嵌入式系統片上資源有限的應用環境。
TEC-Tree,由Reouven Elbaz 等在2007年提出的一種類似于Merkle Tree的理論,它使用PE-ICE架構而不是標準的散列算法,從而有效地減少獲取消息簽名所需要的延遲和重放攻擊的脆弱性。與PE-ICE相比,TEC-Tree需要較小的內存空間。然而,與大多數的基于樹結構的技術一樣,檢查數據的完整性產生的延遲取決于節點的數量,需要計算之前到達樹的根。它需要進行多輪的節點計算,并且需要多次與片外存儲器進行訪問,這些過程需要消耗大量的延時。與Merkle Tree相比,盡管計算每個節點的延時大大減小,但總的延時依然會很大,總的性能上的開銷依然會很大。TEC-Tree若要完全實現并行計算,那么必須實例化多個AES內核,且AES內核的個數將于整個樹的層數相等,這必將對面積消耗比較大。
Romain Vaslin是2008年提出的一個為解決嵌入式系統片外存儲器安全的完整解決方案[8]。安全的核心是基于一次性墊(OTP)加密電路和CRC-based完整性檢查模塊。這種策略較之前提出的方法的確減少了內存延遲。但完整性驗證是通過CRC,其在安全性上不如標準的散列算法。此外,CRC在片上內存空間開銷依然很高。
FEDTIC[9]是2010年提出的用于加密/解密、標簽、完整性驗證和機密性的外部存儲器訪問方法。但是所有的加密數據和標簽都存儲在外部存儲器和沒有時間戳信息的芯片內存上。所以這種方法的安全性值得懷疑,比如這種方法能否防御重放攻擊等。
本文提出了一種適用于嵌入式系統的基于AES-GCM的存儲器保護機制。該機制可以對片外的數據機密性和完整性提供保護。該機制將片內存儲器的開銷、性能的損失以及安全性進行了很好的折中。與之前的研究方法相比,本文提出的機制在保證相對較高安全性的前提下,片內存儲器開銷與性能開銷都比較小。
4.1 AES-GCM介紹
AES-GCM是一種由NIST(國家標準與技術研究院)在2007年提出的加密認證算法。不像其他的密碼模式操作,如CBC(密碼塊鏈接)、ECB(電子代碼書)和CTR(反模式)。AES-GCM可以同時確保機密性和真實性,可以實現管線式和并行。AES-GCM的另一個優點是輸入的數據長度幾乎沒有限制,而輸出的tag的長度始終不變,可以為64到128之間任何值。
對AES-GCM加密機制而言,AES-GCM有四個輸入,分別是K, IV, P, A;有兩個輸出,分別是tag和C。其中,IV是內部用來產生流密鑰的,密文C是流密鑰與明文異或的結果。如果使用同一個密鑰流幾次,信息泄漏可能發生,因為攻擊者可以確定數據加密相同密鑰流有相同的值。在本文的設計中,AES-GCM的IV是由數據內存地址和一個時間戳組成。使用數據的初始內存地址的密鑰流(圖3)保護數據值應對搬遷的攻擊。為了防止重放攻擊,我們設計了一個簡單的32位計數器或線性反饋移位寄存器(LFSR)計數器來生成時間戳。
由于第一層AES-GCM的IV中包含時間戳信息,所以,即使兩次明文輸入完全一樣的情況下,第一層AES-GCM產生的密文數據和tag1不會出現一樣的情況,即第二層AES-GCM的明文輸入不可能出現完全相同的情況。因此第二層AES-GCM輸出的標簽2和標簽1密文也不會出現一樣的情況。所以,針對第二層AES-GCM,其IV沒有采用時間戳信息,而是直接用其地址信息組成。
AES-GCM每次使用由單獨TS生成的密鑰流后, 32位TS寫入內存的值隨之增加。它存儲在內存的時間戳基于內存地址產生。隨著TS值的更新,系統將計算不同的密鑰流并為每個新高速緩存內存寫請求。在讀的時候,最初的TS值是用于比較。TS值獲取時間戳的內存使用的是數據內存地址。
檢索到的TS值會在讀取請求期間提供給AES。這個值由使用內存數據地址的時間戳內存獲得。AES的結果會給出相同的密鑰流,由寫請求和成文明文的加密數據進行異或算法得到。
4.2 基于AES-GCM的數據完整性校驗的框架
我們的設計是在嵌入式處理器和片外存儲器之間增加的安全防御模塊。圖1顯示了設計的頂層架構??梢钥闯?我們的存儲器安全防御模塊包括一個二級緩存模塊和一個數據完整性校驗核心模塊。數據完整性校驗核心模塊包括三個主要子模塊:AES-GCM加解密引擎、一個緩存模塊tag1 cache和一個片內存儲器模塊Partial tag2 memory。我們的方案的一個很大創新點是提出了雙層加解密機制,通過雙層AES-GCM加密機制,有效地減小了片內和片外的存儲器開銷,尤其是片內存儲器的開銷。第一層AES-GCM機制是用來加密來自L2 cache數據的,第二層AES-GCM機制是用來加密由第一層AES-GCM機制所產生的tag的,第二層AES-GCM機制所產生的tag一半存儲在片內,另一半存儲在片外。(為便于表述,我們將第一層AES-GCM加密機制(即對來自L2 cache的數據進行加密)所產生的tag稱為tag1,將第二層AES-GCM加密機制(即對tag1進行加密)所產生的tag稱為tag2,類似的,第一層AES-GCM解密產生的tag稱為tag1’,第二層AES-GCM解密產生的tag稱為tag2’)。為節省面積,兩層AES-GCM加解密機制共用一個AES-GCM引擎。
由于AES-GCM加密時的明文輸入以及解密時的密文輸入必須是128bit的整數倍,即一次性的數據訪問寬度比較大,但是有些嵌入式系統的處理器不支持較寬的片外數據訪問,所以,我們在處理器和數據完整性校驗模塊之間增加了一個二級緩存模塊,簡稱為L2 cache,該二級緩存模塊面向數據完整性校驗模塊一端的緩存線的寬度正好等于AES-GCM的數據輸入輸出的寬度。增加二級緩存模塊的另一個原因是減小因增加了數據完整性校驗模塊而對處理器訪問片外存儲器速度的影響。

圖1 基于AES-GCM的數據完整性校驗架構
AES-GCM輸出的tag的寬度是在64bit和128bit之間的,本設計為了減小片內存儲器的開銷,對AES-GCM輸出的tag采取了64bit的寬度。另外,為了便于硬件實現,減少片外地址映射,將片外存儲器分為data區和tag區。AES-GCM加密的密文數據則存儲在data區,加密的密文tag1以及部分tag2則存儲在tag區。下面,將分別對處理器的讀寫片外存儲器的過程進行詳細描述。
實際上,AES-GCM內部處理輸入的數據一般都是以128bit作為data block的大小的。因此,為了計算方便,將AES-GCM外部輸入數據寬度定為128bit的整數倍,即128nbits,因此L2 cache的緩存線也為128nbits。
寫:L2 cache發出寫請求,從時間戳內存中讀取出相應的TS值, 并加n,然后和地址信息組合成IV輸入給AES-GCM模塊。
并將128nbits數據輸出給AES-GCM模塊,經AES-GCM加密后,生成的128nbits的密文直接存入片外存儲器;生成的64bits的tag1則寫入Tag1 cache模塊,然后把更新后的TS值寫入到時間戳內存中。在寫tag1 cache的過程中,會出現三種情況: 1) 直接寫命中。 2) 當Tag1 cache需要回寫時,暫停L2 cache對AES-GCM的輸入,將Tag1 cache中的數據讀取出128nbits進入AES-GCM模塊進行加密處理,將生成的128nbits密文存入片外的tag區;生成的tag稱為tag2,截取tag2的前32bits(稱為tag2-1)存入Partial tag2 memory模塊中,tag2的后32bits(稱為tag2-2)則存入片外的tag區。3)若tag1 cache缺失,同樣暫停L2 cache對AES-GCM的輸入,然后從片外的Tag zone區讀取對應的128nbits數據到AES-GCM模塊中,進行解密,將解密后生成的128nbits明文寫入tag1 cache中,此時tag1 cache重新寫命中,并完成寫tag1操作。Tag1寫操作完成后,則恢復L2 cache對AES-GCM模塊的輸入,L2 cache寫片外存儲器的操作完成。
具體過程見算法1。
算法1
1)L2 cache發出寫信號,AES-GCM加密128n bits數據,產生128n bits密文數據和64 bits tag1。
2)寫128n bits密文數據到片外的數據區。
3)寫64bits tag1到tag1 cache中
IF(寫命中)
完成64bits tag1寫過程;
Else if(寫缺失)
a.從片外tag區讀取128n bits tag1密文,作為AES-GCM的輸入。
b.AES-GCM解密,將恢復出的tag1明文寫入到tag1 cache中。
c.將恢復出的tag1明文寫入到tag1 cache中。
Else if(回寫)
a.從tag1 cache中讀取128n bits的tag1,作為AES-GCM的輸入。
b.AES-GCM加密,生成128n bits的tag1密文和64 bits的tag2。
c.以上步驟產生的128n bits的tag1密文寫入到片外的tag區,將64 bits的tag2的前32 bits寫入片內的Partial tag2 memory中,將tag2的后32 bits寫入片外的tag區。
讀:L2 cache發出讀信號,數據完整性校驗模塊從片外data區讀取相應的128nbits的密文數據,作為AES-GCM的輸入,并從時間戳內存中讀取TS值,并和地址信息組合成IV后輸入給AES-GCM模塊。
經AES-GCM解密后,恢復出128nbits的明文數據和64 bits的tag1,為了區分,這里記為tag1’。然后從tag1 cache中讀取對應的tag1,比較tag1和tag1’,若二者相等,則數據完整性驗證通過,將第一步解密生成的明文數據送給L2 cache,否則數據完整性驗證不通過,給出報警信號。同樣,在讀tag1 cache過程中,會出現三種情況:
1) tag1 cache讀命中。
2) 若tag1 cache讀缺失,則從片外的tag區讀取相應的128nbits的tag1的密文,作為AES-GCM的輸入,進行解密并得到128nbits的tag1明文和64bits的tag2,同樣為了區分,這里記為tag2’,將解密生成的tag1明文寫入tag1 cache中,最后從片外的tag區讀取相應的32 bits的tag2-2,并從片內的Partial tag2 memory中讀取相應的32 bits的tag2-1,將tag2-1和tag2-2合并成tag2,比較tag2和tag2’, 若二者相等,將第二步解密生成的128nbits的tag1明文送給tag1 cache,若不相等,tag1完整性驗證不通過,給出報警信號。
3) 若tag1 cache回寫,從tag1 cache中讀取128nbits的tag1,作為AES-GCM的輸入。AES-GCM加密,生成128nbits的tag1密文和64 bits的tag2。以上步驟產生的128n bits的tag1密文寫入到片外的tag區,將64 bits的tag2的前32 bits寫入片內的Partial tag2 memory中,將tag2的后32 bits寫入片外的tag區。至此回寫結束。
需要說明的是,tag1 cache是一個標準的cache,也可能會出現先缺失,后又需要回寫的情況,此時則將上述三種情況的后兩種情況依次執行。總之,在對tag1 cache操作完成后,再進行tag1和tag1’的比較。
4.3 安全性分析
本文提出的存儲器安全保護機制是基于AES-GCM加解密機制的,在片外存儲的是密文,并且兩層AES-GCM加密的各自密鑰都存儲在片內。因此數據機密性是可以保證的。
關于數據完整性,針對常見的三種攻擊(Spoofing attacks, Splicing or relocation attacks, Replay attacks),本設計都可以有效地防御。若攻擊者只對片外存儲器的數據區進行攻擊,則第一層AES-GCM解密時對比相應的tag1即可檢測出這三種攻擊。
需要說明的是第一層AES-GCM每加密128n bits數據產生一個64 bits的tag1,第二層AES-GCM每加密2n(128n/64=2n)個tag1產生一個64 bits的tag2和128nbits的tag1密文。因此,在片外的tag區128n bits的tag1密文包含了數據區128n*2n bits數據的完整性信息。若攻擊者同時對片外的存儲器的數據區和tag區進行攻擊,對于Splicing攻擊,即同時調換片外數據區的某些數據塊以及這些數據塊對應的tag區的數據塊,調換的過程如圖2所示, 則處理器在讀地址addr1的數據時,實際讀到的是地址為addr2的內容,若Tag1 cache中沒有對應的tag,則需從片外讀取地址為addr3的512bits數據并進行解密,此時又需要從片外讀取地址為addr5的32bits數據,但實際上從地址addr3和地址addr5讀取的都是數據段B對應的Tag1B和Tag2’B。但是,數據段A和數據段B它們各自的tag2的前32bits是存儲在片內的,是不可能被調換的。因此,從片外的地址addr5讀取的32bits數據(實際上讀取的是Tag2-2B)和片內的數據段A的tag2的前32bits合并成新的tag2在與第二層AES-GCM解密時生成的tag對比時不相等的概率是極大的,從而檢測出Splicing attacks。

圖2 片外存儲器的data區和tag區同時受到Splicing攻擊
同理,對于Replay attacks(重放攻擊),如圖3所示,在t2時刻,當攻擊者同時用t1時刻的A1、Tag1A1和Tag2-2A1替代t2時刻對應的數據時,由于片內存儲的關于數據塊A的tag2的前32bits已經更新,因此,在與Tag2-2A1合并成新的tag2后,與第二層AES-GCM解密時生成的tag2對比時不相等的概率時非常大的,從而檢測出Replay attacks。

圖3 片外存儲器的data區和tag區同時受到Replay攻擊
本設計的安全性,很大程度上取決于AES-GCM的安全性能,本設計采用的是64位tag,其中tag的前32位存儲在片內,后32位存儲在片外。在密鑰未知的情況下,當AES-GCM密文和tag的后32位同時改變或其中的一個改變時,AES-GCM解密時能夠檢測得到的概率即為本設計能夠成功檢測出完整性攻擊的概率。對于Replace attacks,當AES-GCM進行加密時,兩次不同的128n bits的輸入所產生的64bits的tag的前32bits相同的概率即為本設計漏報Replace attacks的概率,由AES-GCM的特性可知,該概率是極小的。攻擊者可以嘗試使用隨機數據打造一個t-bit MAC,但攻擊成功的概率是2-t。對于GCM,攻擊者可以成功獲取標簽的概率是(B+1)2-t,B是128位的數量以明文的形式和額外的身份驗證數據塊[10]。額外的身份驗證數據是AES-GCM的輸入之一,它可以被看作是一個常數,作為長度一樣的明文來設計。在我們的設計中,因為只有tag2的前32 bits存儲在片內,相當于有效tag位只有32位,因此,成功攻擊的概率為(2n+1)/2-32。
在第3部分提到,將AES-GCM外部輸入數據寬度定為128bit的整數倍,即128nbits。這里取n等于4,即AES-GCM外部輸入的數據寬度為512 bits,L2 cache的cache line也為512 bits。那么第一層AES-GCM每加密512 bits數據產生一個64 bits的tag1,第二層AES-GCM每加密8(512/64=8)個tag1產生一個64 bits的tag2和512 bits的tag1密文。其中tag2的前32 bits存儲在片內的Partial tag2 memory中。因此,在Partial tag2 memory中,每32 bits的一半的tag2包含了512*8 bits數據的完整性信息。因此片內的存儲器開銷為32/(512*8),即0.78125%。每8個tag1進行第二層加密時,產生的512bits的密文需存儲在片外,產生的64bits的tag2的后32bits也需存儲在片外。因此片外的存儲器開銷為(512+32)/(512*8),即13.28125%。最后總的存儲器開銷為14.07%。安全性方面,成功進行一次spoofing attacks(欺騙攻擊)的概率是9/2-32約等于1/2-29。
同時,本文的方法不是基于樹結構,加解密的核心模塊是AES-GCM,而AES-GCM的主要計算延時在于內部的GHASH的計算,而內部一系列的AES計算可以以流水線的方式進行,并和GHASH并行完成。本文中提到的一種實現GHASH for GCM的算法,完成8個block的計算只需要13個周期。因此完成4 blocks的AES-GCM的計算可以在15(±3)個周期內完成。因此,在不考慮存儲器訪問延時的情況下,在tag1 cache命中的情況,我們的存儲器保護機制的性能開銷大概在20個周期以內。若tag1 cache缺失,則其性能開銷將會翻一到兩倍。
下面將把已經存在的五種安全模型(XOM、AEGIS、PEICE、AES-TAC和FEDTIC)以及本文提出的安全模型放到一起進行比較分析。在評估一個模型的數據機密性和完整性保護能力時,我們主要從安全性、性能的開銷、存儲器開銷(片內)三方面做重點考慮。表1是對相關文獻資料統計的結果。綜合比較分析,本文提出的安全系統模型具有以下特點:

表1 本文模型與已有模型的對比(“/”表示文獻中沒有量化)
1)存儲開銷小。尤其是片內的存儲器開銷,僅為0.78125%,與國內外相關的研究結果相比,如PE-ICE,AEGIS,AES-TAC等,都要小很多。片外的存儲器開銷為13.28125%,總的存儲器開銷為14.0625%。
2)對系統速度影響小。本設計中增加了二級緩存L2 Cache模塊,有效減緩了AES-GCM加解密造成的延時的不利影響。對于第二層AES-GCM,由于本設計增加了Tag1 Cache模塊,可以有效地減小第二層AES-GCM執行的概率,從而減小了性能損失。另外,AES-GCM算法的延時比標準的哈希算法要小很多。在我們的設計中,以上所有的措施有效地降低了性能的損失。
3)安全性高,基于AES加密,兩層加解密的密鑰都存儲在片內,片外存儲的是密文,安全性可以得到保證。對我們的方法而言,成功攻擊的概率是1/2-29(n=4), 這個安全級別滿足大多數的應用環境的要求[11]。
1)我們知道,對于TEC-Tree,若想進一步提高其性能,可以例化多個AES核以實現其并行性。同樣的,本設計可以例化兩個AES-GCM核,使得兩層加解密操作分別使用各自的AES-GCM ,這樣可以在一定程度上提高我們的設計的性能,減小性能損失。但這樣必將不可避免地增加面積開銷。
2)關于AES-GCM輸入的數據寬度128nbits,我們的運用實例中取n等于4,即AES-GCM的輸入寬度為512 bits。實際上,AES-GCM的輸入寬度也可以為其他值,這樣會導致片外存儲器的開銷也不一樣。比如可以為256 bits,此時第二層AES-GCM的輸入將只有4個tag1組成(256/64=4),若仍然只取第二層AES-GCM加密產生的tag2的前32 bits存儲在片內,那么片內的存儲器開銷將是32/(256*4)=3.125%,明顯比AES-GCM的輸入寬度為512 bits時大多了。但這樣的好處是,AES-GCM加解密的速度將有所加快,即整體的性能將有所提高,性能開銷將有所減小。
3)關于本設計的安全性。本設計的安全性取決于對第二層AES-GCM加密產生的tag2存儲的位數。Tag2有64 bits,本文的運用實例中是將tag2的前32bits存儲在片內,實際上,若想提高其安全性,可以將tag2的更多比特位存儲在片內,但這樣做的負面影響就是片內存儲器的開銷增加了,反義亦然。
總之,在微處理器與片外存儲器之間增加安全防御機制以提高片外數據的安全性必將對整個系統的性能、片內存儲器開銷帶來一定的負面影響。我們所提出的方案也是在系統的性能開銷、片內存儲器開銷和安全性等因素之間尋求的一種折中方案。
本文提出了一種基于AES-GCM的存儲器完整性保護機制。該機制的主要特點是采用了雙層加密機制,有效地減小了片內存儲器的開銷。與其他存儲器完整性保護機制相比,我們的方法的片內存儲器的開銷只有0.78%(n=4時),在嵌入式系統中具有很大的使用意義。在性能上,我們的設計的性能的開銷也是比較小的。
[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] 郭春霞,裘雪紅.嵌入式系統安全的研究與設計[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] 侯方勇.存儲系統數據機密性與完整性保護的關鍵技術研究[D].長沙:國防科學技術大學,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日
雷志群,男,碩士研究生,助理工程師,研究方向:嵌入式系統測試及安全性。
TM76
10.3969/j.issn.1672-9722.2016.11.027