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