TWI567557B - 具防護重播攻擊之用於記憶體加密的可微調加密模式 - Google Patents

具防護重播攻擊之用於記憶體加密的可微調加密模式 Download PDF

Info

Publication number
TWI567557B
TWI567557B TW100134373A TW100134373A TWI567557B TW I567557 B TWI567557 B TW I567557B TW 100134373 A TW100134373 A TW 100134373A TW 100134373 A TW100134373 A TW 100134373A TW I567557 B TWI567557 B TW I567557B
Authority
TW
Taiwan
Prior art keywords
logical
processor
memory
application
encrypted
Prior art date
Application number
TW100134373A
Other languages
English (en)
Other versions
TW201224751A (en
Inventor
夏依 古爾翁
吉狄翁 葛隆
伊達依 阿那堤
加寇伯 多維克
莫旭 馬歐
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201224751A publication Critical patent/TW201224751A/zh
Application granted granted Critical
Publication of TWI567557B publication Critical patent/TWI567557B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Description

具防護重播攻擊之用於記憶體加密的可微調加密模式 發明領域
本揭露內容係有關資料之密碼式防護,更特別係有關對於儲存在記憶體中之記憶體區域內的軟體應用程式之加密。
發明背景
由安全軟體應用程式所使用的系統中之依電性記憶體之區域需要受到保護,以避免未經認證實體之惡意修改。這些惡意修改,亦稱為「攻擊」,可能是軟體攻擊或硬體攻擊。一種用於針對安全軟體應用程式而提供機密性和整體性防護的方法,是將一個大型依電性記憶體整合在中央處理單元(Central Processing Unit,CPU)封裝內,以作為由安全軟體應用程式所使用的「私用記憶體」。然而,將大型依電性記憶體整合在CPU封裝內是很昂貴的。
因此,安全軟體應用程式典型上係儲存在外部(也就是,CPU外的)記憶體。在外部記憶體中之用於儲存安全軟體應用程式的記憶體區域(區部)可為對系統中之作業系統(Operating System,OS)而言可見或不可見的。若這些記憶體區域對OS而言是可見的,那麼他們會需要受到保護以避免軟體攻擊。若這些記憶體區域對OS而言是不可見的(稱為「失竊記憶體區部」),並且係存在有某種存取控制機構,那麼他們會需要受到保護以避免硬體攻擊,也就是說,避免可對外部作實體存取的攻擊者。
發明概要
依據本發明之一實施例,係特地提出一種方法,其包含下列步驟:由一個處理器加密與一個應用程式相關聯的一個資料區塊,該資料區塊係利用一個微調(tweak)而被加密,該微調包括一個快取行識別符和一個位置,該快取行識別符可識別與該處理器分開的一個記憶體,該位置是要被加密的該資料區塊在所識別之該快取行中的位置;以及配置該記憶體內的一個邏輯分割,用以儲存經加密的該資料區塊。
依據本發明之另一實施例,係特地提出一種設備,其包含:在一個處理器中的邏輯,該邏輯係用於利用一個微調(tweak)而將與一個應用程式相關聯的一個資料區塊加密,該微調包括一個快取行識別符和一個位置,該快取行識別符可識別與該處理器分開的一個記憶體,該位置是要被加密的該資料區塊在所識別之該快取行中的位置,該邏輯係用於配置該記憶體內的一個邏輯分割,用以儲存經加密的該資料區塊。
依據本發明之再一實施例,係特地提出一種包括有具有相關資訊之機器可取用媒體的物品,其中該資訊在被取用時會致使一個機器執行下列步驟:由一個處理器加密與一個應用程式相關聯的一個資料區塊,該資料區塊係利用一個微調(tweak)而被加密,該微調包括一個快取行識別符和一個位置,該快取行識別符可識別與該處理器分開的一個記憶體,該位置是要被加密的該資料區塊在所識別之該快取行中的位置;以及配置該記憶體內的一個邏輯分割,用以儲存經加密的該資料區塊。
依據本發明之又一實施例,係特地提出一種系統,其包含:一個大量儲存裝置,用以儲存一個應用程式;以及一個處理器,其包含:用於將與該應用程式相關聯的一個資料區塊加密的邏輯,該資料區塊係利用一個微調(tweak)而被加密,該微調包括一個快取行識別符和一個位置,該快取行識別符可識別與該處理器分開的一個記憶體,該位置是要被加密的該資料區塊在所識別之該快取行中的位置,該邏輯係用於配置該記憶體內的一個邏輯分割,用以儲存經加密的該資料區塊。
圖式簡單說明
隨著後文中之詳細說明向前推進,並參考隨附圖式,本發明之數個實施例的特徵和所請求之標的將會變得明顯可見,在這些圖式中,相似號碼是描述相似部件,並且在這些圖式中:第1圖例示一個系統記憶體,其包括有一個失竊記憶體區域;第2A圖例示一種延伸微調的一個實施例;第2B圖例示一種延伸微調的另一個實施例;第3圖為一個系統之方塊圖,此系統包括有一個記憶體加密引擎,用以執行記憶體加密;第4圖為示於第3圖中之外部記憶體內的一個記憶體區域之一部份的方塊圖,用以儲存要被加密的資料;第5圖例示一種方法,用以由應用程式使用示於第4圖中的外部記憶體內之記憶體區域部份之分割;第6圖例示用於將信賴應用程式儲存在記憶體中的一種方法的一個實施例;並且第7圖例示用於對一個信賴應用程式增加額外記憶體配置的一種方法的一個實施例。
雖然後方的詳細說明將是參考所請求之標的之數個例示實施例來進行,但對於熟於此技者來說,會有許多由中而生的替代體、修改體和變異體是明顯可見的。因此,係意欲要使所請求之標的受寬廣角度審視,並僅由後附申請專利範圍所述來界定。
較佳實施例之詳細說明
第1圖例示一個系統記憶體100的一個實施例,其包括一個失竊記憶體區塊102。失竊記憶體區塊102是對作業系統(OS)而言不可見的一個記憶體區域(記憶體的一部分)。系統記憶體100是「外部」記憶體,也就是說,其與系統中的中央處理單元(CPU)分開。失竊記憶體區塊102包括多個實體頁面106。有三個軟體應用程式104-1、104-2、104-3常駐在翼展於失竊記憶體區塊102中之一或多個實體頁面106的記憶體區域中。各個軟體應用程式104-1、104-2、104-3係跨系統(外部)記憶體100中的失竊記憶體區塊102之複數個實體頁面106而翼展。
用於保護由安全軟體應用程式所使用之記憶體區域的一種方法係將儲存在系統記憶體100中之這些記憶體區域中的資料加密。對儲存在這些記憶體區域中之資料的加密和解密係利用在CPU內產生且儲存在CPU內的一個金鑰,而在CPU中執行。然而,對資料的加密本身係旨在僅提供資料之機密性。對儲存在這些記憶體區域中之資料的加密有助於保護資料之機密性不受可被動地讀取外部記憶體、或可竊聽在CPU與系統記憶體100之間傳輸之資料的攻擊者侵擾。
然而,對儲存在外部記憶體100中的這些記憶體區域中之資料之加密並沒有提供整體性檢查。將資料之經加密形式儲存在外部記憶體100中之失竊記憶體區塊102內的記憶體區域中並沒有防範可主動修改或重播儲存在外部記憶體100中之失竊記憶體區塊102內的部份記憶體影像之攻擊者。
一個惡義攻擊者(敵方)可從外部記憶體100中的一個記憶體位置複製,並寫入到此外部記憶體中之不同記憶體位置。例如,攻擊者可將在位址a的第x頁之內容複製到在位址b的第y頁。具有對經加密記憶體區域之讀取/寫入存取權的敵方可藉由觀察此經加密記憶體區域在何時被修改(例如,在時間2(t2))、和藉由將在時間1(t1)被寫入的經加密區域之內容複製來重置此記憶體區域,而執行重播攻擊。執行重播攻擊的攻擊者可能具有對於可在不同時間常駐於同一個記憶體區部的兩個不同應用程式(上下文)中之一者的控制權。例如,攻擊者可能是使用其中一個應用程式來攻擊另一個應用程式。
緩減重播攻擊的一種方法是將認證標籤和經加密資料一起牢牢地儲存在外部記憶體100中。然而,這會需要額的昂貴的記憶體。
本發明的一個實施例係藉由將重播攻擊之效果減少成不比導致對記憶體影像之隨機(不可預期且不可控制的)變化的能力大,來緩減此種攻擊。
具有微調和密文偷竊的XEX加密模式(XEX encryption mode with tweak and ciphertext stealing,XTS)-進階加密標準(Advanced Encryption Standard,AES)可微調區塊密碼(IEEE標準1619-2007)是在國家標準與技術研究院(National Institute of Standards and Technology,NIST)聯邦資訊處理標準(Federal Information Processing Standards,FIPS)140-2底下的一種模式,其定義用於密碼式保護儲存在固定長度區塊中之資料的一種架構之元件。在本發明的一個實施例中,係提供可改善針對區塊密碼之標準XTS-AES操作模式的一種針對區塊密碼之新操作模式,以及用於在使用針對區塊密碼之XTS-AES操作模式時實施記憶體加密的一種方法與設備。
XTS-AES操作模式施用於對於被劃分成數個連續資料單元的資料串流之加密,此資料串流的這些資料單元大小相等,但最後一個資料單元是例外,它可能會小於其他資料單元。各個資料單元係具有在金鑰範圍內的128或更多位元的資料。金鑰範圍是由一個特定金鑰所加密的資料,被劃分成數個大小相等的資料單元。金鑰範圍是由三個非負整數來識別:對應於第一個資料單元的一個微調值、資料單元大小、和資料之長度。此微調值是一個128位元的值,用來代表被以XTS-AES加密或解密之此資料串流中的資料之邏輯位置。各個資料單元係分配有為非負整數的一個微調值。這些微調值是從一個任意非負整數開始被連續分配的。
XTS-AES操作模式是一種「可微調窄區塊加密」,並且是碟片加密(靜止資料(data-at-rest)加密)的標準模式。可將其視為在電子碼簿(Electronic Code Book,ECB)模式中之加密,其中,係使用一個微調值(tweak)來作加密,此微調值以資料區塊之「索引」位置的函數來修改對於此資料區塊的加密。在ECB模式中,是以區塊密碼對各個明文區塊作獨立加密。對於碟片加密而言,在XTS-AES操作模式中,係使用tweak來將加密綁定至被加密的碟片驅動器(儲存媒體)上之區段。
在一個實施例中,有一個記憶體加密單元將XTS-AES操作模式用於將加密綁定至一個經處理資料區塊的(實體)記憶體位址。使用AES-STS在很大的程度上可有助於抵抗可實體操縱經加密記憶體影像、並藉由調換經加密區塊之位置或者是藉由以其他經加密區塊來覆寫經加密區塊,而作出攻擊的攻擊者。由於AES-XTS tweak是實體記憶體位址的一個函數,所以這樣的一種攻擊會變成等於更微弱得多的導致攻擊者不可預期且不可控制之隨機變化的攻擊。易言之,攻擊者無法從調換/覆寫中獲得比此攻擊者「盲目地」改變記憶體更多的好處。
然而,由於XTS tweak是實體位址的一個函數,所以它並沒有防範當中攻擊者係以先前被寫到同一個位址的經加密區塊來覆寫區塊的重播攻擊。為了例示此種攻擊的可能嚴重性,請考慮一個軟體應用程式,其在時間1(t1)將一個經加密影像寫入到記憶體中的第x頁。攻擊者利用對記憶體的硬體存取而儲存這個經加密影像。然後,此攻擊者經由軟體方法逐出那個軟體應用程式,並載入一個惡意軟體應用程式來佔據同樣的記憶體區域。此攻擊者接著將此經加密影像之複本實體重播至第x頁,並且在此時,此惡意軟體應用程式會獲得此影像的完整所有權。例如,此惡意軟體應用程式可將機密解密和傾倒成明文至其所選擇的任何記憶體位置。此攻擊即使是在CPU有對記憶體加密單元使用有限數量個金鑰的情況下也可被發動,因為它只需要重複攻擊程序足夠的次數來耗盡金鑰可能性。這樣的攻擊可被使用來從CPU獲得任何秘密,例如,增強型隱私識別符(Enhanced Privacy Identifier,EPID)或從敏感碼獲得秘密。
在用於碟片加密的標準XTS模式中,針對在一個單元(u)中之具有索引值(j)的一個資料區塊P之AES-XTS係由首先產生一個微調值,並接著使用此微調值而從明文產生密文來進行。
例如,一個微調值(X)係如下所示地在一個區塊識別符(單元(u),於此單元(u)中之單元位置(j))上使用一個16位元組金鑰值(K1)和一個多項式(Poly)x128+x7+x2+x+1所產生:
X=AES(K1,u)*2j mod Poly 方程式1
其中:「*」代表無進位乘法(carry-less multiplication)
在產生微調值(X)之後,如下所示地使用微調值(X)和另一個16位元組金鑰值(K2)而從明文(P)產生密文(C):
C=AES(K2,P+X)+X 方程式2
AES-XTS保留64個位元(8個位元組)給單元之值(u)。由於AES加密係操作在16位元組區塊上,所以如於方程式1中所示地被加密的區塊(16個位元組)的64個剩餘位元(8個位元組)(=「u」)被界定為0。
可藉由將一個「單元」定義為是一個64位元組快取行,並將索引j=0,1,2,3定義為用來指出這16位元組資料區塊在那個快取行中的位置,而將AES-XTS施用於記憶體加密。於此事例中,「u」之值為快取行的(實體)位址。實體位址典型上係使用48位元被編碼。
在本發明的一個實施例中,係提供以對標準AES-XTS模式之擴張為基礎的一種新操作模式,以利用tweak(經擴張tweak)中的更多資訊。除了標準資訊以外,經擴張tweak還包括,例如,快取行位址和區塊位置、一個時間戳記值。在另一個實施例中,經擴張tweak包括,例如,至少一個額外標籤。在一個實施例中,此額外標籤是運行於系統中的一個軟體應用程式之版本號碼。將版本號碼加至tweak,可防止從此軟體應用程式之舊版本複製並將其於相同位址重播在此軟體應用程式之較新版本上來在運行舊版本時獲得對較新版本之特權這樣的行為。
在一個實施例中,經擴充tweak中之用來儲存額外資訊的位元是位在經擴充tweak之最上面的(最高有效)64個位元。如先前所論述的,這些最高有效位元在標準AES-XTS模式中係設為0。在另一個實施例中,額外資訊係位在被保證為零的其他位元中。因此,經擴充AES-XTS是標準AES-XTS的通則,因為如果所有的額外資訊位元都被衰退成零,那麼此加密就是標準XTS模式。
在一個實施例中,經擴充tweak是如下所示地於方程式3中產生:
X=AES(K1,L|T|u)*2j mod Poly 方程式3
其中P是一個資料區塊,其索引為j,在單元u中,於由T所指出的時間被加密,並且具有一個標籤L,而符號「|」表示並列(concatenation)。
在另一個實施例中並沒有使用標籤,且係利用快取行位址和時間來產生經延伸tweak。產生此經延伸tweak的方式會使此tweak係描述連續整數,於時間0、1、…、2^(32)-1)對一個區域之位址計數。針對CL[j](於時間TIME)(而j=0,1,2,...,m-1,且TIME=0,1,2,...2^(32)-1)的tweak為:TWEAK=00...0[127:55]|(ACL[j]>>6)[33:n+14]|TIME[31:0]|(ACL[j]>>6)[n+13:0]
其中:單元=快取行(CL);各個CL為2^(6)=64個位元組,其為(4 x 128位元的(2^(20))區塊);各個CL具有以40位元為基礎的一個位址,ACL[39:0],而ACL[5:0]=[000000];一個分割具有2^n MB;m(於此分割中之中之CL數量)=2^(n+14);j為在一個資料串流中的m個CL中之一個;
資料串流為在不同時間的這m個CL,也就是CL[j](於時間t),如下:
CL[0],CL[1],...,CL[m-1] 於時間t=0
CL[0],CL[1],...,CL[m-1] 於時間t=1
...
CL[0],CL[1],...,CL[m-1] 於時間t=2^(32)-1
而CL[j]的基礎位址係由ACL[j]表示(其中j=0,1,2,...,m-1)。
當(以於上面指出的順序)走過資料串流的這些CL(單元)時,TWEAK從下面這個正整數開始連續地跑過所有的正整數
00...0[127:55]|(ACL[0]>>6)[33:n+14]|00...0[31:0]|(ACL[0]>>6)[n+13:0]
並結束於
00...0[127:55]|(ACL[m-1]>>6)[33:n+14]|11...1[31:0]|(ACL[m-1]>>6)[n+13 :0]
例如:
考慮一個2 MB分割,n=1,且m=15。
CL[j]於時間TIME(32個位元)的tweak係如下定義:
00...0[127 : 55]|(ACL[j]>>6)[33 : 15]|TIME[31:0]|(ACL[j]>>6)[14 :0]
第2A圖例示一個經擴充tweak 200的實施例。示於第2A圖中的經擴充tweak 200是一個128位元的值。此經擴充tweak 200之最低有效48位元(位元47:0)206係保留給位址(u),而剩下的80個最高有效位元(位元127:48)204是保留給時間戳記(T)。
第2B圖例示另一個經擴充tweak 202的實施例。在示於第2B圖中的經擴充tweak 202之實施例中,此經擴充tweak 202的最低有效64位元[位元63:0]係保留給位址(u)212,接下來的32個位元[位元95:64]是給時間戳記(T)214,且最高有效32位元[位元127:96]是給標籤(L)208。
要將以示於第2B圖中之經擴充AES-XTS之實施例加密的一個區塊解密,會需要密文C、位址u、索引j、還有時間戳記T和標籤L。在一個實施例中,時間戳記(T)和標籤(L)的值並不是秘密,但是係以一種信賴方式儲存。
此經擴充AES-XTS tweak的優點是下面的「時間隔離」性質:若於時間t1被加密至位址A1的密文C在位址A1上被重播,但在時間t2被解密,則其係被解密至一個不可預期字串,因為這些微調值由於不同時間戳記值的關係會是不同的。
此「時間隔離」性質可抵抗第2類(Type 2)重播攻擊,因為攻擊者並沒有從「重播至同一個位址」中得到比此攻擊者從隨機(不可預期且不可控制)改變記憶體影像所能得到的更多。同樣地,經擴充AES-XTX微調模式亦達到在由所擁有之標籤(L)區別的數個上下文間之隔離。
已針對XTS-AES說明一個實施例,然而,此經擴充微調模式並不受限於XTS-AES,且係可於其他實施例中施用於其他可微調加密方案。例如,在針對LRW(M. Liskov、R. Rivest、和D. Wagner)可微調區塊密碼的一個實施例中,亦係可以類似方式將LRW增強成增強型LRW模式。
第3圖為一個系統300之方塊圖,其包括一個記憶體加密引擎303,用以執行記憶體加密。系統300包括一個處理器301、一個記憶體控制器集線器(Memory Controller Hub,MCH)302和一個輸入/輸出(Input/Output,I/O)控制器集線器(Input/Output Controller Hub,ICH)304。MCH 302包括一個記憶體控制器306,其控制在處理器301和外部記憶體100之間的通訊。處理器301和MCH 302經由一個系統匯流排316通訊。
處理器301可為多個處理器當中的任何一個,像是一個單核心英特爾奔騰四(Intel Pentium IV )處理器、一個單核心英特爾賽揚(Intel Celeron)處理器、一個英特爾XScale(Intel XScale)處理器,或者是一個多核心處理器,像是英特爾奔騰D(Intel Pentium D)、英特爾至強(Intel Xeon)處理器、或應特爾核心雙(Intel Core Duo)處理器,或者是任何其他類型的處理器。
在處理器301中的記憶體加密引擎303可在可能是儲存在記憶體100中或儲存在儲存裝置312中的資料上執行加密和解密。記憶體加密引擎303提供與可讀取記憶體308之內容的被動攻擊者相抗的機密性。記憶體加密引擎303亦提供配合操作在16位元組上的一個密碼而與可以16位元組之粒度讀取和寫入記憶體中之記憶體區域的主動攻擊者相抗的防護且在記憶體308中的一個快取行具有64個位元組。例如,若在此64位元組快取行中的一個16位元組片段的一個位元被修改,那麼這16位元組片段對於攻擊者來說會是「隨機」且不可預測的。
記憶體100可為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、同步化動態隨機存取記憶體(Synchronized Dynamic Random Access Memory,SDRAM)、雙倍資料率2(Double Data Rate 2,DDR2)RAM或Rambus動態隨機存取記憶體(Rambus Dynamic Random Access Memory,RDRAM)或是任何其他類型的記憶體。
ICH 304可係利用一個高速晶片至晶片互連314(例如,直接媒體介面(Direct Media Interface,DMI),而耦接至MCH 302。DMI支援經由兩個單向通道的2十億位元/秒(Gigabit/second)同作傳輸率。
ICH 304可包括有一個儲存體I/O控制器310,用以控制與耦接至ICH 304的至少一個儲存裝置312之通訊。儲存裝置可為,例如,一個碟片驅動器、數位光碟(Digital Video Disk,DVD)、光碟(Compact Disk,CD)驅動器、獨立碟片之冗餘陣列(Redundant Array of Independent Disks,RAID)、磁帶驅動器,或其他類型的儲存裝置。ICH 304可經由一個儲存體協定互連318而與儲存裝置312通訊,利用一連串的儲存體協定,例如,序列式附接小型電腦系統介面(Serial Attached Small Computer System Interface,SAS)或序列先進技術附接(Serial Advanced Technology Attachment,SATA)。
將說明用於保護記憶體100中的一個位址範圍的一個實施例。
第4圖是用於儲存經加密資料的示於第3圖中之外部記憶體100中的一個記憶體區域402之一部份的方塊圖。記憶體區域402被邏輯地劃分成N個「分割」。回頭看第3圖,在處理器301中係有N個計數器350,示於第4圖中的記憶體區域402之部份中的每個邏輯分割各有一個計數器。
第5圖例示一種用於由應用程式使用示於第4圖中的外部記憶體100中之記憶體區域402之部份的分割之方法。係結合第4圖來說明第5圖。
於方塊500,記憶體區域402之此部份被劃分成N個分割404-1、…、404-N。分割404-1、…、404-N係各分配有一個計數器406-1、…、406-N。所有的計數器406-1、…、406-N一開始都被重置成0。處理程序繼續前進到方塊502。
於方塊502,當一個軟體應用程式被儲存在(寫入到)記憶體100中時,軟體應用程式410、412、414殖入一或多個邏輯分割404-1、…、404-N中的一或多個快取行。在一個實施例中,各個快取行係具有64個位元組,且系統是操作在為一個記憶體頁的粒度,其可為4096個位元組。若一個應用程式被載入到記憶體100中,則處理程序繼續前進到方塊504。若被載入到記憶體100中的一個應用程式被逐出,且另一個應用程式(可能是惡意的)被載入到同一個位址空間,則處理程序繼續前進到方塊504。若否,則處理程序繼續前進到方塊502。
於方塊504,每當一個分割404-1、…、404-N首次(由同一個快取行)被殖入時,對應於那個分割的計數器406-1、…、406-N便被處理器增量。此外,這(些)對應分割404-1、…、404-N的這(些)計數器值係作為逐出和/或載入程序的一部分而由處理器自動增量。處理程序繼續前進到方塊502。
回頭看第4圖,在不同時間上,各個應用程式410、412、414被置於具有不同計數器值的邏輯分割404-1、…、404-N,計數器值可跨由應用程式所殖入的邏輯分割而不同。處理器301中的一個記憶體加密引擎303實施XTS-AES增強型微調操作模式,其中T為計數器值,u為實體位址,而j為區塊索引。以此方式,微調值(X)不只受界限於此記憶體中之邏輯分割的位址,也受界限於CPU在應用程式410、412、414被載入到記憶體100中的時候所儲存的計數器值。
「計數器」及就中將其初始化和增量的方法係可有所變化。在一個實施例中,一個計數器可為一個線性回饋移位暫存器(linear feedback shift register,LFSR),其被初始化至固定或隨機的一個非零值,並係利用一個時鐘輸入而增量。在另一個實施例中,一個計數器可為包括有增量邏輯的一個暫存器,其被隨機地或以決定論決定地初始化。在又一個實施例中,一個計數器可為從一個隨機位元產生器所取樣出來的一個值。計數器之長度(輸出位元的數量)可係以會使得試著要於相同計數器值重播經複製影像這件事變得很不切實際這樣的方式來決定。
在示於第4圖的例子中,係有儲存在記憶體100之不同分割404-1、…、404-N中的三個應用程式410、412、414,以使得在應用程式410、412、414當中沒有任何兩者是儲存在同一個分割404-1、…、404-N中。邏輯分割404-1、…、404-N各被分配一個不同的計數器。應用程式412使用在兩個分割404-2、404-3中的頁面,這些分割各具有各別的計數器406-2、406-3。若在被分配給此應用程式的處理器內之計數器沒有被增量,那麼對儲存在這些邏輯分割中之應用程式的解密會正確地運作。除非應用程式首次從各別分割中被逐出,否則計數器值不會被增量。
當一個應用程式被逐出,且另一個應用程式(可能是惡意的)被載入到相同位址空間中時,這(些)對應分割的此(等)計數器值會由CPU作為逐出和/或載入程序的一部分而自動被增量。在一個第2類攻擊中,當一個攻擊者在複製屬於先前應用程式之記憶體影像並將其重播至相同位址的同時,攻擊碼正殖入有關記憶體區域。此項攻擊會在記憶體係以標準XTS-AES加密來加密時成功,攻擊者可讀取儲存在記憶體影像中的秘密。然而,配合這個XTS-AES增強型微調模式,攻擊者是無法獲得成果的,因為計數器值不符合。使用計數器值比隨機修改還要好,因為此XTS-AES增強型tweak在解密中係使用不同的計數器值。
有一個優點,就是,此方法僅配合一個tweak使用加密,並且記憶體讀取和寫入係翻譯至單一個記憶體存取。此外,分割之數量係可由實作來決定,作為在用於計數器之額外硬體成本與記憶體使用效率之間的交易,亦即,越多分割就提供越好的粒度。
第6圖例示一種用於將信賴應用程式儲存在記憶體中的實施例。信賴應用程式首先被初始化,並接著以要求額外實體頁面的形式為其自身請求記憶體配置。
於方塊600,要被儲存在記憶體中的一個應用程式被接收。所接收到的這個應用程式係與一個應用程式識別符相關聯,並且包括此應用程式的第一頁。一個邏輯分割被配置給這個應用程式。處理程序繼續前進到方塊602。
於方塊602,此應用程式的識別符被儲存在與所配置之邏輯分割相關聯的一個邏輯分割識別符中被設定至此應用程式之識別符。與所配置之邏輯分割相關聯的一個頁面號碼被儲存在與所配置之邏輯分割相關聯的一個頁面號碼中。與所配置之邏輯分割相關聯的分割計數器被增量。處理程序繼續前進到方塊604。
於方塊604,在此應用程式之第一頁中的資料被儲存在所配置之邏輯分割的第一頁中。
第7圖例示用於對一個信賴應用程式增加額外的一或多個頁面配置的一種方法之一實施例。
於方塊700,在接收到要針對一個應用程式而在記憶體中儲存資料的一個請求時,從中配置頁面給此應用程式的最後一個邏輯分割被判定。處理程序繼續前進到方塊702。
於方塊702,若目前頁面號碼是在所分配之邏輯分割中的最後那頁,則處理程序繼續前進到方塊704。若不是,處理程序繼續前進到方塊706。
於方塊704,由於目前頁面不為在目前分配給此應用程式之邏輯分割中的最後那頁,所以另一個邏輯分割被配置給此應用程式,並且此應用程式的這頁被複製到新分配的邏輯分割的第一頁。
於方塊706,由於目前頁面為在目前分配給此應用程式之邏輯分割中的最後那頁,所以在目前邏輯分割中被配置給此應用程式的頁面之數目被增量至下一頁,並且此應用程式的這頁被複製到目前所分配的邏輯分割的下一頁中。
對於熟於此技者而言,會可明顯看出,涉及本發明之此等實施例的方法係可體現於包括有電腦可用媒體的電腦程式產品中。例如,這樣的一個電腦可用媒體可含有一個唯讀記憶體裝置,例如唯讀光碟(Compact Disk Read Only Memory,CD ROM))碟片或是傳統ROM裝置,或者是一個電腦磁片,儲存有電腦可讀程式碼在內。
雖然業已參考當中的一些實施例而特別展示和說明本發明的一些實施例,熟於此技者會可瞭解,係可在不悖離由後附申請專利範圍所涵納的本發明之數個實施例的範疇下,就中在形式和細節上做出多種改變。
100...記憶體
102...失竊記憶體區塊
104-1~104-3‧‧‧軟體應用程式
106‧‧‧實體頁面
200、202‧‧‧經擴充tweak
204‧‧‧時間戳記(T)(位元127:48)
206‧‧‧位址(u)(位元47:0)
208‧‧‧標籤(L)(位元127:96)
210‧‧‧時間戳記(T)(位元95:64)
212‧‧‧位址(u)(位元63:0)
300‧‧‧系統
301‧‧‧處理器
302‧‧‧記憶體控制器集線器(MCH)
303‧‧‧記憶體加密引擎
304‧‧‧輸入/輸出控制器集線器(ICH)
306‧‧‧記憶體控制器
310‧‧‧儲存體輸入/輸出控制器
312‧‧‧儲存裝置
314‧‧‧高速晶片至晶片互連
316‧‧‧系統匯流排
402‧‧‧記憶體區域
404-1~404-N‧‧‧分割
350、406-1~406-N‧‧‧計數器
410~414‧‧‧應用程式
500~502、600~604、700~706‧‧‧方塊
第1圖例示一個系統記憶體,其包括有一個失竊記憶體區域;
第2A圖例示一種延伸微調的一個實施例;
第2B圖例示一種延伸微調的另一個實施例;
第3圖為一個系統之方塊圖,此系統包括有一個記憶體加密引擎,用以執行記憶體加密;
第4圖為示於第3圖中之外部記憶體內的一個記憶體區域之一部份的方塊圖,用以儲存要被加密的資料;
第5圖例示一個方法,用以由應用程式使用示於第4圖中的外部記憶體內之記憶體區域部份之分割;
第6圖例示用於將信賴應用程式儲存在記憶體中的一種方法的一個實施例;
第7圖例示用於對一個信賴應用程式增加額外記憶體配置的一種方法的一個實施例。
200...經擴充tweak
204...時間戳記(T)(位元127:48)
206...位址(u)(位元47:0)

