存儲器完整性的制作方法
【技術領域】
[0001] 實施例在總體上設及存儲器完整性。更具體地,實施例設及通過基于就未加密數 據是否包括多個比特的隨機分布而進行的判定來實施完整性動作,W維持存儲器完整性。
【背景技術】
[0002] 在例如個人計算機、智能移動電話等設備中對存儲器的加密可W用于在所述設備 正在運行、丟失、被竊時保護存儲于存儲器中的數據。然而,對存儲器的加密可能仍然是易 受攻擊的,因為數據可能會被對手經由初始的和/或重復的存儲器損壞攻擊而損壞。因此, 處理器可能執行已損壞的數據,并引起一系列不期望的效果,例如,密碼登錄嘗試錯誤地成 功、失敗等,應用行為不當、崩潰等,W及諸如此類。常規的技術實施各種策略來維持存儲器 的完整性,力圖將對加密數據(例如,存儲數據)的惡意改變最小化。一種技術可W包括利用 奇偶校驗。雖然是一種內嵌(in-line)方法并具有相對較低的存儲成本,但奇偶校驗在對手 可能成功猜到如何改變存儲數據的比特來通過校驗的范圍內是確定性的。另一種技術可設 及利用相對大的代碼來驗證存儲數據的完整性,運對于對手可能不是確定性的,但是可能 包括相對較高的存儲成本。另外,每次從存儲器中取出數據時都使用代碼可能導致相對較 大數量的存儲器訪問事件,運引起相對較高的檢索成本、性能退化、額外功率消耗等。
【附圖說明】
[0003] 通過閱讀后續說明書和隨附權利要求W及通過參考后續附圖,本領域技術人員可 W明白實施例的各種優點,在附圖中:
[0004] 圖1是根據實施例的維持存儲器完整性的裝置的例子的框圖;
[0005] 圖2是根據實施例的維持存儲器完整性的裝置的另一例子的框圖;
[0006] 圖3是根據實施例的維持存儲器完整性的方法的例子的流程圖;W及
[0007] 圖4是根據實施例的維持存儲器完整性的方法的另一例子的流程圖。
【具體實施方式】
[000引現在參考圖1,示出了根據實施例的維持存儲器完整性的裝置10。裝置10可W包括 任意計算設備和/或數據平臺,例如膝上型計算機、個人數字助理(PDA)、媒體內容播放器、 成像設備、移動互聯網設備(MID)、任意智能設備(例如:無線智能電話、智能平板、智能TV)、 計算機服務器等,或其組合。另外,裝置10可W包括具有計算功能(例如,個人數字助理/ PDA、膝上型計算機、智能平板)、通信功能(例如,無線智能電話)、成像功能、媒體播放功能 (例如,智能電視/TV)等或其組合(例如,自動互聯網設備/MID)的任意平臺。
[0009]所示的裝置10包括存儲器12。存儲器12可W在處理器14的外部(例如,外部存儲 器),和/或可W通過例如存儲器總線禪合到處理器14。另外,存儲器12可W實現為主存儲 器。存儲器12例如可W包括易失性存儲器、非易失性存儲器等,或者其組合。例如,存儲器12 可W包括動態隨機存取存儲器(DRAM),其配置為一個或多個存儲器模塊,例如,雙列直插式 存儲器模塊(DIMM)、小外廓DIMM(SODIMM)等;只讀存儲器(ROM),例如,可編程只讀存儲器 (PROM)、可擦除PROM化PROM)、電EPROM化EPROM)等;相變存儲器(PCM)等,或其組合。存儲器 12可W包括存儲器單元的陣列,其按行和列布置并被分隔為可獨立尋址的存儲位置。因此, 對存儲器12的訪問可能設及使用針對存儲位置(storage Iocation)的地址,例如,識別包 含該存儲位置[storage memory location]的行的行地址,W及識別包含該存儲位置 [storage memory location]的列的列地址。
[0010]處理器14可W包括任意類型的處理器,例如,微處理器、嵌入式處理器、數字信號 處理器(DSP)、中央處理單元(CPU)、圖形處理單元(GPU)、視覺處理單元(VPU)、網絡處理器、 執行代碼W實現本文所描述技術的設備,等等,或其組合。處理器14可W包括一個或多個核 屯、,例如核屯、16和核屯、18。核屯、16、18可W包括單線程核屯、、多線程核屯、等,或其組合。核屯、 16、18可W包括指令解碼器,用于對指令(例如,來自指令寄存器的)進行識別和/或解碼,W 激活適當的電路來執行所述指令,從而驗證指令流(例如,操作代碼等)將會進行計算,等 等,或其組合。
[OCm]例如,粉。16、18可W執行一條或多條指令,例如,讀取指令、寫入指令、擦除指令、 移動指令、算術指令、控制指令等,或其組合。核屯、16、18例如可W執行一條或多條指令來將 數據(例如,程序數據、操作代碼、操作數等)在寄存器(未示出)與存儲器12之間移動,來從 存儲器12讀取數據,來將數據寫入存儲器12,來利用數據執行算術運算(例如,加、減、按位 運算、比較等),來執行與數據相關聯的控制操作(例如,分支等)等或其組合。指令可W包括 任意代碼表示,例如,二進制代碼、八進制代碼和/或十六進制代碼(例如,機器語言)、符號 代碼(例如,匯編語言)、十進制代碼、字母數字代碼、高級編程語言代碼等,或其組合。因此, 例如,十六進制代碼可W用于表示X86指令集的操作代碼(例如,操作碼),其包括字節值 "00"用于加法運算、字節值"8B"用于移動運算、字節值"Ff '用于增量/減量運算,等等。
[0012] 處理器14可W包括內部存儲裝置,例如,包括一級或多級的處理器緩存。處理器緩 存可W不加密和/或可W與處理器14共享同一管忍、在同一忍片上。另外,處理器緩存可W 集成到一個或多個核屯、16、18上。所示的處理器14包括緩存20,其可W存儲處理器14的一個 或多個部件所利用的數據(例如,指令、操作數、程序數據等)。緩存20可W包括任意類型的 緩存,例如,指令緩存、數據緩存、單級緩存、多級緩存、共享緩存、嚴格包容型緩存、獨占型 緩存等或其組合。例如,緩存20可W包括中級緩存,例如級別2 (L2)、級別3 (L3)、級別4 (L4)、 或其它級別的緩存、最后一級緩存化LC)等或其組合。核屯、16、18可W就數據是否位于緩存 20中來進行檢查,W執行一條或多條指令和/或其它數據(例如,程序數據等),其中緩存未 命中可能引起數據W固定大小的塊(例如,緩存行)從存儲器12轉移到緩存20。
[0013] 所示的處理器14還包括存儲器控制器22,其可W將處理器14與存儲器12禪合,管 理去往和/或來自存儲器12的數據流等或其組合。雖然示出的存儲器控制器22被集成到處 理器14上,但是存儲器控制器22可W是在處理器14外部的而非集成到其中的分立邏輯。類 似的,示出為集成到存儲器控制器22上的部件可W是在存儲器控制器22外部的而非集成到 其中的分立邏輯。每個核屯、16、18例如可W經由各自的存儲器控制器與各自的存儲器禪合、 經由共享存儲器控制器與共享存儲器禪合、經由共享存儲器控制器與各自的存儲器禪合, 等等或其組合。另外,共享緩存可W與共享存儲器控制器禪合,多個緩存可W與多個各自的 存儲器控制器禪合,等等,或其組合。例如,存儲器控制器22可W在核屯、16、18當中共享,可 W與緩存20(例如,共享的多級緩存)禪合,并可W將核屯、16、18與存儲器12(例如,共享的 DRAM)禪合。存儲器控制器22可W與存儲器12 (例如,外部存儲器、DRAM等)禪合,例如經由存 儲器總線。
[0014] 另外,所示的存儲器控制器22包括加密器24,其可W對未加密的數據進行加密。未 加密數據可W包括例如明碼數據、明文數據,等等或其組合。可W用專用格式(例如,超文本 傳輸標記語言化TML)、富文本格式(RTF)等)對明碼數據進行編碼,并通過適當程序(例如, 文字處理器、文本編輯器等)對明碼數據進行讀取,而無需解密。明文數據可W包括預先加 密的數據,例如,在傳輸和/或存儲之前進行加密的明碼數據。另外,明文數據可W包括后解 密數據,例如,作為對接收到的和/或檢索到的數據進行解密的結果的數據。
[0015] 另外,明文數據可W包括W任何格式可編碼的數據,例如,音頻/視頻數據(例如, 運動圖像專家組(MPEG)數據等)、圖像數據(例如,聯合圖像專家組QPEG)數據等)、金融數 據(例如,自動柜員機(ATM)交易數據等),等等,或其組合。明文數據可W包括程序數據,例 如,至少一部分程序、操作系統(OS)、應用、虛擬機(例如,虛擬機監視器(VMM)代碼等),等 等,或其組合。明文數據還可W包括例如指令,其包括操作碼、操作數等,或其組合。
[0016] 未加密的數據可W包括多個比特。所述多個比特可W包括W任意代碼表示(例如, 二進制代碼、八進制代碼、十六進制代碼、符號代碼、十進制代碼、字母數字代碼、高級編程 語言代碼等或其組合)的一個或多個比特(例如,字節等)。例如,存儲器參考指令可W包括 用于操作碼的比特、用于地址的比特,等等,其中存儲器參考指令的比特可W用十六進制代 碼(例如,機器語言)、符號代碼(例如,匯編語言)等或其組合表示。另外,多個比特可W被翻 譯成二進制代碼和/或從二進制代碼翻譯出,其中所述二進制代碼可W由核屯、16、18執行, 可W在存儲器12中被排序,可W從存儲器12處取得,等等,或其組合。
[0017] 加密器24可W包括任意類型的密碼來生成密文數據,例如,W任意期望操作模式 的塊密碼。所述塊密碼可W包括固定塊大小,其中塊密碼可W被重復實現,W對與塊大小相 比更大的數據進行加密。例如,塊密碼可W在傳播密碼塊鏈接(PCBC)操作模式中包括高級 加密標準(AES)。另外,塊密碼可W包括可擴展的塊大小。在一個例子中,塊密碼是 化re ef i Sh,其可W被實現W獲得任意長度(例如,256比特、512比特、10 24比特等)的可擴展 塊大小。
[001引例如,Threefish可W利用可包括存儲器地址和/或位置的微調(tweak)(例如,128 比特),W及可W與塊具有相同寬度的密鑰,可W使用多個(例如,72個)輪(round似加密 256比特和1024比特的塊,使用多個(例如,80個)輪用于1024比特的塊,等等。Threefish可 W使用函數MIX,其包括加法運算、乘W常數的旋轉運算W及異或(XOR)運算。例如,在每組 MIX函數(例如,依據塊大小分別地2、4或8)之后,可W對字(word)進行排列。例如,可W在每 若干個(例如,4個)輪時將子密鑰注入到系統中,其中子密鑰可W由部分密鑰、微調和計數 器值來生成。密鑰和微調可W在末尾處被給予額外的字(例如,所有其它字的X0R)。
[0019]所示的存儲器控制器22還包括解密器26,其可W對密文數據進行解密W生成未加 密數據。解密器26可W包括加密器24的逆變(inverse)。例如,解密器26可W包括AES-PCBC 的逆變。另外,解密器26可W包括化reefish的逆變。例如,可W W相反的次序施加子密鑰, 其中每個輪包括:相反的字排列,緊跟著逆變的MIX函數。因此,未加密數據(例如,明文數 據)可W實現為對加密器24的輸入,W在將未加密數據存儲于存儲器12中時(例如,寫入指 令)生成未加密數據的不可讀副本(例如,密文數據),其中解密器26可W被實現W對密文數 據進行解密,并在將密文數據從存儲器12取出(例如,讀取指令)時生成未加密數據。
[0020] 所示的存儲器控制器22還包括邏輯28,其可W利用處理器14的部件,例如,核屯、 16、18、加密器24、解密器26等,來維持(例如,確保、驗證、測試等)存儲器14的完整性。例如, 邏輯28可W識別包括多個比特的未加密數據(例如,預加密數據、后解密數據等)。另外,邏 輯28可W識別可設及存儲器事務(memory化ansaction)的未加密數據,例如,設及從存儲 器12讀取操作的未加密數據(例如,后解密數據)、設及存儲器12的寫入操作的未加密數據 (例如,預加密數據)等,或其組合。另外,邏輯28可W確定所述多個比特是否包括模式 (pattern)、隨機