專利名稱:采用增量檢驗來保護數(shù)據(jù)完整性的方法
技術領域:
本發(fā)明涉及一種信息處理技術領域的檢驗方法,具體地說,涉及的是一種采 用增量檢驗來保護數(shù)據(jù)完整性的方法。
背景技術:
數(shù)據(jù)安全涉及諸方面的因素;其中,保護數(shù)據(jù)完整性是維護數(shù)據(jù)安全的基本 要素之一。數(shù)據(jù)完整性的一個主要目的在于檢驗對數(shù)據(jù)的非法篡改;g卩,系統(tǒng)能 夠通過完整性檢驗機制,探測到非法用戶/程序?qū)?shù)據(jù)的寫/修改操作。通常,實 現(xiàn)數(shù)據(jù)完整性保護依賴于哈希(Hash,也稱散列)函數(shù);g卩,基于哈希函數(shù)而為 數(shù)據(jù)生成對應的檢驗結果,然后,在重新訪問數(shù)據(jù)時驗證數(shù)據(jù)與該結果是否吻合。 通常,檢驗數(shù)據(jù)完整性是通過為被保護的數(shù)據(jù)附著一個完整性檢驗碼而實施,如 采用密碼安全的HMAC (keyed-Hash Message Authentication Code)函數(shù)為被 保護的數(shù)據(jù)創(chuàng)建對應的MAC (Message Authentication Code, 消息認證碼)結 果,從而依賴(數(shù)據(jù),MAC)配對來檢驗被讀取的數(shù)據(jù)是否保持完整性。對于大 容量的具有動態(tài)更新特性的數(shù)據(jù)空間(比如磁盤的全盤數(shù)據(jù)或某一分區(qū)的數(shù)據(jù)), 為了便于MAC的計算與更新,需要基于尺寸適度的數(shù)據(jù)單位(如磁盤塊或者磁盤 扇區(qū))來創(chuàng)建對應區(qū)C結果。但這樣一來,由于缺乏一個(全部數(shù)據(jù),MAC)配 對,會存在遭受重放攻擊(r印lay attack)的安全威脅;BP,攻擊者可以用先 前拷貝的合法的(數(shù)據(jù)單位,MAC)配對來替換當前的(數(shù)據(jù)單位,MAC)配對 而不會被檢驗到。如果通過在被保護的數(shù)據(jù)空間上創(chuàng)建哈希樹(Hash Tree,或 Merkle Tree)來對抗重放攻擊,由于檢驗路徑上的每一層節(jié)點都需要隨著葉節(jié) 點對應數(shù)據(jù)的更新而重新計算,而大容量數(shù)據(jù)空間上所創(chuàng)建的哈希樹具有較長的 檢驗路徑,則哈希樹依然會帶來較大的性能損失。因此,需要更為可行高效的完 整性檢驗方法,以用于大容量的具有動態(tài)更新特點的數(shù)據(jù)空間的完整性保護。
經(jīng)對現(xiàn)有技術的文獻檢索發(fā)現(xiàn),M. Bellare等人1997年在《Computer Science》(《計算機科學》)上發(fā)表的《A New Paradigm for Collision-Free
Hashing: Incremental at Reduced Cost》(《一種新型高效的抗碰撞哈希函數(shù) 設計范式》)中提出的增量哈希函數(shù)設計思想是近些年來國際上增量檢驗研究的 基石。該文中提出的增量哈希函數(shù)的基本設計范式為,將被保護的數(shù)據(jù)X分成若 干子數(shù)據(jù)塊,獲得X的檢驗值的方式為將個子數(shù)據(jù)塊與自己的二進制標識連接后 作偽隨機化,使其值可以映射到某個群上,最后通過群上的運算將各偽隨機值合 并起來。其安全性依賴于群的選擇。其不足在于,在對N個子數(shù)據(jù)塊間作剪切操 作時其更新檢驗值的時間復雜度為O(N),而本發(fā)明可在不增加性能消耗和保證 安全性的前提下將剪切操作時間復雜度降為0(1)。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對現(xiàn)有技術的不足,提供一種采用增量檢驗來保護數(shù)據(jù) 完整性的方法,使得能夠防范包括重放攻擊在內(nèi)的完整性篡改行為,并具有檢驗 的良好性能。
本發(fā)明是通過以下技術方案實現(xiàn)的,本發(fā)明包括如下步驟
第一步,遠程服務器上存儲有大量數(shù)據(jù),服務器計算磁盤數(shù)據(jù)的檢驗值,通 過加密信道交由用戶保存。
所述服務器計算磁盤數(shù)據(jù)的檢驗值,具體為
步驟一,將被保護數(shù)據(jù)空間x分割為具有兩個及兩個以上數(shù)量的數(shù)據(jù)塊,其
中的每一數(shù)據(jù)塊都具有一個唯一標識該數(shù)據(jù)塊的標識,且第i+1個數(shù)據(jù)塊是第i
個數(shù)據(jù)塊的下一個數(shù)據(jù)塊,這樣,就有
<formula>formula see original document page 5</formula>
其中,x,是組成被保護磁盤數(shù)據(jù)空間Z的第z'個數(shù)據(jù)塊,/勤,的標識°
步驟二,對于一個確定的數(shù)據(jù)塊,將該數(shù)據(jù)塊與其下一個數(shù)據(jù)塊的標識相連 接,并將連接的結果使用哈希函數(shù)生成一個子檢驗值,對于第i個數(shù)據(jù)塊的子檢 驗值為
<formula>formula see original document page 5</formula> 其中,/ 是標準的哈希函數(shù),符號" "表示連接 依此,為每個數(shù)據(jù)塊生成對應的子檢驗值
由所得到的全部子檢驗值,通過群上的運算而得到被保護數(shù)據(jù)空間X初始的 完整性檢驗值,即
<8>;;2..勿,...勿 其中,符號" "是群G上的運算。第二步,當服務器上某塊數(shù)據(jù)被修改時,服務器更新檢驗值,并通過加密信 道更新給用戶。出于性能的考慮,用戶通過明文信道訪問服務器數(shù)據(jù),獲得數(shù)據(jù) 后用戶可根據(jù)得到的數(shù)據(jù)重新計算其檢驗值,與自己所保存的合法檢驗值作對 比,如不同則說明該數(shù)據(jù)在服務器端或在網(wǎng)絡中遭到了非法篡改。這里攻擊者可 以直接篡改服務器上的數(shù)據(jù)也可以對明文信道作中間人攻擊,但是無法篡改用戶 所保存的檢驗值。
所述服務器更新檢驗值,是指為更新第i個數(shù)據(jù)塊而更新被保護數(shù)據(jù)空間X 的完整性檢驗值,具體為
步驟一,將第i + l個數(shù)據(jù)塊的標識和第i個數(shù)據(jù)塊相連接,將連接的結果使 用哈希函數(shù)生成出子檢驗值并進而計算該子檢驗值在群G上的逆元,
步驟二,將第i + l個數(shù)據(jù)塊的標識和第i個數(shù)據(jù)塊被更新后的結果相連接, 將連接的結果使用哈希函數(shù)生成出子檢驗值,
步驟三,通過更新之前被保護數(shù)據(jù)空間X的完整性檢驗值、更新之前由第i 個數(shù)據(jù)塊而得到的子檢驗值的逆元、更新之后由第i數(shù)據(jù)塊而得到的子檢驗值, 獲得更新之后被保護數(shù)據(jù)空間的完整性檢驗值,即
<formula>formula see original document page 6</formula>
其中,I'是更新之后的被保護數(shù)據(jù)空間,
符號"-1"表示群G上的逆元,x,'是更新之后的數(shù)據(jù)塊jc,。
本發(fā)明具有如下有益效果隨數(shù)據(jù)塊更新而進行的檢驗值更新具有增量性和
并行性,時間消耗與修改的數(shù)據(jù)塊規(guī)模成比例,不需要針對全部被保護的數(shù)據(jù)塊
重新計算哈希結果,從而具有完整性檢驗值更新的高性能。引入了指向下一數(shù)據(jù)
塊的標識到檢驗值的計算中,從而使諸數(shù)據(jù)塊形成了一個類鏈表的結構,在進行
數(shù)據(jù)塊基于位置的剪切-粘貼操作時,能夠降低計算復雜度。
圖1為本發(fā)明在一種分布式網(wǎng)絡中應用的實施場景圖。
具體實施例方式
下面結合附圖對本發(fā)明的實施例作詳細說明本實施例在以本發(fā)明技術方案 為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護 范圍不限于下述的實施例。
如圖1所示,大量數(shù)據(jù)存儲在遠程服務器上,服務器計算磁盤數(shù)據(jù)的檢驗值,
通過加密信道交由用戶保存。當服務器上某塊數(shù)據(jù)被修改時,服務器更新檢驗值, 并通過加密信道更新給用戶。出于性能的考慮,用戶通過明文信道訪問服務器數(shù) 據(jù),獲得數(shù)據(jù)后可重新計算其檢驗值,與自己所保存的檢驗值作對比便可偵測出 數(shù)據(jù)是否被非法篡改。這里攻擊者可以直接篡改服務器上的數(shù)據(jù)也可以對明文信 道作中間人攻擊,但是無法篡改用戶所保存的檢驗值。
在本實施例中,所涉及的群及其相關概念是指
定義一個集合G和集合中上的一種運算0,如果滿足以下三個條件則稱G 為一個群(1)集合中的任意兩個元素a和b,在這種運算下得到的值a0b均 被這個集合所涵蓋;(2)集合中存在唯一的本原元素e,使得集合中任意元素a, 均有a(2)e:a; (3)集合中任意元素a,均存在唯一一個與之對應的逆元a—M吏得
群G可以是無限群,如整數(shù)空間加法群,其本原元素是0,每個元素a的逆 元是-a。 G也可以是有限群,如集合{1, 2, 3, 4},群運算為(ab) mod 5, 本原元素為l,元素l、 2、 3和4對應的逆元分別為1、 3、 2和4。
本實施例以磁盤數(shù)據(jù)的完整性保護作為描述的對象。磁盤中,數(shù)據(jù)被存儲在 一系列的數(shù)據(jù)塊中;數(shù)據(jù)塊的單位可以是扇區(qū),也可以是文件系統(tǒng)所使用的簇(比 如,連續(xù)8個512字節(jié)扇區(qū)組成一個4KB的簇而作為文件系統(tǒng)數(shù)據(jù)存儲的單位)。 不失一般性,本實施例就以簇作為磁盤數(shù)據(jù)塊的單位。文件系統(tǒng)會為每一個簇賦 予一個標識;不失一般性地,這一標識總可以確定每一個具體的簇。這一標識可 以有不同的存儲形式,比如與簇直接存儲在一起,或者存儲在文件系統(tǒng)元數(shù)據(jù)中; 但不管怎樣,標識與對應的簇是能夠關聯(lián)在一起的。下面的內(nèi)容就描述如何為包 含K個簇的文件系統(tǒng)數(shù)據(jù)空間創(chuàng)建完整性檢驗值,并在其中某一簇被更新時,更 新包含K個簇的整個數(shù)據(jù)空間的完整性檢驗值。
被保護的文件系統(tǒng)數(shù)據(jù)空間X包括K個簇,這K個簇分別是(Xl, x2,…, Xl,…,xK)。為檢驗數(shù)據(jù)空間X的完整性;其中,文件系統(tǒng)通過標識<i〉來 指明簇x',且簇xi的下一個簇是xw。系統(tǒng)首先計算完整性檢驗的初始值如下 //(X) = m41(< 2 > ) +……+ m41(< / +1 > ,x,) +……+ 5Ti41(— )
其中,
S/^l是具有160bit輸出結果的安全哈希函數(shù);
</ + l>W,表示將連接第/個簇與指向第/ + 1個簇的標識,且連接采用二進制 位串的連接;
符號"+ "是模216°+1的加法。
這樣,被保護的磁盤數(shù)據(jù)空間就具有了一個160bit的完整性檢驗值H(X)。 此后,當某一簇被更新時,數(shù)據(jù)空間X就更新其完整性檢驗值如下 = //(X) +鵬1(< / +1 >)-1 + 5濕(< z, +1 > *x,')
其中,
X'是更新之后的待保護磁盤數(shù)據(jù)空間;
符號"-l"表示群G上的逆元,加法群上元素a的逆元為-a; x,'是更新之后的簇x,
本實施方案所選擇的群是模216°+1的加法群,是離散對數(shù)問題困難的群,
是抗碰撞的。鑒于此,本方案是可證明安全的。
遠程服務器負責檢驗值的初始化和合法更新,在數(shù)據(jù)更新后要負責通過加 密信道更新用戶端所保存的檢驗值。如果用傳統(tǒng)哈希函數(shù),如MD5,SHA1等均需 要對原始數(shù)據(jù)做迭代操作來得到檢驗值,這樣,原始數(shù)據(jù)做了微小的改動檢驗值 也需要完全重新計算,而在本方案中計算量只與更新數(shù)據(jù)的規(guī)模成比例,數(shù)據(jù)改 動量越小,更新消耗越小。在實施實例中假定服務器上的數(shù)據(jù)和傳輸數(shù)據(jù)的網(wǎng)絡 都是不可信的,只有服務器通過加密信道更新過來的檢驗值是可靠的。服務器無 法阻止攻擊者篡改數(shù)據(jù),攻擊者也可以對網(wǎng)絡實施中間人攻擊。但是用戶可以利 用本發(fā)明中設計的機制來偵測從服務器端獲取的數(shù)據(jù)是否被非法篡改。用戶得到 數(shù)據(jù)后重新計算其檢驗值,生成數(shù)據(jù)的指紋,與本地安全區(qū)域所保存的合法檢驗 值相對比,如不同則說明數(shù)據(jù)的改動并不是由遠程服務器做的,故可以偵測出攻 擊者的篡改。
權利要求
1、一種采用增量檢驗來保護數(shù)據(jù)完整性的方法,其特征在于,包括如下步驟第一步,遠程服務器上存儲有大量數(shù)據(jù),服務器計算磁盤數(shù)據(jù)的檢驗值,通過加密信道交由用戶保存;第二步,當服務器上某塊數(shù)據(jù)被修改時,服務器更新檢驗值,并通過加密信道更新給用戶,用戶通過明文信道訪問服務器數(shù)據(jù),獲得數(shù)據(jù)后用戶根據(jù)得到的數(shù)據(jù)重新計算其檢驗值,與自己所保存的合法檢驗值作對比,如不同則說明該數(shù)據(jù)在服務器端或在網(wǎng)絡中遭到了非法篡改,這里攻擊者可直接篡改服務器上的數(shù)據(jù)以及對明文信道作中間人攻擊,但是無法篡改用戶所保存的檢驗值。
2、 根據(jù)權利要求1所述的采用增量檢驗來保護數(shù)據(jù)完整性的方法,其特征 是,所述服務器計算磁盤數(shù)據(jù)的檢驗值,具體為步驟一,將被保護數(shù)據(jù)空間X分割為具有兩個及兩個以上數(shù)量的數(shù)據(jù)塊,其 中的每一數(shù)據(jù)塊都具有一個唯一標識該數(shù)據(jù)塊的標識,且第i + l個數(shù)據(jù)塊是第i 個數(shù)據(jù)塊的下一個數(shù)據(jù)塊,這樣,就有其中,x,是組成被保護磁盤數(shù)據(jù)空間X的第/個數(shù)據(jù)塊,/是x,的標識;步驟二,對于一個確定的數(shù)據(jù)塊,將該數(shù)據(jù)塊與其下一個數(shù)據(jù)塊的標識相連 接,并將連接的結果使用哈希函數(shù)生成一個子檢驗值,對于第i個數(shù)據(jù)塊的子檢驗值為少,=/K<Z' + l>*X,) 其中,/2是標準的哈希函數(shù),符號" "表示連接,依此,為每個數(shù)據(jù)塊生成對應的子檢驗值,由所得到的全部子檢驗值,通過群上的運算而得到被保護數(shù)據(jù)空間X初始的 完整性檢驗值,艮P://(JO-A :^.. ^... ^ 其中,符號" "是群G上的運算。
3、 根據(jù)權利要求1所述的采用增量檢驗來保護數(shù)據(jù)完整性的方法,其特征 是,所述服務器更新檢驗值,是指為更新第i個數(shù)據(jù)塊而更新被保護數(shù)據(jù)空間X 的完整性檢驗值,具體為步驟一,將第i + l個數(shù)據(jù)塊的標識和第i個數(shù)據(jù)塊相連接,將連接的結果使 用哈希函數(shù)生成出子檢驗值并進而計算該子檢驗值在群G上的逆元,步驟二,將第i + l個數(shù)據(jù)塊的標識和第i個數(shù)據(jù)塊被更新后的結果相連接, 將連接的結果使用哈希函數(shù)生成出子檢驗值,步驟三,通過更新之前被保護數(shù)據(jù)空間X的完整性檢驗值、更新之前由第i個數(shù)據(jù)塊而得到的子檢驗值的逆元、更新之后由第i數(shù)據(jù)塊而得到的子檢驗值,獲得更新之后被保護數(shù)據(jù)空間的完整性檢驗值,即i/(x') = (義)+1 > ",)—1 /<< / +1 > ')其中,義'是更新之后的被保護數(shù)據(jù)空間,符號"-r表示群g上的逆元,&'是更新之后的數(shù)據(jù)±如,°
全文摘要
本發(fā)明涉及一種數(shù)據(jù)安全技術領域的采用增量檢驗來保護數(shù)據(jù)完整性的方法。本發(fā)明中,大量數(shù)據(jù)存儲在遠程服務器上,服務器計算磁盤數(shù)據(jù)的檢驗值,通過加密信道交由用戶保存。當服務器上某塊數(shù)據(jù)被修改時,服務器更新檢驗值,并通過加密信道更新給用戶。用戶通過明文信道訪問服務器數(shù)據(jù),獲得數(shù)據(jù)后必要時重新計算其檢驗值,與自己所保存的檢驗值作對比便可偵測出數(shù)據(jù)是否被非法篡改。這里攻擊者可以直接篡改服務器上的數(shù)據(jù)也可以對明文信道作中間人攻擊,但是無法篡改用戶所保存的檢驗值。本發(fā)明能夠防范包括重放攻擊在內(nèi)的完整性篡改行為,并具有檢驗的良好性能。
文檔編號H04L12/56GK101355428SQ20081004277
公開日2009年1月28日 申請日期2008年9月11日 優(yōu)先權日2008年9月11日
發(fā)明者侯方勇, 宋寧楠, 張媛媛, 谷大武 申請人:上海交通大學