Claims (16)

  1. 一種方法,其包含:由一個處理器將與該處理器分開的一個記憶體劃分成多個邏輯分割,各自用於儲存與一個應用程式相關聯的多個資料區塊之一者;配置在該處理器中的多個計數器,各自用於該等邏輯分割之一者,其中該等計數器各自儲存與其所配置之該等邏輯分割之一者相關聯的一個時間戳記值,每當資料被寫入到其所配置之邏輯分割或從其所配置之邏輯分割被讀出時,該時間戳記值係在該處理器中被自主地增量;由該處理器加密與該應用程式相關聯的一個第一資料區塊並且要被儲存在該等邏輯分割之一個第一邏輯分割中,該第一資料區塊係利用一個微調(tweak)而被加密,其包括該記憶體的一個快取行識別符、一個要被加密的該第一資料區塊在所識別之該快取行中的位置和該第一邏輯分割所配置之該計數器的該時間戳記值;以及儲存經加密的該資料區塊在該第一邏輯分割中。
  2. 如申請專利範圍第1項之方法,其中該微調進一步包含一個標籤指出該應用程式之版本號碼。
  3. 如申請專利範圍第1項之方法,其中該應用程式為一個安全應用程式。
  4. 如申請專利範圍第1項之方法,其中該微調為具有微調 和密文偷竊的XEX加密模式-進階加密標準(XTS-AES)微調。
  5. 如申請專利範圍第1項之方法,其中該微調為LRW微調。
  6. 一種設備,其包含:在一個處理器中的一第一邏輯,用以將與該處理器分開的一個記憶體劃分成多個邏輯分割,各自用於儲存與一個應用程式相關聯的多個資料區塊之一者;在該處理器中的一第二邏輯,用以配置在該處理器中的多個計數器,各自用於該等邏輯分割之一者,其中該等計數器各自儲存與其所配置之該等邏輯分割之一者相關聯的一個時間戳記值,每當資料被寫入到其所配置之邏輯分割或從其所配置之邏輯分割被讀出時,該時間戳記值係在該處理器中被自主地增量;在該處理器中的一第三邏輯,用以將與該應用程式相關聯的一個第一資料區塊加密並且要被儲存在該等邏輯分割之一個第一邏輯分割中,該第一資料區塊係利用一個微調(tweak)而被加密,其包括該記憶體的一個快取行識別符、一個要被加密的該第一資料區塊在所識別之該快取行中的位置和該第一邏輯分割所配置之該計數器的該時間戳記值;以及一第四邏輯,用以儲存經加密的該資料區塊在該第一邏輯分割中。
  7. 如申請專利範圍第6項之設備,其中該微調進一步包含一個標籤指出該應用程式之版本號碼。
  8. 如申請專利範圍第6項之設備,其中該應用程式為一個安全應用程式。
  9. 如申請專利範圍第6項之設備,其中該微調為具有微調和密文偷竊的XEX加密模式-進階加密標準(XTS-AES)微調。
  10. 如申請專利範圍第6項之設備,其中該微調為LRW微調。
  11. 一種包括有具有相關資訊之非暫時性機器可取用媒體的物品,其中該資訊在被取用時會致使一個機器執行:由一個處理器將與該處理器分開的一個記憶體劃分成多個邏輯分割,各自用於儲存與一個應用程式相關聯的多個資料區塊之一者;配置在該處理器中的多個計數器,各自用於該等邏輯分割之一者,其中該等計數器各自儲存與其所配置之該等邏輯分割之一者相關聯的一個時間戳記值,每當資料被寫入到其所配置之邏輯分割或從其所配置之邏輯分割被讀出時,該時間戳記值係在該處理器中被自主地增量;由該處理器加密與該應用程式相關聯的一個第一資料區塊並且要被儲存在該等邏輯分割之一個第一邏輯分割中,該第一資料區塊係利用一個微調(tweak)而被加密,其包括該記憶體的一個快取行識別符、一個要被加密的該第一資料區塊在所識別之該快取行中的位置和該第一邏輯分割所配置之該計數器的該時間戳記值;以及 儲存經加密的該資料區塊在該第一邏輯分割中。
  12. 如申請專利範圍第11項之物品,其中該微調進一步包含一個標籤指出該應用程式之版本號碼。
  13. 如申請專利範圍第11項之物品,其中該微調為XTS-AES微調和LRW微調之一者。
  14. 一種系統,其包含:一個大量儲存裝置,用以儲存一個應用程式;以及一個處理器,其包含:一第一邏輯,用以將與該處理器分開的一個記憶體劃分成多個邏輯分割,各自用於儲存與該應用程式相關聯的多個資料區塊之一者;一第二邏輯,用以配置在該處理器中的多個計數器,各自用於該等邏輯分割之一者,其中該等計數器各自儲存與其所配置之該等邏輯分割之一者相關聯的一個時間戳記值,每當資料被寫入到其所配置之邏輯分割或從其所配置之邏輯分割被讀出時,該時間戳記值係在該處理器中被自主地增量;一第三邏輯,用以將與該應用程式相關聯的一個第一資料區塊加密並且要被儲存在該等邏輯分割之一個第一邏輯分割中,該第一資料區塊係利用一個微調(tweak)而被加密,其包括該記憶體的一個快取行識別符、一個要被加密的該第一資料區塊在所識別之該快取行中的位置和該第一邏輯分割所配置之該計數器的該時間戳記值;以及 一第四邏輯,用以儲存經加密的該資料區塊在該第一邏輯分割中。
  15. 如申請專利範圍第14項之系統,其中該微調進一步包含一個標籤指出該應用程式之版本號碼。
  16. 如申請專利範圍第15項之系統,其中該微調為XTS-AES微調和LRW微調之一者。
