專利名稱::細粒度數據完整性檢驗方法
技術領域:
:本發(fā)明涉及數據安全
技術領域:
,具體涉及一種數據完整性檢驗方法。
背景技術:
:使用單向Hash函數生成數據的數字摘要信息后存儲下來,通過重新生成待檢驗數據的數字摘要信息,再與所存儲的信息進行比較可以檢查待驗證數據是否發(fā)生變化,從而實現數據完整性檢驗——如果數字摘要信息不完全相同,則數據已發(fā)生變化。上述數字摘要信息是具有固定長度的Hash數據。數字摘要信息的實際長度取決于完整性檢驗中采用的單向Hash函數,該長度和Hash函數本身的安全性一起對完整性檢驗問題的安全性產生影響。為方便描述,將Hash函數生成的一份Hash凄t據稱為一個Hash數據或一個Hash。在關心源數據是否具有完整性時,通過重新生成Hash數據并進行比較,來驗證數據的完整性。信息社會人們面對的往往是海量數據,大量的場合需要確認數據(信息)的安全性。計算機取證領域典型的應用是在進行取證復制的過程中計算并存儲取證映像的數字摘要信息以實現證據固定,從而保證取證分析用的副本、最后的實際證據等的完整性。取證映像(完全復制件)的完整性如果只停留在整體是否可靠的層面,則偶然的數據變化就會影響全部數據的可用性,給數據的安全、證據的選用帶來災難性的影響。所以,使用細粒度的數據完整性檢驗是計算機取證的必然需求,即我們需要分別判斷單個文件或小數據塊(以下統(tǒng)稱為數據對象)是否具有完整性。依照傳統(tǒng)的方法,每個數據對象都需要單獨存儲一份固定長度的Hash數據。當處理海量數據對象時,細粒度完整性檢驗面臨新問題——完整性檢驗Hash數據也成了大規(guī)模數據,且Hash檢驗數據具有隨機性,無法使用數據壓縮技術進行壓縮,這將給完整性檢驗數據的存儲和網絡傳輸效率帶來較大的負面影響。例如一個512GB硬盤的扇區(qū)級MD5Hash值將需要16GB的存儲量,如果使用強度更高的SHA-256則需要32GB。VassilRoussev等人在文獻"md5bloom:ForensicFilesystemHashingRevisited,,(見期刊DigitalInvestigation,2006,vol.3(sl):82-90)中考慮衡量海量數據之間的相似性時意識到了Hash數據的大數據量問題,引入Bloomfilter技術將若干數據對象的Hash存儲到一起形成一個Hash包——Bloomfilter。該方法的Hash包不滿足原來單向Hash函數的安全性,即不具有抗碰撞性,即使兩個相同的Hash包對應的原始翁:據也可能不同,所以不能用于完整性才全^r。由于人們過去沒有關注細粒度的大量、海量數據,按照傳統(tǒng)思路,數據完整性的檢驗有以下三種選擇一是忽略細粒度的完整性檢驗的需求,仍使用單一Hash數據;二是對每份細粒度數據都生成獨立Hash數據,存儲大規(guī)模的Hash數據;三是折衷使用某一中等規(guī)模的粒度,生成適量的Hash數據。第一、二種選擇會出現前面分析的問題,或者完整性檢驗需求未得到滿足,或者Hash數據規(guī)模太大。第三種選擇只實現了比細粒度要大的中等粒度的完整性檢驗,也沒有很好地滿足完整性檢驗的需求。陳龍等在"一種細粒度數據完整性檢驗方法"(軟件學報,2009,Vol.20(4):卯2-909)論文中提出了細粒度數據完整性檢驗的思路,設計了準確指示單個錯誤的簡單方案,只能準確指示單個錯誤。陳龍等在"基于糾錯碼的電子證據網絡化保全方法"(通信技術,2008,Vol.41(11):156-157,159)論文中討論了細粒度數據完整性檢驗的簡單情形,只能指示很少的幾個錯誤。
發(fā)明內容有鑒于此,為了解決上述問題,本發(fā)明提供一種細粒度數據完整性檢驗方法,在保證細粒度完整性檢驗的同時,實現Hash數據壓縮。本發(fā)明的目的是這樣實現的細粒度數據完整性檢驗方法,包括如下步驟1)讀取源數據對象和待檢驗數據對象,對源數據對象和待檢驗數據對象分別執(zhí)行如下步驟,分別獲得源數據對象和待檢驗數據對象的Hash數據矩陣11)將數據對象組織為至少一個數據方陣;12)對同一數據方陣中的數據對象進行重復交叉組合,組成多個數據序列,對每個數據序列進行單向Hash計算,獲得數據對象的Hash數據矩陣,使每個數據對象參與多個Hash數據運算,每個Hash數據由多個數據對象計算獲得;2)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,根據比較結果判斷待檢驗數據對象與源數據對象是否相同。進一步,所述步驟ll)具體包括如下步驟111)將數據對象分組,使每組包含n個數據對象;112)尋找滿足n《q2的最小素數或素數冪q;113)將數據對象排列為q行q列的數據方陣;進一步,步驟12)中,將同一數據方陣中的qZ個數據對象進行重復交叉組合,以使每個Hash數據由q個數據對象進行單向Hash計算獲得,每個數據對象參與t+l次Hash計算,獲得q(t+l)個Hash數據組成的Hash數據矩陣;進一步,所述q"個數據對象進行重復交叉組合是通過對數據方陣的各列元素進行不同速度的旋轉獲得的;進一步,步驟12)具體包括如下步驟)根據用戶要求的準確指錯能力系數t,初始化q行(t+l)列的Hash數據矩陣;122)依次讀入每一個數據對象,對每一個數據對象更新其對應的t+l個Hash數據,處理完所以數據對象后進行必要Hash計算后續(xù)處理,獲得最終Hash數據矩陣,具體包括以下步驟1221)對于讀入的數據對象datau(03,j^i),根據下式確定出需要更新的t+i個Hash數據、(M)""在步驟121)中所初始化的Hash數據矩陣中的位置,其中(O^/St);<formula>formulaseeoriginaldocumentpage8</formula>式中加法、乘法為有限域下的加、乘運算;dataij表示第ixq+j+l個數據對象;hi,,表示第ixq+j+1個Hash數據;"④"表示連接的數據對象都要參與同一個Hash數據的計算,緊鄰hi,,后的"="表示進行單向Hash運算;1222)讀出Hash矩陣中t+l個Hash作為初值,調用單向Hash函數,更新這t+l個Hash數據;1223)判斷數據對象是否全部處理完畢,如果沒有,返回步驟1221)繼續(xù)執(zhí)行;如果所有數據對象均已處理,則進行Hash計算后續(xù)處理,輸出最終Hash數據矩陣。進一步,步驟2)具體包括如下步驟21)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,相同的標記為X,不同的標記為Y,得到比較矩陣S,所述X與Y為不相同的數值;22)搜索比較矩陣S中滿足Sj,G=Y和Sj,產Y的所有i、j值,將i、j值任意組合,對任一(1」)組合取/=2,3......,t,對每個/值,尋找出滿足k+(/-l)xj=i的k值;23)對每個(i,j)組合,若存在某個k,SkJ=X,則判定第ixq+j+l個數據對象與源數據對象相符,否則,判定該數據對象與源數據對象不相符。進一步,所述步驟23)中還包括指示出錯的數據對象并輸出的步驟。本發(fā)明的細粒度數據完整性檢驗方法,在低錯誤率的條件下對所有數據對象進行交叉組合,使一個Hash監(jiān)督若干數據對象,一個數據對象被若干個Hash監(jiān)督,在保證細粒度完整性檢驗的同時,實現Hash數據壓縮,從而提供一種具有高壓縮率的細粒度數據完整性檢驗方案,利用較少的完整性檢驗數據~~Hash數據指示較多數據對象的完整性,可根據用戶需求達到合適的壓縮程度,在設定范圍內準確指示錯誤數(不滿足完整性的數據對象稱為出錯),在超出范圍的情況下最大程度保證檢驗效果,節(jié)省Hash數據的存儲空間和傳輸Hash數據需要的網絡帶寬,細粒度數據完整性檢驗可以對少數錯誤進行隔離,減輕因偶然錯誤或少量篡改而導致整體數據失效的災難性影響,同時,具有較高壓縮率和較低錯誤放大率,本發(fā)明可用于計算機取證中取證映像的完整性指示;適用于數據處理業(yè)務部門、司法部門對數據進行管理和獲取時的海量數據、電子數據證據、計算機證據的完整性檢驗;也適用于其他需要實現細粒度完整性檢驗的場合。本發(fā)明的其他優(yōu)點、目標,和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領域技術人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導。本發(fā)明的目標和其他優(yōu)點可以通過下面的說明書,權利要求書,以及附圖中所特別指出的結構來實現和獲得。為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明作進一步的詳細描述圖1示出了細粒度數據完整性檢驗方法原理示意圖;圖2示出了獲得源數據對象和待檢驗數據對象的Hash數據矩陣的流程示意圖3示出了源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣比對流程示意圖。具體實施例方式以下將參照附圖,對本發(fā)明的優(yōu)選實施例進行詳細的描述。參見圖1,細粒度數據完整性檢驗方法,包括如下步驟1)讀取源數據對象和待檢驗數據對象,對源數據對象和待檢驗數據對象分別執(zhí)行如下步驟,分別獲得源數據對象和待檢^r數據對象的Hash數據矩陣,具體步驟參見圖2:11)將數據對象組織為至少一個數據方陣,具體包括如下步驟111)由于處理能力的限制,海量數據(如取證映像)可能無法一次處理完畢,因此,可根據用戶需求的粒度,將海量數據分組,令每組包含"個數據對象;例如,取證映像是一個512GB的硬盤,用戶需要的粒度是扇區(qū)級,即512字節(jié),則數據對象總個數為512GB/512B=23G。如此大量的數據對象無法一次處理完畢,可以進行分組,如取"=4096,即每組4096個數據對象;或者,取證映像是一個文件目錄,目錄下共有300個文件,用戶需要的粒度是文件級別。如果要一次處理完所有文件,則"=300/1=300;如果分兩次處理,則"=300/2=150。112)尋找滿足n《q2的最小素數或素數冪q,選擇素數或素數冪可支持最多的不同組合方式,最多可達q+l種;例如,n=4096,合適的《即為64;"=300,合適的《即為19。w個數據對象可以看做是《行《列數據方陣的元素,每個對象可以用位置坐標向量々V〉唯一確定;113)將每組數據對象排列為q行q列的數據方陣;12)將同一數據方陣中的qS個數據對象進行重復交叉組合,以使每個Hash數據由q個數據對象進行單向Hash計算獲得,每個數據對象參與t+1次Hash計算,獲得q(t+l)個Hash數據組成的Hash數據矩陣;t為用戶要求的準確指錯能力系數,和實際可準確指示的數據對象個數相同,由用戶根據實際需要確定,在Hash壓縮效果和指示錯誤兩種能力之間取得平衡,t取小于q的自然數,t越大,則表示準確指錯能力越強,但Hash數據壓縮度越?。徊捎脧蛿敌D原理確定數據對象交叉組合,即對數據方陣的不同列做不同速度的旋轉,然后按行組合;具體包括如下步驟121)根據用戶要求的準確指錯能力系數t,初始化q行(t+l)列的Hash數據矩陣;122)依次讀入每一個數據對象,對每一個數據對象更新其對應的t+1個Hash數據,獲得Hash數據矩陣。為了減少磁盤等外設的數據傳輸時間,本實施例采用每讀入一個數據對象,并發(fā)Hash計算其對應的t+1個Hash數據,保證數據只輸入一次,節(jié)約數據輸入時間,具體包括以下步驟1221)對于讀入的數據對象dataij(OSi,jSq),根據下式確定出需要更新的t+1個Hash數據、","在步驟121)中所初始化的Hash數據矩陣中的位置,其中(O^/St);<formula>formulaseeoriginaldocumentpage11</formula>式中加法、乘法為有限域下的加、乘運算;dataj,j表示第ixq+j+l個數據對象;h^表示第ixq+j+l個Hash數據;"④"表示連接的數據對象都要參與同一個Hash數據的計算,緊鄰hi」后的"-,,表示進行單向Hash運算;1222)讀出Hash矩陣中t+1個Hash作為初值,調用單向Hash函數,更新這t+l個Hash數據;1223)判斷數據對象是否全部處理完畢,如果沒有,返回步驟1221)繼續(xù)執(zhí)行;如果所有數據對象均已處理,則進行Hash計算后續(xù)處理,輸出最終Hash數據矩陣;下面以實例詳細"i兌明Hash數據矩陣的生成,以《=5、戶3為例數據方陣DATA5x5中共有25個數據對象,每個數據對象用其下標來標注,這25個元素可以用序號值num來表示,num從l取到25,它與坐標<^>的對應關系為num=/x《+j'+l。DATA5x5可表示為下表<table>tableseeoriginaldocumentpage12</column></row><table>《=5,戶3,按照式(1)的規(guī)則可知,會生成如下的《0+1)=20個Hash數據,而Hash數據矩陣Hsx4的每個元素~就是對(1)式確定的5個數據對象進行單向Hash計算得到的。(1,12,23,9,20)—④(6,17,3,14,25)即,22,8,19,5)斷16,2'3,24,10)(21,7,18,4,15)其中,@表示對5個數據對象組成的數據序列進行單向Hash運算。2)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,根據比較結果判斷待檢驗數據對象與源數據對象是否相同,參見圖3,具體包括如下步驟21)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,相同的標記為X,不同的標記為Y,得到比較矩陣S,所述X與Y為不相同的數值;(1,6,11,16,21)(2,7,12,17,22)(3,8,13,18,23)(4,9,14,19,24)(5,10,15,20,25)(1,2,3,4,5)(6,7,8,9,10)(11,12,13,14,15)0(16,17,18,19,20)①(21,22,23,24,25)(1,7,13,19,25)(6,12,18,24,5)(11,17,23,4,10)@(16,22,3,9,15)(21,2,8,14,20)22)搜索比較矩陣S中滿足Sj,o-Y和su=Y的所有i、j值,將i、j值任意組合,對任一(^)組合取/=2,3,......,t,對每個/值,尋找出滿足k+01)xj—的k值;23)對每個(i,j)組合,若存在某個k,Sk>l=X,則判定第ixq+j+l個數據對象與源數據對象相符,否則,判定該數據對象與源數據對象不相符;指示出錯的數據對象的塊號并輸出。下面以實例詳細說明完整性Hash數據比較、待檢驗數據的完整性判定的過程,以MD5函數作為單向Hash函數,以《=5,戶2為例;對包括25個文件的源數據對象,以一個文件為粒度級別,計算如下的Hash數據矩陣,其中每個元素都是32位的數字摘要信息—ccc6ac55c86843fd0535baa23bb869fb06b3adcbb52bcb2b54e5c3d66f73c3c789b7d>3d7d634400caa732efe957i93—4d7b0fc4596f0d6cd9f55f5c6c4b9a6562fb2007fll她9bdb75648G2lf4f7aa8c57dbdbca781300ac4clf50鄰617ad9fcad052bab90el7bb937dd755acfef]dd8beec8d7b3822c77bb035ca847b82ec9d5fU308。d872a821cO4e59e0019c0b38b9acla3b42455894d0592c72281219bl5298e297cb2797c29c02bbb2ae6bffi4365b0656bfe23cO4a86e0bfla9bff-03e8aD0a6445022890eb36eld729c81y304ce23fc794661eda6ft9b5M600dc6a7015c7513d3eeacb428959e61f0d255—對待4企驗完整性的數據對象(其中2個文件與源文件不同)計算Hash數據矩陣如下所示-cco6ac55c86843fd0535baa23bb869fbp84365b0656bfe23c04a86e0b脇ff7粉b7eb3d7d634400caa732e鵬7f93—304ce23fc794661eda6ft9b5M600dc619bl5298e297cb2797c29c02bbb2ae6ba8c57dbdbca781300ac4clf5098617ad9fcad052bab90el7to937dd755acfefldd8beec8d7b3822c77bb035caM7b82ec9d5fl308Gd872a821c04e59e0019cU3pa09bco2l63lwpt245rgph35872bs19bl5298e297cb2797c29c02bbb2ae6b0b38b9acla3b42455894d0592c722811-03e8a00a6445022890d336eld729c81y304ce23fc794661eda6fb9b5b4600dc6^6f4v\637m7wl89w2h689r3g67gq359—調用字符串比較函數來對比兩個矩陣的相應元素,相同的標識為0,不同的標識為1,得到比較矩陣S如下所示<formula>formulaseeoriginaldocumentpage13</formula>搜索滿足條件力,。=1和&=1的所有(/,力組合,有4個(O,l)、(0,3)、(U)、(1,3)。對(O,l)、(0,3)、(1,1)、(1,3)分別取/=2,求出滿足^+(/-1聲,/的A:為4、2、0、3,判斷&,2=1,&,2=0,化,2=0,化2=1,說明(/力取(0,l)和(l,3)時,第/x灼.+l個數據對象出錯,即第2個和第9個數據對象出錯。本發(fā)明可按照用戶的需求來自由設定數據對象的實際粒度,例如,具體數據對象既可以是一系列物理扇區(qū)數據塊,也可以是目錄中的多個具體文件。本發(fā)明可以按照用戶的需求來設定準確指示錯誤數量的準確指錯能力系數f和Hash數據壓縮的程度。本完整性檢驗方法具有模塊化的監(jiān)督Hash結構,每增加一列Hash即可以多指示一個錯,而Hash數據出錯對數據對象的完整性判斷影響很小。在指示錯誤的能力范圍內能正確檢驗出多個錯誤,在超出該范圍時,大部分情況下也可以準確指示出具體的出錯對象,并且不會將出錯對象判定為正確的對象,符合完整性檢驗的要求。本發(fā)明采用少于細粒度數據對象數目的Hash數據,且各組Hash可以均勻監(jiān)督固定塊數據,交叉監(jiān)督所有數據,數據對象參與Hash計算的次數相同、分布均勻,同時,本發(fā)明能準確指示一定數量的出錯數據對象從而可對其進行隔離;本發(fā)明可以減小因偶然的錯誤或少數的篡改而造成整體數據失效的災難性影響,可以有效壓縮海量Hash數據,節(jié)省完整性檢驗數據的存儲空間和傳輸時的網絡帶寬??捎糜谟嬎銠C取證中取證映像的完整性指示;適用于數據處理業(yè)務部門、司法部門對數據進行管理和獲取時的海量數據、電子數據證據、計算機證據的完整性檢驗;也適用于其他需要實現細粒度完整性檢驗的場合。以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,顯然,本領域的技術人員可以采用本發(fā)明中的交叉檢驗關系而使用不同的系統(tǒng)參數、選擇合適的不同Hash函數對本發(fā)明進行應用r不脫離本發(fā)明的精神和范圍。權利要求1.細粒度數據完整性檢驗方法,其特征在于包括如下步驟1)讀取源數據對象和待檢驗數據對象,對源數據對象和待檢驗數據對象分別執(zhí)行如下步驟,分別獲得源數據對象和待檢驗數據對象的Hash數據矩陣11)將數據對象組織為至少一個數據方陣;12)對同一數據方陣中的數據對象進行重復交叉組合,組成多個數據序列,對每個數據序列進行單向Hash計算,獲得數據對象的Hash數據矩陣,使每個數據對象參與多個Hash數據運算,每個Hash數據由多個數據對象計算獲得;2)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,根據比較結果判斷待檢驗數據對象與源數據對象是否相同。2.如權利要求1所述的細粒度數據完整性檢驗方法,其特征在于所述步驟11)具體包括如下步驟111)將數據對象分組,使每組包含n個數據對象;112)尋找滿足r^q2的最小素^t或素數冪q;113)將數據對象排列為q行q列的數據方陣。3.如權利要求2所述的細粒度數據完整性檢驗方法,其特征在于步驟12)中,將同一數據方陣中的q"個數據對象進行重復交叉組合,以使每個Hash數據由q個數據對象進行單向Hash計算獲得,每個數據對象參與t+l次Hash計算,獲得q(t+l)個Hash數據組成的Hash數據矩陣。4.如權利要求3所述的細粒度數據完整性4企驗方法,其特征在于所述q2轉獲得的。5.如權利要求2至4中任一項所述的細粒度數據完整性檢驗方法,其特征在于步驟12)具體包括如下步驟121)根據用戶要求的準確指錯能力系數t,依據Hash函數初始化q行(t+l)列的Hash數據矩陣;122)依次讀入每一個數據對象,對每一個數據對象更新其對應的t+l個Hash數據,處理完所有數據對象后進行必要Hash計算后續(xù)處理,獲得最終Hash數據矩陣,具體包括以下步驟1221)對于讀入的數據對象datau(0^,j^q),根據下式確定出需要更新的t+l個Hash數據A-"-'x"在步驟121)中所初始化的Hash數據矩陣中的位置,其中(0S/3);④■5=0④、4=0式中加法、乘法為有限域下的加、乘運算;data^表示第ixq+j+l個數據對象;hw表示第ixq+j+1個Hash數據;"《"表示連接的數據對象都要參與同一個Hash數據的計算,緊鄰hu后的"="表示進行單向Hash運算;1222)讀出Hash矩陣中t+l個Hash作為初值,調用單向Hash函數子模塊,更新這t+l個Hashl丈據;1223)判斷數據對象是否全部處理完畢,如果沒有,返回步驟1221)繼續(xù)執(zhí)行;如果所有數據對象均已處理,則進行Hash計算后續(xù)處理,輸出最終Hash數據矩陣。6.如權利要求5所述的細粒度數據完整性檢驗方法,其特征在于步驟2)具體包括如下步驟21)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,相同的標記為X,不同的標記為Y,得到比較矩陣S,所述X與Y為不相同的數值;22)搜索比較矩陣S中滿足Sj,0=Y和Sj,產Y的所有i、j值,將i、j值任意組合,對任一(i,j)組合取Z-2,3,......,t,對每個/值,尋找出滿足1^+(/-1^〗=1的k值;23)對每個(i,j)組合,若存在某個k,Sk,廣X,則判定第ixq+j+l個數據對象與源數據對象相符,否則,判定該數據對象與源數據對象不相符。7.如權利要求6所述的細粒度數據完整性檢驗方法,其特征在于所述步驟23)中還包括指示出錯的數據對象并輸出的步驟。全文摘要本發(fā)明提供一種具有較高壓縮率、較低錯誤放大率的細粒度數據完整性檢驗方法,包括如下步驟1)對源數據對象和待檢驗數據對象分別執(zhí)行如下步驟,分別獲得源數據對象和待檢驗數據對象的Hash數據矩陣11)將數據對象組織為至少一個數據方陣;12)對同一數據方陣中的數據對象進行重復交叉組合,組成多個數據序列,對每個數據序列進行單向Hash計算,獲得數據對象的Hash數據矩陣,使每個數據對象參與多個Hash數據運算,每個Hash數據由多個數據對象計算獲得;2)對源數據對象的Hash數據矩陣和待檢驗數據對象的Hash數據矩陣中的對應元素進行比對,根據比較結果判斷待檢驗數據對象與源數據對象是否相同。文檔編號G06F21/00GK101582106SQ20091010414公開日2009年11月18日申請日期2009年6月19日優(yōu)先權日2009年6月19日發(fā)明者方新蕾,王國胤,龍陳申請人:重慶郵電大學