專利名稱:變長存儲塊的Hash樹存儲器完整性保護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種計算機(jī)安全性能保護(hù)方法。
背景技術(shù):
完整性(integrity)是指對抗對手主動攻擊,防止信息被未經(jīng)授權(quán)的篡改,它是 安全體系結(jié)構(gòu)和存儲安全領(lǐng)域的重要研究內(nèi)容。數(shù)據(jù)完整性校驗(yàn)方法主要有消息認(rèn)證碼 (Message Authentication Code, MAC)、哈希樹(Hash Tree)、緩沖型 Hash 樹(Cache Hash Tree,CHtree),日志型 Hash 完整性檢測(Log Hash Integrity Checking, LHash)和帶熱訪 問窗口的Hash Tree (HW-HTree),而目前內(nèi)存完整性校驗(yàn)的基礎(chǔ)是Hash樹。Hash樹也叫Merkle樹,它是將存儲器分成多個等長塊,對其構(gòu)建Hash樹,。每個 存儲塊對應(yīng)Hash樹一個葉結(jié)點(diǎn),每個內(nèi)部結(jié)點(diǎn)為下屬兩個結(jié)點(diǎn)Hash計算的結(jié)果,一直到根 結(jié)點(diǎn),存儲所有內(nèi)部結(jié)點(diǎn),樹的根結(jié)點(diǎn)處于安全的存儲區(qū)。在校驗(yàn)時,再計算數(shù)據(jù)塊的Hash 值,與事先存儲的相應(yīng)Hash值比較,如相同則繼續(xù)生成上一層Hash值并進(jìn)行比較,一直到 根結(jié)點(diǎn),如某個Hash值不匹配,則發(fā)生篡改。Hash樹校驗(yàn)存在的問題是每次校驗(yàn)所需要的 開銷很大,導(dǎo)致系統(tǒng)性能顯著下降。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能提高數(shù)據(jù)存儲的安全性,在保證內(nèi)存數(shù)據(jù)完整性同 時降低完整性保護(hù)的時間和空間開銷的變長存儲塊的Hash樹存儲器完整性保護(hù)方法。本發(fā)明的目的是這樣實(shí)現(xiàn)的將保護(hù)的存儲區(qū)分為熱區(qū)和冷區(qū),被頻繁訪問的區(qū)域?yàn)闊釁^(qū),其他區(qū)域均為冷區(qū); 在不同區(qū)設(shè)置不同的數(shù)據(jù)塊大小,即在熱區(qū)設(shè)置多個大小相等的存儲塊;在冷區(qū)設(shè)置多個 大小相等的、大小為熱區(qū)塊整數(shù)倍K的存儲塊,4 < K < 32 ;同時在系統(tǒng)中維持兩棵用于校 驗(yàn)完整性的Hash樹,一棵是熱Hash樹,由熱區(qū)組合到一起而構(gòu)建,另一棵是冷Hash樹,由 冷區(qū)組合到一起而構(gòu)建,同時存儲Hash樹所有內(nèi)部結(jié)點(diǎn),將熱區(qū)和冷區(qū)的子樹頂點(diǎn)放在安 全區(qū)中;在校驗(yàn)?zāi)硵?shù)據(jù)塊時,計算該數(shù)據(jù)塊的Hash值,與事先存儲的相應(yīng)Hash值比較,如相 同則繼續(xù)生成上一層Hash值并進(jìn)行比較,一直到根結(jié)點(diǎn),如某個Hash值不匹配,則發(fā)生篡 改。為進(jìn)一步提高完整性校驗(yàn)效率,降低校驗(yàn)的計算開銷,可將部分或所有Hash樹內(nèi) 部結(jié)點(diǎn)存入安全的緩存中。Hash樹是一種存儲器完整性校驗(yàn)的可靠方法,但實(shí)現(xiàn)代價大,而改善性能的主要 手段是減小每次校驗(yàn)的代價和校驗(yàn)路徑的長度,由此提出“變長存儲塊的Hash樹優(yōu)化方 法,,(Variable Chunk based Hash Tree Optimizing Approach,簡禾爾 VC-HTree)。由局部性原理可知,并非整個存儲器空間中任何區(qū)域在給定時間段內(nèi)都被等概率 地訪問,而是存在頻繁與不頻繁之分,被頻繁訪問的區(qū)域(訪問聚簇區(qū))為熱區(qū)域,簡稱熱 區(qū),根據(jù)執(zhí)行的程序不同,熱區(qū)可大可小,且位置可不連續(xù);除熱區(qū)外均為冷區(qū)。
3
在每個熱區(qū),將內(nèi)存區(qū)域分成多個大小相等的存儲器塊(如64K);在冷區(qū),也將內(nèi) 存區(qū)域分成多個大小相等的存儲塊,且為熱區(qū)的整數(shù)倍(可為256K-2048K)。維持兩棵Hash 樹,一棵是熱Hash樹,由熱區(qū)組合到一起而構(gòu)建;另一棵是冷Hash樹,由冷區(qū)組合到一起而 構(gòu)建。構(gòu)建方法是熱區(qū)和冷區(qū)中的每個存儲塊對應(yīng)Hash樹一個葉結(jié)點(diǎn),每個內(nèi)部結(jié)點(diǎn)為下 屬兩個結(jié)點(diǎn)Hash計算的結(jié)果,一直到根結(jié)點(diǎn),并存儲所有內(nèi)部結(jié)點(diǎn)。這樣得到由兩棵樹組 成的森林,即VC-Htree,如附圖1所示。圖中左虛線框內(nèi)為熱區(qū)(實(shí)際的熱區(qū)可能不止一 個),右虛線框內(nèi)為冷區(qū)。將熱區(qū)和冷區(qū)的子樹頂點(diǎn)放在處理器Cache中,這保證頂點(diǎn)是安 全的(不能被篡改)。在校驗(yàn)?zāi)硵?shù)據(jù)塊時,再次計算該數(shù)據(jù)塊的Hash值,與事先存儲的相應(yīng) Hash值比較,如相同則繼續(xù)生成上一層Hash值并進(jìn)行比較,一直到根結(jié)點(diǎn),如全部匹配,則 數(shù)據(jù)完整;如某個Hash值不匹配,則發(fā)生篡改。相對于Hash樹校驗(yàn)方法,VC-HTree有兩個 優(yōu)點(diǎn)一是通過縮短平均校驗(yàn)路徑長度來減少校驗(yàn)時間。二是減小每次操作的代價。在上述方法中,每次完整性校驗(yàn)都是從葉結(jié)點(diǎn)到根結(jié)點(diǎn),校驗(yàn)的開銷較大,可將葉 結(jié)點(diǎn)以上的內(nèi)部結(jié)點(diǎn)部分或全部放到Cache中。由于Cache是防篡改的,故校驗(yàn)只到在安 全區(qū)的內(nèi)部結(jié)點(diǎn)即可,再次計算出數(shù)據(jù)塊的Hash值如與事先存儲的相應(yīng)Hash值匹配,則證 明數(shù)據(jù)是未篡改的,即可結(jié)束校驗(yàn),這大大降低校驗(yàn)的路徑長度,減少了校驗(yàn)的計算開銷。
圖1變長存儲塊的Hash樹完整性保護(hù)方法示意圖;圖2VC-HTree樹初始化過程流程圖;圖3VC-HTree樹校驗(yàn)過程流程圖;圖4VC-HTree樹更新過程流程圖。
具體實(shí)施例方式下面結(jié)合附圖舉例對本發(fā)明做更詳細(xì)地描述為使方案模型高效工作,要在符合一定條件下,定義相應(yīng)的算法(處理過程)。 為方便說明,在熱區(qū)中更小的訪問區(qū)稱為熱訪問窗口(HotWin),一個熱區(qū)可有一個或多 個HotWin,圖1中hl-h4構(gòu)成了 一個HotWin在冷區(qū)的更小的訪問區(qū)稱為冷訪問窗口 (Coldffin),一個冷區(qū)也可有一個或多個ColdWin。算法要遵循的條件如下(1)訪問窗口具有固定的寬度,整個被保護(hù)的存儲器空間為窗口寬度的整數(shù)倍。(2)訪問窗口僅可以隨著訪問區(qū)的平移而在水平方向按等間距(按窗口寬度)平 移。(3) HotWin和ColdWin可為多個,其中HotWin可以連續(xù)分布以覆蓋一個更大的訪 問聚簇區(qū);也可以離散分布以對應(yīng)多個位置不連續(xù)的訪問聚簇區(qū)。(4)HotWin和ColdWin中葉結(jié)點(diǎn)對應(yīng)的存儲塊大小不同(ColdWin內(nèi)對應(yīng)存儲塊更 大)。定義的處理過程如下1.切分訪問區(qū)(1)切分熱區(qū)根據(jù)熱區(qū)大小,將當(dāng)前熱區(qū)內(nèi)的數(shù)據(jù)切分為多個相等的HotWin,如一個HotWin不
4夠,可設(shè)置多個HotWin來覆蓋熱區(qū)。如圖1中熱區(qū)切分為兩個HotWin。(2)切分冷區(qū)將其余的要保護(hù)內(nèi)存空間(即冷區(qū))再切分為大小相等的,大小為熱區(qū)整數(shù)倍的 ColdWin,一般為HotWin的整數(shù)倍。如圖1中冷區(qū)切分為兩個ColdWin。2.初始化Hash樹根據(jù)上面的劃分,分別對熱Hash樹和冷Hash樹初始化。流程圖見附圖2(兩棵 Hash樹建立方法相同),描述如下(1)計算訪問區(qū)每個數(shù)據(jù)塊的Hash值,得出每個葉結(jié)點(diǎn)值;(2)訪問區(qū)兩兩相鄰的葉結(jié)點(diǎn)值再次計算出Hash值;(3)依此類推,直到訪問區(qū)內(nèi)的Hash子樹頂點(diǎn);(4)基于所有Hash子樹頂結(jié)點(diǎn)構(gòu)造位于更上層次的Hash樹剩余部分;(5)緩存上步所得全部內(nèi)部結(jié)點(diǎn),并將該Hash樹的根結(jié)點(diǎn)置于可信存儲器中(熱 Hash樹根結(jié)點(diǎn)和冷Hash樹根結(jié)點(diǎn)分別保存)。3.校驗(yàn)訪問區(qū)某結(jié)點(diǎn)流程圖見附圖3,描述如下(1)讀該結(jié)點(diǎn)和其兄弟結(jié)點(diǎn);(2)連接它們的數(shù)據(jù);(3)對連接后的數(shù)據(jù)進(jìn)行Hash計算;(4)將結(jié)果與父結(jié)點(diǎn)比較,看是否匹配;(5)如匹配,重復(fù)上述過程,一直到Hash樹根結(jié)點(diǎn)。4.更新訪問區(qū)某結(jié)點(diǎn)流程圖見附圖4,描述如下(1)更新該結(jié)點(diǎn)的數(shù)據(jù)為新數(shù)據(jù);(2)連接該結(jié)點(diǎn)與其兄弟結(jié)點(diǎn)的數(shù)據(jù),計算連接后結(jié)果的Hash值;(3)用這一 Hash結(jié)果更新父結(jié)點(diǎn);(4)重復(fù)這一過程直到Hash樹根結(jié)點(diǎn)。5.熱區(qū)的平移(1)熱區(qū)按訪問窗口寬度的整數(shù)倍平移到其它位置;(2)執(zhí)行“1.切分訪問區(qū)”;
(3)執(zhí)行“ 2.初始化Hash樹”。
權(quán)利要求
一種變長存儲塊的Hash樹存儲器完整性保護(hù)方法,其特征是將保護(hù)的存儲區(qū)分為熱區(qū)和冷區(qū),被頻繁訪問的區(qū)域?yàn)闊釁^(qū),其他區(qū)域均為冷區(qū);在不同區(qū)設(shè)置不同的數(shù)據(jù)塊大小,即在熱區(qū)設(shè)置多個大小相等的存儲塊;在冷區(qū)設(shè)置多個大小相等的、大小為熱區(qū)塊整數(shù)倍K的存儲塊,4≤K≤32;同時在系統(tǒng)中維持兩棵用于校驗(yàn)完整性的Hash樹,一棵是熱Hash樹,由熱區(qū)組合到一起而構(gòu)建,另一棵是冷Hash樹,由冷區(qū)組合到一起而構(gòu)建,同時存儲Hash樹所有內(nèi)部結(jié)點(diǎn),將熱區(qū)和冷區(qū)的子樹頂點(diǎn)放在安全區(qū)中;在校驗(yàn)?zāi)硵?shù)據(jù)塊時,計算該數(shù)據(jù)塊的Hash值,與事先存儲的相應(yīng)Hash值比較,如相同則繼續(xù)生成上一層Hash值并進(jìn)行比較,一直到根結(jié)點(diǎn),如某個Hash值不匹配,則發(fā)生篡改。
2.根據(jù)權(quán)利要求1所述的變長存儲塊的Hash樹存儲器完整性保護(hù)方法,其特征是將 部分或所有Hash樹內(nèi)部結(jié)點(diǎn)存入安全的緩存中。
全文摘要
本發(fā)明提供的是一種變長存儲塊的Hash樹存儲器完整性保護(hù)方法。將保護(hù)的存儲區(qū)分為熱區(qū)和冷區(qū);在熱區(qū)設(shè)置多個大小相等的存儲塊;在冷區(qū)設(shè)置多個大小相等的、大小為熱區(qū)塊整數(shù)倍K的存儲塊;同時在系統(tǒng)中維持兩棵用于校驗(yàn)完整性的Hash樹,一棵是熱Hash樹,另一棵是冷Hash樹,同時存儲Hash樹所有內(nèi)部結(jié)點(diǎn),將熱區(qū)和冷區(qū)的子樹頂點(diǎn)放在安全區(qū)中;在校驗(yàn)?zāi)硵?shù)據(jù)塊時,計算該數(shù)據(jù)塊的Hash值,與事先存儲的相應(yīng)Hash值比較,如相同則繼續(xù)生成上一層Hash值并進(jìn)行比較,一直到根結(jié)點(diǎn),如某個Hash值不匹配,則發(fā)生篡改。本方法能減少校驗(yàn)的計算時間和每次校驗(yàn)操作的代價。
文檔編號G06F12/14GK101894079SQ20101022653
公開日2010年11月24日 申請日期2010年7月15日 優(yōu)先權(quán)日2010年7月15日
發(fā)明者姚念民, 范洪博, 馬海峰 申請人:哈爾濱工程大學(xué)