TW100134373A 2010-09-24 2011-09-23 具防護重播攻擊之用於記憶體加密的可微調加密模式 TWI567557B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/890,365 US8468365B2 (en) 2010-09-24 2010-09-24 Tweakable encryption mode for memory encryption with protection against replay attacks

Publications (2)

Publication Number Publication Date
TW201224751A TW201224751A (en) 2012-06-16
TWI567557B true TWI567557B (zh) 2017-01-21

Family

ID=45871895

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100134373A TWI567557B (zh) 2010-09-24 2011-09-23 具防護重播攻擊之用於記憶體加密的可微調加密模式

Country Status (8)

Country Link
US (1) US8468365B2 (zh)
EP (1) EP2619705B1 (zh)
JP (1) JP5632086B2 (zh)
KR (1) KR101479957B1 (zh)
CN (1) CN103109296B (zh)
AU (1) AU2011305189C1 (zh)
TW (1) TWI567557B (zh)
WO (1) WO2012040679A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468365B2 (en) 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
KR101577886B1 (ko) * 2011-06-29 2015-12-15 인텔 코포레이션 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치
US9116991B2 (en) * 2011-08-16 2015-08-25 Google Inc. Searching encrypted electronic books
TW201423469A (zh) * 2012-12-03 2014-06-16 Inst Information Industry 電子數位資料匿篩裝置、方法及其電腦可讀取紀錄媒體
US9910790B2 (en) * 2013-12-12 2018-03-06 Intel Corporation Using a memory address to form a tweak key to use to encrypt and decrypt data
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US9710675B2 (en) * 2015-03-26 2017-07-18 Intel Corporation Providing enhanced replay protection for a memory
CN104852798B (zh) * 2015-05-11 2017-10-03 清华大学深圳研究生院 一种数据加解密系统及方法
CN105516186B (zh) * 2015-12-31 2019-07-23 华为技术有限公司 一种防止重放攻击的方法和服务器
US10585809B2 (en) * 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US10126960B2 (en) * 2016-05-10 2018-11-13 Qualcomm Incorporated Fuse-based anti-replay mechanism
US10880082B2 (en) 2017-10-19 2020-12-29 Hewlett Packard Enterprise Development Lp Rekeying keys for encrypted data in nonvolatile memories
KR102488636B1 (ko) 2017-11-23 2023-01-17 삼성전자주식회사 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
KR20200129776A (ko) 2019-05-10 2020-11-18 삼성전자주식회사 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
DE102019128528A1 (de) 2019-10-22 2021-04-22 Infineon Technologies Ag Datenkryptografievorrichtungen und speichersysteme
US11500786B2 (en) * 2019-12-03 2022-11-15 Nxp B.V. System and method for protecting memory encryption against template attacks
US20230080104A1 (en) * 2021-08-25 2023-03-16 International Business Machines Corporation Bulk data transfers via transport layer security protocol
WO2024049141A1 (ko) * 2022-09-02 2024-03-07 삼성전자주식회사 암호화된 데이터를 비휘발성 메모리 내에 저장하기 위한 전자 장치 및 그 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW552505B (en) * 2000-06-30 2003-09-11 Intel Corp Method and apparatus for secure execution using a secure memory partition
US20080270505A1 (en) * 2007-04-30 2008-10-30 Lsi Logic Corporation Efficient hardware implementation of tweakable block cipher
US20090048976A1 (en) * 2007-08-14 2009-02-19 Seagate Technology Llc Protecting Stored Data From Traffic Analysis
TW200949687A (en) * 2008-05-24 2009-12-01 Via Tech Inc Termination of secure execution mode in a microprocessor providing for execution of secure code

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS504190B1 (zh) * 1969-09-27 1975-02-15
US6016553A (en) 1997-09-05 2000-01-18 Wild File, Inc. Method, software and apparatus for saving, using and recovering data
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
US7444523B2 (en) * 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7681050B2 (en) * 2005-12-01 2010-03-16 Telefonaktiebolaget L M Ericsson (Publ) Secure and replay protected memory storage
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
JP4409619B2 (ja) * 2006-02-24 2010-02-03 富士通株式会社 情報処理装置、制御装置および制御方法
US8189770B2 (en) * 2006-08-10 2012-05-29 Nec Corporation Tweakable block encryption apparatus, method, and program
US8095802B2 (en) 2006-09-12 2012-01-10 International Business Machines Corporation System and method for securely saving a program context to a shared memory
US20090187771A1 (en) 2008-01-17 2009-07-23 Mclellan Jr Hubert Rae Secure data storage with key update to prevent replay attacks
US8477946B2 (en) * 2008-02-27 2013-07-02 International Business Machines Corporation Method and apparatus for protecting encryption keys in a logically partitioned computer system environment
EP2310941A1 (fr) * 2008-06-02 2011-04-20 Awox Procede et dispositif de mise a jour d'application informatique
JP5333450B2 (ja) * 2008-08-29 2013-11-06 日本電気株式会社 調整値付きブロック暗号化装置、方法及びプログラム並びに復号装置、方法及びプログラム
FI20080534A0 (fi) * 2008-09-22 2008-09-22 Envault Corp Oy Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto
WO2010054369A1 (en) * 2008-11-10 2010-05-14 Oxford William V Method and system for controling code execution on a computing device using recursive security protocol
US20110255689A1 (en) * 2010-04-15 2011-10-20 Lsi Corporation Multiple-mode cryptographic module usable with memory controllers
US8468365B2 (en) 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
RU2011107568A (ru) * 2011-03-01 2012-09-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ генерирования конструкции комбинационного умножителя конечного поля малой глубины

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW552505B (en) * 2000-06-30 2003-09-11 Intel Corp Method and apparatus for secure execution using a secure memory partition
US20080270505A1 (en) * 2007-04-30 2008-10-30 Lsi Logic Corporation Efficient hardware implementation of tweakable block cipher
US20090048976A1 (en) * 2007-08-14 2009-02-19 Seagate Technology Llc Protecting Stored Data From Traffic Analysis
TW200949687A (en) * 2008-05-24 2009-12-01 Via Tech Inc Termination of secure execution mode in a microprocessor providing for execution of secure code

