本發(fā)明涉及區(qū)塊鏈技術(shù)領(lǐng)域,尤其涉及一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法、客戶端及區(qū)塊鏈云端設(shè)備。
背景技術(shù):
我們將區(qū)塊鏈技術(shù)作為基礎(chǔ),實現(xiàn)了去中心化且寓于分布式結(jié)構(gòu)的數(shù)據(jù)存儲、傳輸和證明的方法。在應(yīng)用區(qū)塊鏈技術(shù)進行數(shù)據(jù)存儲備份的系統(tǒng)中,數(shù)據(jù)的審計是一個很重要的問題。目前的審計方法,基本上有兩種,一種是通過實時回傳數(shù)據(jù)進行審計的方法,很顯然,這種方法對網(wǎng)絡(luò)帶寬的消耗比較大,實用性不強。第二種方法,將數(shù)據(jù)預(yù)先生成固定數(shù)量的校驗值發(fā)布到網(wǎng)絡(luò)進行驗證,這種方法的缺陷是每一次驗證都要消耗一個校驗值,一旦校驗值用完,將無法再進行有效驗證。
技術(shù)實現(xiàn)要素:
本發(fā)明提供的基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法、客戶端及區(qū)塊鏈云端設(shè)備,能夠?qū)崟r地驗證存儲文件的有效性,且驗證過程消耗較少的網(wǎng)絡(luò)帶寬資源。
第一方面,本發(fā)明提供一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法,所述方法應(yīng)用于客戶端,所述方法包括:
向區(qū)塊鏈云端上傳目標文件;
動態(tài)生成所述目標文件的審計樹;
根據(jù)所述審計樹,驗證所述目標文件的有效性。
可選地,在所述向區(qū)塊鏈云端上傳目標文件之前,所述方法還包括:
將所述目標文件進行切片,生成多個數(shù)據(jù)塊;
對各個數(shù)據(jù)塊進行加密處理。
可選地,所述向區(qū)塊鏈云端上傳目標文件包括:將經(jīng)過加密處理后的各個數(shù)據(jù)塊保存到區(qū)塊鏈云端的各個宿主節(jié)點上。
可選地,所述動態(tài)生成所述目標文件的審計樹包括:
為區(qū)塊鏈中各個宿主節(jié)點上存放的數(shù)據(jù)塊生成一個隨機數(shù);
將生成的各數(shù)據(jù)塊的隨機數(shù)與所述數(shù)據(jù)塊合并,生成一個哈希值;
將生成的哈希值依次合并,生成一棵完整的審計樹。
可選地,所述根據(jù)所述審計樹,驗證所述目標文件的有效性包括:
將生成的各數(shù)據(jù)塊的隨機數(shù)發(fā)送給對應(yīng)的各宿主節(jié)點;
接收所述各宿主節(jié)點發(fā)送的的哈希值;
將接收到的哈希值與所述審計樹中各宿主節(jié)點的哈希值進行對比;
判斷各數(shù)據(jù)塊是否有效,當對比一致時,所述數(shù)據(jù)塊有效;
驗證所述目標文件的有效性,當所有數(shù)據(jù)塊有效時,所述目標文件有效。
第二方面,本發(fā)明提供一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法,所述方法應(yīng)用于區(qū)塊鏈云端,所述方法包括:
接收客戶端上傳的目標文件;
接收客戶端發(fā)送的各數(shù)據(jù)塊的隨機數(shù);
將所述隨機數(shù)與對應(yīng)的數(shù)據(jù)塊合并,計算各宿主節(jié)點的哈希值;向客戶端發(fā)送所述各宿主節(jié)點的哈希值,以使客戶端驗證各數(shù)據(jù)塊的有效性。
第三方面,本發(fā)明提供一種客戶端,所述客戶端包括:
上傳單元,用于向區(qū)塊鏈云端上傳目標文件;
生成單元,用于動態(tài)生成所述目標文件的審計樹;
第一驗證單元,用于根據(jù)所述審計樹,驗證所述目標文件的有效性。
可選地,所述客戶端還包括:
切片單元,用于在所述上傳單元上傳所述目標文件之前,將所述目標文件進行切片,生成多個數(shù)據(jù)塊;
加密單元,用于對所述切片單元生成的各個數(shù)據(jù)塊進行加密處理。
可選地,所述上傳單元,用于將經(jīng)過所述加密單元加密處理后的各個數(shù)據(jù)塊保存到區(qū)塊鏈云端的各個宿主節(jié)點上。
可選地,所述生成單元包括:
第一生成模塊,用于為區(qū)塊鏈中各個宿主節(jié)點上存放的數(shù)據(jù)塊生成一個隨機數(shù);
第二生成模塊,用于將所述第一生成模塊生成的各數(shù)據(jù)塊的隨機數(shù)與所述數(shù)據(jù)塊合并,生成一個哈希值;
第三生成模塊,用于將所述第二生成模塊生成的哈希值依次合并,生成一顆完整的審計樹。
可選地,所述第一驗證單元包括:
發(fā)送模塊,用于將生成的各數(shù)據(jù)塊的隨機數(shù)發(fā)送給對應(yīng)的各宿主節(jié)點;
接收模塊,用于接收所述各宿主節(jié)點發(fā)送的哈希值;
第一對比模塊,用于將接收到的哈希值與所述審計樹中各宿主節(jié)點的哈希值進行對比;
第一判斷模塊,用于判斷各數(shù)據(jù)塊是否有效,當所述第一對比模塊對比的結(jié)果一致時,所述數(shù)據(jù)塊有效;
驗證模塊,用于驗證所述目標文件的有效性,當所有數(shù)據(jù)塊有效時,所述目標文件有效。
第四方面,本發(fā)明提供一種區(qū)塊鏈云端設(shè)備,所述區(qū)塊鏈云端設(shè)備包括:
第一接收單元,用于接收客戶端上傳的目標文件;
第二接收單元,用于接收客戶端發(fā)送的各數(shù)據(jù)塊的隨機數(shù);
計算單元,用于將所述隨機數(shù)與對應(yīng)的數(shù)據(jù)塊合并,計算各宿主節(jié)點的哈希值;
發(fā)送單元,用于向客戶端發(fā)送所述各宿主節(jié)點的哈希值,以使客戶端驗證各數(shù)據(jù)塊的有效性。
本發(fā)明實施例提供的基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法、客戶端及區(qū)塊鏈云端設(shè)備,通過客戶端實時生成目標文件的審計樹,再將審計樹經(jīng)特定處理后發(fā)布到區(qū)塊鏈中,然后根據(jù)需要向宿主備份節(jié)點發(fā)起審計,從而使客戶端、宿主端根據(jù)審計樹完成存儲文件的有效性驗證。與現(xiàn)有技術(shù)相比,本發(fā)明能夠隨時發(fā)起對存儲文件的驗證,并且驗證過程消耗較少的網(wǎng)絡(luò)帶寬資源。
附圖說明
圖1為本發(fā)明一實施例基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法的流程圖;
圖2為本發(fā)明另一實施例基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法的流程圖;
圖3為本發(fā)明生成審計樹的實現(xiàn)方式示意圖;
圖4為本發(fā)明一實施例客戶端的結(jié)構(gòu)示意圖;
圖5為本發(fā)明一實施例客戶端的生成單元的結(jié)構(gòu)示意圖;
圖6為本發(fā)明一實施例客戶端的第一驗證單元的結(jié)構(gòu)示意圖;
圖7為本發(fā)明一實施例客戶端的結(jié)構(gòu)示意圖;
圖8為本發(fā)明一實施例區(qū)塊鏈云端設(shè)備的結(jié)構(gòu)示意圖;
圖9為本發(fā)明一實施例區(qū)塊鏈云端設(shè)備的結(jié)構(gòu)示意圖;
圖10為本發(fā)明一實施例區(qū)塊鏈云端設(shè)備的第二驗證單元結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明提供一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法,所述方法應(yīng)用于客戶端,如圖1所示,所述方法包括:
s11、向區(qū)塊鏈云端上傳目標文件;
s12、生成所述目標文件的審計樹;
s13、根據(jù)所述審計樹,驗證所述目標文件的有效性。
本發(fā)明提供一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法,所述方法應(yīng)用于區(qū)塊鏈云端,如圖2所示,所述方法包括:
s21、接收客戶端上傳的目標文件;
s22、接收客戶端發(fā)送的各數(shù)據(jù)塊的隨機數(shù);
s23、將所述隨機數(shù)與對應(yīng)的數(shù)據(jù)塊合并,計算各宿主節(jié)點的哈希值;
s24、向客戶端返回所述隨機數(shù)對應(yīng)的各宿主節(jié)點的哈希值,以使客戶端驗證各數(shù)據(jù)塊的有效性。
本發(fā)明實施例提供的基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法,通過客戶端實時生成目標文件的審計樹,再將審計樹經(jīng)特定處理后發(fā)布到區(qū)塊鏈中,然后根據(jù)需要向宿主備份節(jié)點發(fā)起審計,從而使客戶端、宿主端根據(jù)審計樹完成存儲文件的有效性驗證。與現(xiàn)有技術(shù)相比,本發(fā)明能夠隨時發(fā)起對存儲文件的驗證,并且驗證過程消耗較少的網(wǎng)絡(luò)帶寬資源。
具體地,用戶通過客戶端向區(qū)塊鏈云端上傳一個文件,為了保證區(qū)塊鏈云端保存的文件數(shù)據(jù)不被篡改,客戶端需要經(jīng)常驗證文件的有效性。本發(fā)明提供的基于區(qū)塊鏈技術(shù)的數(shù)據(jù)審計方法的具體實現(xiàn)步驟如下:
步驟一、用戶通過客戶端上傳一個文件,系統(tǒng)會把文件進行切片分割成若干個數(shù)據(jù)塊,每個數(shù)據(jù)塊單獨加密,然后保存到互聯(lián)網(wǎng)上其他用戶貢獻出來的硬盤空間上。其中,貢獻硬盤空間的用戶節(jié)點在此成為宿主節(jié)點。
步驟二、客戶端每次要驗證文件時,為每個宿主節(jié)點(i)上存放的數(shù)據(jù)塊(i)生成一個隨機數(shù)(i),再將隨機數(shù)(i)與數(shù)據(jù)塊(i)合并,生成一個哈希值(i),然后依次合并,最終生成一顆完整的merkle樹(審計樹),實現(xiàn)方式描述如圖3所示。
步驟三、客戶端將merkle樹刪除葉子節(jié)點(哈希值0、哈希值1、哈希值2、哈希值3這一層)后發(fā)布到網(wǎng)絡(luò)上,各宿主節(jié)點以此驗證客戶端。驗證方法是,對比動態(tài)計算的根哈希值和客戶端發(fā)布的根哈希值,一致則表示客戶端是可信的。
步驟四、客戶端向宿主節(jié)點(i)驗證數(shù)據(jù)塊(i)時,將隨機數(shù)(i)發(fā)送給宿主節(jié)點(i),然后對比宿主節(jié)點(i)返回的哈希值(i)即可判定該數(shù)據(jù)塊的有效性。
步驟五、當所有數(shù)據(jù)塊驗證有效時,確定整個文件的有效性。
本發(fā)明實施例還提供一種客戶端,如圖4所示,所述客戶端包括:
上傳單元11,用于向區(qū)塊鏈云端上傳目標文件;
生成單元12,用于生成所述目標文件的審計樹;
第一驗證單元13,用于根據(jù)所述審計樹,驗證所述目標文件的有效性。
可選地,如圖5所示,所述客戶端還包括:
切片單元14,用于在所述上傳單元11上傳所述目標文件之前,將所述目標文件進行切片,生成多個數(shù)據(jù)塊;
加密單元15,用于對所述切片單元生成的各個數(shù)據(jù)塊進行加密處理。
可選地,如圖6所示,所述生成單元12包括:
第一生成模塊121,用于為區(qū)塊鏈中各個宿主節(jié)點上存放的數(shù)據(jù)塊生成一個隨機數(shù);
第二生成模塊122,用于將所述第一生成模塊121生成的各數(shù)據(jù)塊的隨機數(shù)與所述數(shù)據(jù)塊合并,生成一個哈希值;
第三生成模塊123,用于將所述第二生成模塊122生成的哈希值依次合并,生成一顆完整的審計樹。
可選地,如圖7所示,所述第一驗證單元13包括:
發(fā)送模塊131,用于將生成的各數(shù)據(jù)塊的隨機數(shù)發(fā)送給對應(yīng)的各宿主節(jié)點;
接收模塊132,用于接收所述各宿主節(jié)點發(fā)送的哈希值;
第一對比模塊133,用于將所述接收模塊132接收到的哈希值與所述審計樹中各宿主節(jié)點的哈希值進行對比;
第一判斷模塊134,用于判斷各數(shù)據(jù)塊是否有效,當所述第一對比模塊133對比的結(jié)果一致時,所述數(shù)據(jù)塊有效;
驗證模塊135,用于驗證所述目標文件的有效性,當所有數(shù)據(jù)塊有效時,所述目標文件有效。
可選地,如圖5所示,所述客戶端還包括:
發(fā)布單元16,用于在所述生成單元生成所述目標文件的審計樹之后,將所述審計樹刪除葉子節(jié)點后發(fā)布到網(wǎng)絡(luò)上,以使所述區(qū)塊鏈云端驗證客戶端的可信性。
本發(fā)明實施例還提供一種區(qū)塊鏈云端設(shè)備,如圖8所示,所述區(qū)塊鏈云端設(shè)備包括:
第一接收單元21,用于接收客戶端上傳的目標文件;
第二接收單元22,用于接收客戶端發(fā)送的各數(shù)據(jù)塊的隨機數(shù);
計算單元23,用于將所述隨機數(shù)與對應(yīng)的數(shù)據(jù)塊合并,計算各宿主節(jié)點的哈希值;
發(fā)送單元24,用于向客戶端發(fā)送所述各宿主節(jié)點的哈希值,以使客戶端驗證各數(shù)據(jù)塊的有效性。
可選地,如圖9所示,所述區(qū)塊鏈云端設(shè)備還包括:
第二驗證單元25,用于在所述第二接收單元23接收客戶端發(fā)送的各數(shù)據(jù)塊的隨機數(shù)之后,驗證客戶端的可信性。
可選地,如圖10所示,所述第二驗證單元25包括:
第二對比模塊251,用于將所述客戶端發(fā)布的審計樹的哈希值與宿主節(jié)點回傳的哈希值進行對比;
第二判斷模塊252,用于判斷所述客戶端是否可信,當所述第二對比模塊對比的結(jié)果一致時,判定所述客戶端可信且不可抵賴。
本發(fā)明實施例提供的客戶端及區(qū)塊鏈云端設(shè)備,通過客戶端實時生成目標文件的審計樹,再將審計樹經(jīng)特定處理后發(fā)布到區(qū)塊鏈中,然后根據(jù)需要向宿主備份節(jié)點發(fā)起審計,從而使客戶端、宿主端根據(jù)審計樹完成存儲文件的有效性驗證。與現(xiàn)有技術(shù)相比,本發(fā)明能夠隨時發(fā)起對存儲文件的驗證,并且驗證過程消耗較少的網(wǎng)絡(luò)帶寬資源。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。