Also Published As

Publication number Publication date
AU2011305189C1 (en) 2016-05-12
JP2013538376A (ja) 2013-10-10
US20120079285A1 (en) 2012-03-29
KR101479957B1 (ko) 2015-01-08
CN103109296B (zh) 2016-01-20
WO2012040679A3 (en) 2012-07-19
EP2619705A2 (en) 2013-07-31
EP2619705A4 (en) 2015-01-21
JP5632086B2 (ja) 2014-11-26
CN103109296A (zh) 2013-05-15
US8468365B2 (en) 2013-06-18
AU2011305189A1 (en) 2013-05-23
WO2012040679A2 (en) 2012-03-29
TW201224751A (en) 2012-06-16
KR20130048260A (ko) 2013-05-09
AU2011305189B2 (en) 2015-12-10
EP2619705B1 (en) 2017-12-27

Similar Documents

Publication Publication Date Title
TWI567557B (zh) 具防護重播攻擊之用於記憶體加密的可微調加密模式
US9076019B2 (en) Method and apparatus for memory encryption with integrity check and protection against replay attacks
US7428306B2 (en) Encryption apparatus and method for providing an encrypted file system
EP3355232B1 (en) Input/output data encryption
US8726040B2 (en) Memory randomization for protection against side channel attacks
US11269786B2 (en) Memory data protection based on authenticated encryption
CN1841255B (zh) 保护数据存储的机密性与完整性的方法和装置
JP2023130311A (ja) サイドチャネル攻撃から電子コンピュータを保護する方法及び電子コンピュータ
CN114761957A (zh) 控制对存储在非可信存储器中的数据的访问的装置和方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees