一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法
【專利摘要】本發(fā)明公開了一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法。其步驟為:1、讀取文件內(nèi)容,2、計(jì)算文件元數(shù)據(jù),3、判斷是否滿足分塊條件,4、計(jì)算模糊哈希值,5、壓縮模糊哈希值,6、計(jì)算索引相似度,7、比對(duì)模糊哈希值,8、判斷是否存在重復(fù)的數(shù)據(jù)塊哈希值,9、進(jìn)行塊級(jí)的文件所有權(quán)證明,10、發(fā)送不重復(fù)的數(shù)據(jù)塊序號(hào),10、上傳不重復(fù)的數(shù)據(jù)塊。本發(fā)明克服了現(xiàn)有技術(shù)中上傳和存儲(chǔ)完整文件、按比特串長(zhǎng)度對(duì)文件進(jìn)行等長(zhǎng)劃分,內(nèi)容相似但首尾未對(duì)齊的文件無(wú)法被識(shí)別出重復(fù)數(shù)據(jù)帶來(lái)的缺陷,降低了網(wǎng)絡(luò)上傳帶寬和服務(wù)器存儲(chǔ)空間的開銷,提高了重復(fù)數(shù)據(jù)刪除率。
【專利說(shuō)明】
一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,進(jìn)一步涉及信息安全技術(shù)領(lǐng)域中的一種支持模糊匹 配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法。本發(fā)明用于支持相似文件去重復(fù)數(shù)據(jù)的云存儲(chǔ)系統(tǒng),不僅可 提高重復(fù)數(shù)據(jù)刪除率,降低網(wǎng)絡(luò)上傳帶寬,同時(shí)還節(jié)省云存儲(chǔ)服務(wù)器存儲(chǔ)空間開銷。
【背景技術(shù)】
[0002] 隨著云存儲(chǔ)服務(wù)的普及,用戶存儲(chǔ)的數(shù)據(jù)量呈現(xiàn)出爆炸性的增長(zhǎng)。為了能夠最大 地利用網(wǎng)絡(luò)上傳帶寬,降低服務(wù)器端存儲(chǔ)空間開銷,云存儲(chǔ)服務(wù)提供商需要盡力避免重復(fù) 數(shù)據(jù)的上傳。重復(fù)數(shù)據(jù)刪除是目前云存儲(chǔ)系統(tǒng)廣泛采用的技術(shù)手段,對(duì)于相同內(nèi)容的文件 或數(shù)據(jù)塊,云存儲(chǔ)服務(wù)器只保留一個(gè)拷貝。該技術(shù)一般將文件的密碼學(xué)哈希值作為該文件 的壓縮表示,云存儲(chǔ)服務(wù)器通過比對(duì)哈希值來(lái)確定文件是否重復(fù),而用戶只需要向云存儲(chǔ) 服務(wù)器上傳非重復(fù)的文件。
[0003] 華為技術(shù)有限公司在其擁有的專利技術(shù)"重復(fù)數(shù)據(jù)刪除方法及裝置"(申請(qǐng)?zhí)枺?201280000863.8,公開號(hào):CN 103154950A)中公開了一種重復(fù)數(shù)據(jù)刪除的方法。該方法包 括:查詢數(shù)據(jù)塊文件中是否存在與修改后的數(shù)據(jù)塊相同的數(shù)據(jù)塊,生成查詢結(jié)果;根據(jù)查詢 結(jié)果識(shí)別到數(shù)據(jù)塊文件中存在與修改后的數(shù)據(jù)塊相同的數(shù)據(jù)塊時(shí),根據(jù)數(shù)據(jù)塊文件對(duì)修改 后的數(shù)據(jù)塊的索引進(jìn)行更新;根據(jù)查詢結(jié)果識(shí)別到數(shù)據(jù)塊文件中不存在與修改后的數(shù)據(jù)塊 相同的數(shù)據(jù)塊時(shí),將修改后的數(shù)據(jù)塊添加到數(shù)據(jù)塊文件中,并根據(jù)添加后的數(shù)據(jù)塊文件對(duì) 修改后的數(shù)據(jù)塊的索引進(jìn)行更新,從而實(shí)現(xiàn)對(duì)修改后的重復(fù)數(shù)據(jù)的刪除,提高了重復(fù)數(shù)據(jù) 的刪除效果。但是,該方法仍然存在的不足之處:超大文件的數(shù)據(jù)塊級(jí)去重復(fù)效率低下,內(nèi) 容相似但首尾未對(duì)齊的兩個(gè)文件無(wú)法識(shí)別出相互之間重復(fù)的數(shù)據(jù)區(qū)塊。
[0004] Bellare M,Keelveedhi S and Ristenpart T在其發(fā)表的論文"Message-Locked Encryption and Secure Dedup1icat ion"( In Proceedings of 32nd Annual International Conference on the Theory and Applications of Cryptographic Techniques,Athens,2013:296-312.)中提出了一種方法。該方法將收斂加密(CE)作為鎖定 消息加密(MLE)框架中的一個(gè)特例應(yīng)用在重復(fù)數(shù)據(jù)刪除技術(shù)中,極大的提升了數(shù)據(jù)的保密 性,但是,方法仍然存在的不足之處是,服務(wù)器僅根據(jù)不重復(fù)的哈希值就要求用戶上傳整個(gè) 文件,增加了網(wǎng)絡(luò)上傳帶寬和存儲(chǔ)空間開銷,同時(shí)產(chǎn)生了大量的收斂密鑰,增加了密鑰管理 成本。隨后,又有一部分方案基于該思想設(shè)計(jì)了加密文件的重復(fù)數(shù)據(jù)刪除方法。這類方法的 缺點(diǎn)是利用傳統(tǒng)密碼學(xué)哈希函數(shù)(如MD5,SHA-1)對(duì)文件內(nèi)容進(jìn)行處理,按比特串長(zhǎng)度對(duì)文 件數(shù)據(jù)進(jìn)行等長(zhǎng)劃分,即使只改變文件的一個(gè)比特,輸出結(jié)果也有可能完全不同,使得修改 后的文件與原文件之間的重復(fù)數(shù)據(jù)無(wú)法被識(shí)別出來(lái),導(dǎo)致去重復(fù)率嚴(yán)重下降。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是針對(duì)上述現(xiàn)有技術(shù)的不足,提出一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù) 去重復(fù)方法。
[0006] 為了實(shí)現(xiàn)本發(fā)明目的的具體思路是:采用內(nèi)存映射文件方法,逐字節(jié)地讀取任意 大小的文件,提高了計(jì)算效率。利用模糊哈希方法,根據(jù)文件的實(shí)際內(nèi)容逐字節(jié)地進(jìn)行分塊 哈希,得到文件的模糊哈希值,克服對(duì)等長(zhǎng)劃分的文件進(jìn)行傳統(tǒng)的密碼學(xué)哈希函數(shù)處理帶 來(lái)的缺陷。通過模糊匹配方式,盡可能識(shí)別相似文件數(shù)據(jù)塊的重復(fù)數(shù)據(jù),從而提高了重復(fù)數(shù) 據(jù)刪除率。通過塊級(jí)的文件所有權(quán)證明協(xié)議,驗(yàn)證用戶是否真的擁有重復(fù)的文件數(shù)據(jù)塊,增 強(qiáng)了用戶數(shù)據(jù)的安全性。最后,用戶只需上傳不重復(fù)的文件數(shù)據(jù)塊到云存儲(chǔ)服務(wù)器中,降低 了上傳帶寬和存儲(chǔ)空間開銷。
[0007] 本發(fā)明的具體步驟包括如下:
[0008] (1)采用內(nèi)存映射文件方法,逐字節(jié)地讀取待模糊匹配文件的內(nèi)容;
[0009] (la)計(jì)算機(jī)操作系統(tǒng)在待模糊匹配文件中創(chuàng)建映射內(nèi)核對(duì)象,讀取文件的字節(jié) 數(shù),設(shè)置操作系統(tǒng)的分頁(yè)粒度;
[0010] (lb)計(jì)算機(jī)操作系統(tǒng)將待模糊匹配文件的映射內(nèi)核對(duì)象全部映射到計(jì)算機(jī)的進(jìn) 程地址空間;
[0011] (lc)判斷是否讀取完待模糊匹配文件的所有字節(jié)數(shù),若是,則執(zhí)行步驟(Id),否 則,執(zhí)行步驟(la);
[0012] (Id)計(jì)算機(jī)操作系統(tǒng)釋放待模糊匹配文件的映射內(nèi)核對(duì)象;
[0013] (2)計(jì)算文件元數(shù)據(jù):
[0014] (2a)采用滾動(dòng)哈希算法,計(jì)算待模糊匹配文件的字節(jié),得到待模糊匹配文件字節(jié) 的校驗(yàn)和:
[0015] s = x+y+w
[0016] 其中,s表示待模糊匹配文件字節(jié)的校驗(yàn)和,X表示在一個(gè)長(zhǎng)度為7的滾動(dòng)窗口內(nèi)的 待模糊匹配文件的所有字節(jié)數(shù)之和,y表示待模糊匹配文件的字節(jié)數(shù)與滾動(dòng)窗口長(zhǎng)度的乘 積,w表示待模糊匹配文件的字節(jié)數(shù)與常數(shù)32的乘積;
[0017] (2b)按照下式,計(jì)算待模糊匹配文件的分塊長(zhǎng)度:
[0018] b = bmin*2k
[0019] 其中,b表示待模糊匹配文件的分塊長(zhǎng)度,bmin表示待模糊匹配文件的分塊長(zhǎng)度b的 最小值,缺省情況下b min = 3,*表示乘法操作,k表示待模糊匹配文件的分塊長(zhǎng)度的擴(kuò)大系 li,0<k< 14;
[0020] (3)判斷當(dāng)前待模糊匹配文件字節(jié)的校驗(yàn)和是否滿足分塊條件,若是,則執(zhí)行步驟 (4),否則,執(zhí)行步驟(2);
[0021] (4)計(jì)算模糊哈希值:
[0022] (4a)將滿足分塊條件的待模糊匹配文件的字節(jié)作為文件的分割點(diǎn),記錄該分割點(diǎn) 在待模糊匹配文件中的位置;
[0023] (4b)使用哈希函數(shù)FNV hash計(jì)算待模糊匹配文件的分塊內(nèi)容,得到模糊哈希值hi |h2| |···| |lu| |…| |1111,1已{1,2,一,11},其中,111表示待模糊匹配文件的第1個(gè)分塊哈希值, i表示待模糊匹配文件的分塊序號(hào),η表示待模糊匹配文件的分塊個(gè)數(shù),I I表示拼接操作; [0024] (5)壓縮模糊哈希值:
[0025] 采用Base64編碼處理模糊哈希值,得到由32~64個(gè)字符組成的字符串,將該字符 串作為模糊哈希值的索引;
[0026] (6)按照下式,計(jì)算用戶上傳的索引和云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的相似度;
[0028]其中,Μ表示用戶上傳的索引與云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的相似度,Dmin表示用戶 上傳的索引與云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的最小編輯距離,Max表示作最大值操作,L1表示用 戶上傳索引的長(zhǎng)度,L2表示云存儲(chǔ)數(shù)據(jù)庫(kù)中的索引長(zhǎng)度,*表示乘法操作;
[0029] (7)比對(duì)模糊哈希值:
[0030] (7a)服務(wù)器從云存儲(chǔ)數(shù)據(jù)庫(kù)中,選取與用戶上傳索引的相似度最高的目標(biāo)索引;
[0031] (7b)服務(wù)器在云存儲(chǔ)數(shù)據(jù)庫(kù)中查找出目標(biāo)索引對(duì)應(yīng)的目標(biāo)模糊哈希值h/ I Ih/ ???I Ih/ I |···| |hn〃,1已{1,2,一,11/},其中,111/表示目標(biāo)文件的第1個(gè)分塊哈希值,1表示 目標(biāo)文件的分塊序號(hào),n'表示目標(biāo)文件的分塊個(gè)數(shù),I I表示拼接操作;
[0032] (7c)服務(wù)器將用戶上傳的模糊哈希值與云存儲(chǔ)數(shù)據(jù)庫(kù)中的目標(biāo)模糊哈希值進(jìn)行 比對(duì);
[0033] (8)判斷在目標(biāo)模糊哈希值中是否存在與用戶上傳的模糊哈希值重復(fù)的數(shù)據(jù)塊哈 希值,若是,則執(zhí)行步驟(9),否則,執(zhí)行步驟(10);
[0034] (9)進(jìn)行塊級(jí)的文件所有權(quán)證明:
[0035] (9a)按照下式,計(jì)算重復(fù)數(shù)據(jù)塊哈希值的詢問信息:
[0036] |H2| I …I |Hj| I …I |Hm)
[0037] 其中,c表示重復(fù)數(shù)據(jù)塊哈希值的詢問信息,f\表示偽隨機(jī)函數(shù),τ表示偽隨機(jī)函數(shù) f τ的安全參數(shù),氏表示第j個(gè)重復(fù)的數(shù)據(jù)塊哈希值,j表示重復(fù)的數(shù)據(jù)塊序號(hào),j e {1,2,…, m},m表示重復(fù)的數(shù)據(jù)塊個(gè)數(shù);
[0038] (9b)服務(wù)器將重復(fù)數(shù)據(jù)塊哈希值的詢問信息發(fā)送給用戶;
[0039] (9c)用戶接收重復(fù)數(shù)據(jù)塊哈希值的詢問信息,從待模糊匹配文件中查找對(duì)應(yīng)的重 復(fù)文件數(shù)據(jù)塊;
[0040] (9d)按照下式,計(jì)算重復(fù)文件數(shù)據(jù)塊的證明信息:
[0041] p = fT(bi | | b21 | …| | bj | | …| | bm)
[0042] 其中,p表示重復(fù)文件數(shù)據(jù)塊的證明信息,表示偽隨機(jī)函數(shù),τ表示偽隨機(jī)函數(shù) 的安全參數(shù),bj表示第j個(gè)重復(fù)的文件數(shù)據(jù)塊,j表示重復(fù)數(shù)據(jù)塊的序號(hào),j e {1,2,…,m},m 表示重復(fù)數(shù)據(jù)塊的個(gè)數(shù);
[0043] (9e)用戶將重復(fù)文件數(shù)據(jù)塊的證明信息發(fā)送給服務(wù)器;
[0044] (9f)服務(wù)器接收重復(fù)文件數(shù)據(jù)塊的證明信息,利用重復(fù)數(shù)據(jù)塊哈希值的詢問信息 對(duì)重復(fù)文件數(shù)據(jù)塊的證明信息進(jìn)行驗(yàn)證,證明用戶確實(shí)擁有這些文件內(nèi)容;
[0045] (10)服務(wù)器將不重復(fù)的數(shù)據(jù)塊序號(hào)發(fā)送給用戶;
[0046] (11)上傳不重復(fù)的數(shù)據(jù)塊:
[0047] 用戶接收不重復(fù)的數(shù)據(jù)塊序號(hào),利用不重復(fù)的數(shù)據(jù)塊序號(hào)以及分割點(diǎn)在待模糊匹 配文件中的位置,從待模糊匹配文件中查找不重復(fù)的文件數(shù)據(jù)塊,將不重復(fù)的文件數(shù)據(jù)塊、 用戶保存的文件元數(shù)據(jù),以及索引一起上傳給服務(wù)器。
[0048] 本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):
[0049] 第一,由于本發(fā)明采用了模糊哈希方法,根據(jù)文件的實(shí)際內(nèi)容逐字節(jié)地進(jìn)行分塊 哈希,得到文件的模糊哈希值,以便對(duì)文件數(shù)據(jù)塊進(jìn)行模糊匹配,查找每個(gè)數(shù)據(jù)塊的重復(fù)數(shù) 據(jù),克服了現(xiàn)有技術(shù)中僅按照比特串長(zhǎng)度對(duì)文件進(jìn)行數(shù)據(jù)塊的等長(zhǎng)劃分,導(dǎo)致首尾未對(duì)齊 的文件無(wú)法被識(shí)別出重復(fù)數(shù)據(jù)的缺陷,使得本發(fā)明具有識(shí)別相似文件重復(fù)數(shù)據(jù),提高重復(fù) 數(shù)據(jù)刪除效率的優(yōu)點(diǎn)。
[0050] 第二,由于本發(fā)明只需上傳和存儲(chǔ)未重復(fù)的文件數(shù)據(jù)塊及其元數(shù)據(jù),克服了現(xiàn)有 技術(shù)中僅根據(jù)不重復(fù)的哈希值就上傳和存儲(chǔ)完整文件而浪費(fèi)上傳帶寬和存儲(chǔ)空間的不足, 使得本發(fā)明具有降低網(wǎng)絡(luò)上傳帶寬,減少存儲(chǔ)空間開銷的優(yōu)點(diǎn)。
[0051] 第三,由于本發(fā)明采用內(nèi)存映射文件技術(shù),逐字節(jié)讀取任意大小的文件,克服了現(xiàn) 有技術(shù)中對(duì)超大文件去重復(fù)效率低的不足,使得本發(fā)明具有快速進(jìn)行大規(guī)模計(jì)算,降低用 戶計(jì)算時(shí)間的優(yōu)點(diǎn)。
【附圖說(shuō)明】
[0052]圖1為本發(fā)明的流程圖。
【具體實(shí)施方式】
[0053]下面結(jié)合附圖1對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。
[0054]步驟1,采用內(nèi)存映射文件方法,逐字節(jié)地讀取待模糊匹配文件的內(nèi)容。
[0055] 計(jì)算機(jī)操作系統(tǒng)在待模糊匹配文件中創(chuàng)建映射內(nèi)核對(duì)象,讀取文件的字節(jié)數(shù),設(shè) 置操作系統(tǒng)的分頁(yè)粒度;
[0056] 計(jì)算機(jī)操作系統(tǒng)將待模糊匹配文件的映射內(nèi)核對(duì)象全部映射到計(jì)算機(jī)的進(jìn)程地 址空間;
[0057] 如果計(jì)算機(jī)操作系統(tǒng)讀取完待模糊匹配文件的所有字節(jié)數(shù),則釋放待模糊匹配文 件的映射內(nèi)核對(duì)象,否則,繼續(xù)讀取文件字節(jié)數(shù)。
[0058] 步驟2,計(jì)算待模糊匹配文件的元數(shù)據(jù)。
[0059]采用滾動(dòng)哈希算法,計(jì)算待模糊匹配文件的字節(jié),得到待模糊匹配文件字節(jié)的校 驗(yàn)和:
[0060] s = x+y+w
[0061 ]其中,s表示待模糊匹配文件字節(jié)的校驗(yàn)和,X表示在一個(gè)長(zhǎng)度為7的滾動(dòng)窗口內(nèi)的 待模糊匹配文件的所有字節(jié)數(shù)之和,y表示待模糊匹配文件的字節(jié)數(shù)與滾動(dòng)窗口長(zhǎng)度的乘 積,w表示待模糊匹配文件的字節(jié)數(shù)與常數(shù)32的乘積。
[0062] 按照下式,計(jì)算待模糊匹配文件的分塊長(zhǎng)度:
[0063] b = bmin*2k
[0064] 其中,b表示待模糊匹配文件的分塊長(zhǎng)度,bmin表示待模糊匹配文件的分塊長(zhǎng)度b的 最小值,缺省情況下b min = 3,*表示乘法操作,k表示待模糊匹配文件的分塊長(zhǎng)度的擴(kuò)大系 數(shù),0<k<14〇
[0065] 本發(fā)明實(shí)施例中的文件分塊長(zhǎng)度b是由待模糊匹配文件的字節(jié)數(shù)來(lái)決定,如果待 模糊匹配文件總共只有少數(shù)幾個(gè)字節(jié),或者文件中的字節(jié)沒有滿足分塊條件,那么對(duì)待模 糊匹配文件的處理就退化成了傳統(tǒng)的全文哈希,為了避免這個(gè)問題,設(shè)置了一個(gè)最小的分 塊長(zhǎng)度b min = 3,使得本發(fā)明能夠?qū)θ魏吻闆r下的文件都能進(jìn)行分片哈希,同時(shí)為了最優(yōu)地 對(duì)待模糊匹配文件的進(jìn)行分片哈希,設(shè)置分塊長(zhǎng)度b不大于49152,由待模糊匹配文件字節(jié) 的校驗(yàn)和s與待模糊匹配文件的分塊長(zhǎng)度b做取模操作來(lái)控制待模糊匹配文件的分塊條件。
[0066] 步驟3,判斷當(dāng)前待模糊匹配文件字節(jié)的校驗(yàn)和是否滿足分塊條件,若是,則執(zhí)行 步驟4;否則,執(zhí)行步驟2。
[0067] 本發(fā)明分塊條件是指滿足以下條件之一的情形:
[0068] 條件1,s mod b = b_l
[0069] 條件2,s mod(2*b)=2*b_l
[0070] 其中,s表示當(dāng)前待模糊匹配文件字節(jié)的校驗(yàn)和,mod表示取余操作,b表示待模糊 匹配文件的分塊長(zhǎng)度,*表示乘法操作。
[0071 ]步驟4,計(jì)算待模糊匹配文件的模糊哈希值。
[0072] 將滿足分塊條件的待模糊匹配文件的字節(jié)作為文件的分割點(diǎn),記錄該分割點(diǎn)在待 模糊匹配的文件中的位置。
[0073] 根據(jù)分割點(diǎn)的位置對(duì)待模糊匹配文件進(jìn)行分塊。
[0074]使用哈希函數(shù)FNV hash計(jì)算每個(gè)數(shù)據(jù)塊,得到每個(gè)數(shù)據(jù)塊的哈希值。
[0075] 將每個(gè)文件數(shù)據(jù)塊的哈希值拼接在一起構(gòu)成待模糊匹配文件的模糊哈希值,In | h21 |…| |hi I I…I |hn,ie {1,2,···,n},其中,hi表示待模糊匹配文件的第i個(gè)分塊哈希值,i 表示待模糊匹配文件的分塊序號(hào),η表示待模糊匹配文件的分塊個(gè)數(shù),| |表示拼接操作。
[0076] 步驟5,壓縮待模糊匹配文件的模糊哈希值。
[0077]用戶只取每個(gè)數(shù)據(jù)塊哈希值的后6位,用Base64編碼分別對(duì)數(shù)據(jù)塊哈希值的后6位 進(jìn)行壓縮,得到對(duì)應(yīng)的字符。
[0078]將每個(gè)數(shù)據(jù)塊哈希值經(jīng)過壓縮后得到的字符拼接在一起,構(gòu)成一個(gè)由32~64個(gè)字 符組成的字符串,將該字符串作為待模糊匹配的文件模糊哈希值的索引。
[0079]本發(fā)明實(shí)施例中的Base64編碼是由64個(gè)ASCII碼構(gòu)成的字符集。
[0080] 步驟6,計(jì)算索引相似度。
[0081] 按照下式,計(jì)算用戶上傳的索引和云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的相似度:
[0083]其中,Μ表示用戶上傳的索引與云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的相似度,Dmin表示用戶 上傳的索引與云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的最小編輯距離,Max表示作最大值操作,L1表示用 戶上傳索引的長(zhǎng)度,L2表示云存儲(chǔ)數(shù)據(jù)庫(kù)中的索引長(zhǎng)度,*表示乘法操作。
[0084] 步驟7,比對(duì)模糊哈希值。
[0085] 服務(wù)器從云存儲(chǔ)數(shù)據(jù)庫(kù)中,選取與用戶上傳索引的相似度最高的目標(biāo)索引。
[0086] 服務(wù)器在云存儲(chǔ)數(shù)據(jù)庫(kù)中查找出目標(biāo)索引對(duì)應(yīng)的目標(biāo)模糊哈希值h/ | Ih/ | |…| h/ | |···| |hn〃,1三{1,2,一,11/},其中,111/表示目標(biāo)文件的第1個(gè)分塊哈希值,1表示目標(biāo)文 件的分塊序號(hào),n'表示目標(biāo)文件的分塊個(gè)數(shù),I I表示拼接操作。
[0087] 服務(wù)器將用戶上傳的模糊哈希值與云存儲(chǔ)數(shù)據(jù)庫(kù)中的目標(biāo)模糊哈希值進(jìn)行比對(duì)。
[0088] 步驟8,判斷在目標(biāo)模糊哈希值中是否存在與用戶上傳的模糊哈希值重復(fù)的數(shù)據(jù) 塊哈希值,若是,則執(zhí)行步驟9,否則,執(zhí)行步驟10。
[0089]步驟9,進(jìn)行塊級(jí)的文件所有權(quán)證明。
[0090] 按照下式,計(jì)算重復(fù)數(shù)據(jù)塊哈希值的詢問信息:
[0091] |h2| | …| |Hj| | …| |Hm)
[0092] 其中,c表示重復(fù)數(shù)據(jù)塊哈希值的詢問信息,f\表示偽隨機(jī)函數(shù),τ表示偽隨機(jī)函數(shù) f τ的安全參數(shù),氏表示第j個(gè)重復(fù)的數(shù)據(jù)塊哈希值,j表示重復(fù)的數(shù)據(jù)塊序號(hào),j e {1,2,…, m},m表示重復(fù)的數(shù)據(jù)塊個(gè)數(shù)。
[0093] 服務(wù)器將重復(fù)數(shù)據(jù)塊哈希值的詢問信息發(fā)送給用戶。
[0094] 用戶接收重復(fù)數(shù)據(jù)塊哈希值的詢問信息,從待模糊匹配文件中查找對(duì)應(yīng)的重復(fù)文 件數(shù)據(jù)塊。
[0095]按照下式,計(jì)算重復(fù)文件數(shù)據(jù)塊的證明信息:
[0096] p = fT(bi | | b21 | …| | bj | | …| | bm)
[0097] 其中,p表示重復(fù)文件數(shù)據(jù)塊的證明信息,表示偽隨機(jī)函數(shù),τ表示偽隨機(jī)函數(shù) 的安全參數(shù),bj表示第j個(gè)重復(fù)的文件數(shù)據(jù)塊,j表示重復(fù)數(shù)據(jù)塊的序號(hào),j e {1,2,…,m},m 表示重復(fù)數(shù)據(jù)塊的個(gè)數(shù)。
[0098]用戶將重復(fù)文件數(shù)據(jù)塊的證明信息發(fā)送給服務(wù)器。
[0099] 服務(wù)器接收重復(fù)文件數(shù)據(jù)塊的證明信息,利用重復(fù)數(shù)據(jù)塊哈希值的詢問信息對(duì)重 復(fù)文件數(shù)據(jù)塊的證明信息進(jìn)行驗(yàn)證,證明用戶確實(shí)擁有這些文件內(nèi)容。
[0100] 步驟10,服務(wù)器將不重復(fù)的數(shù)據(jù)塊序號(hào)發(fā)送給用戶。
[0101]步驟11,上傳不重復(fù)的待模糊匹配的文件數(shù)據(jù)塊。
[0102] 用戶接收不重復(fù)的數(shù)據(jù)塊序號(hào),利用不重復(fù)的數(shù)據(jù)塊序號(hào)以及分割點(diǎn)在待模糊匹 配的文件中的位置,從待模糊匹配的文件中查找不重復(fù)的文件數(shù)據(jù)塊。
[0103] 用戶將不重復(fù)的文件數(shù)據(jù)塊、保存的文件元數(shù)據(jù),以及索引一起上傳給服務(wù)器。
[0104] 云存儲(chǔ)服務(wù)器將用戶上傳的數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中。
【主權(quán)項(xiàng)】
1. 一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法,包括以下具體步驟: (1) 采用內(nèi)存映射文件方法,逐字節(jié)地讀取待模糊匹配文件的內(nèi)容; (la) 計(jì)算機(jī)操作系統(tǒng)在待模糊匹配文件中創(chuàng)建映射內(nèi)核對(duì)象,讀取文件的字節(jié)數(shù),設(shè) 置操作系統(tǒng)的分頁(yè)粒度; (lb) 計(jì)算機(jī)操作系統(tǒng)將待模糊匹配文件的映射內(nèi)核對(duì)象全部映射到計(jì)算機(jī)的進(jìn)程地 址空間; (1C)判斷是否讀取完待模糊匹配文件的所有字節(jié)數(shù),若是,則執(zhí)行步驟(Id),否則,執(zhí) 行步驟(la); (Id)計(jì)算機(jī)操作系統(tǒng)釋放待模糊匹配文件的映射內(nèi)核對(duì)象; (2) 計(jì)算文件元數(shù)據(jù): (2a)采用滾動(dòng)哈希算法,計(jì)算待模糊匹配文件的字節(jié),得到待模糊匹配文件字節(jié)的校 驗(yàn)和: s = x+y+w 其中,S表示待模糊匹配文件字節(jié)的校驗(yàn)和,X表示在一個(gè)長(zhǎng)度為7的滾動(dòng)窗口內(nèi)的待模 糊匹配文件的所有字節(jié)數(shù)之和,y表示待模糊匹配文件的字節(jié)數(shù)與滾動(dòng)窗口長(zhǎng)度的乘積,w 表示待模糊匹配文件的字節(jié)數(shù)與常數(shù)32的乘積; (2b)按照下式,計(jì)算待模糊匹配文件的分塊長(zhǎng)度: b 一 bmin*2 其中,b表示待模糊匹配文件的分塊長(zhǎng)度,bmln表示待模糊匹配文件的分塊長(zhǎng)度b的最小 值,缺省情況下bmin = 3,*表示乘法操作,k表示待模糊匹配文件的分塊長(zhǎng)度的擴(kuò)大系數(shù),0< k< 14; (3) 判斷當(dāng)前待模糊匹配文件字節(jié)的校驗(yàn)和是否滿足分塊條件,若是,則執(zhí)行步驟(4), 否則,執(zhí)行步驟(2); (4) 計(jì)算模糊哈希值: (4a)將滿足分塊條件的待模糊匹配文件的字節(jié)作為文件的分割點(diǎn),記錄該分割點(diǎn)在待 模糊匹配文件中的位置; (4b)使用哈希函數(shù)FNV hash計(jì)算待模糊匹配文件的分塊內(nèi)容,得到模糊哈希值hi | |h21 …I |lu| I…I |1111,1已{1,2,一,11},其中,111表示待模糊匹配文件的第1個(gè)分塊哈希值,1表示 待模糊匹配文件的分塊序號(hào),n表示待模糊匹配文件的分塊個(gè)數(shù),I I表示拼接操作; (5) 壓縮模糊哈希值: 采用Base64編碼處理模糊哈希值,得到由32~64個(gè)字符組成的字符串,將該字符串作 為模糊哈希值的索引; (6) 按照下式,計(jì)算用戶上傳的索引和云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的相似度:其中,Μ表示用戶上傳的索引與云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的相似度,D_表示用戶上傳 的索引與云存儲(chǔ)數(shù)據(jù)庫(kù)中索引之間的最小編輯距離,Max表示作最大值操作,L1表示用戶上 傳索引的長(zhǎng)度,L2表示云存儲(chǔ)數(shù)據(jù)庫(kù)中的索引長(zhǎng)度,*表示乘法操作; (7) 比對(duì)模糊哈希值: (7a)服務(wù)器從云存儲(chǔ)數(shù)據(jù)庫(kù)中,選取與用戶上傳索引的相似度最高的目標(biāo)索引; (7b)服務(wù)器在云存儲(chǔ)數(shù)據(jù)庫(kù)中查找出目標(biāo)索引對(duì)應(yīng)的目標(biāo)模糊哈希值h/ | |h/ | |…| h/ I |···| |hn〃,${1,2,一,11/},其中,11/1表示目標(biāo)文件的第1個(gè)分塊哈希值,1表示目標(biāo)文 件的分塊序號(hào),n'表示目標(biāo)文件的分塊個(gè)數(shù),I I表示拼接操作; (7c)服務(wù)器將用戶上傳的模糊哈希值與云存儲(chǔ)數(shù)據(jù)庫(kù)中的目標(biāo)模糊哈希值進(jìn)行比對(duì); (8) 判斷在目標(biāo)模糊哈希值中是否存在與用戶上傳的模糊哈希值重復(fù)的數(shù)據(jù)塊哈希 值,若是,則執(zhí)行步驟(9),否則,執(zhí)行步驟(10); (9) 進(jìn)行塊級(jí)的文件所有權(quán)證明: (9a)按照下式,計(jì)算重復(fù)數(shù)據(jù)塊哈希值的詢問信息: ciMml |h2| | …| |Hj| | …| |Hm) 其中,c表示重復(fù)數(shù)據(jù)塊哈希值的詢問信息,fT表示偽隨機(jī)函數(shù),τ表示偽隨機(jī)函數(shù)^的 安全參數(shù),氏表示第j個(gè)重復(fù)的數(shù)據(jù)塊哈希值,j表示重復(fù)的數(shù)據(jù)塊序號(hào),j e {1,2,…,m},m 表示重復(fù)的數(shù)據(jù)塊個(gè)數(shù); (9b)服務(wù)器將重復(fù)數(shù)據(jù)塊哈希值的詢問信息發(fā)送給用戶; (9c)用戶接收重復(fù)數(shù)據(jù)塊哈希值的詢問信息,從待模糊匹配文件中查找對(duì)應(yīng)的重復(fù)文 件數(shù)據(jù)塊; (9d)按照下式,計(jì)算重復(fù)文件數(shù)據(jù)塊的證明信息: p = f\(bi | |b2| 卜·· | |bj | 卜·· | |bm) 其中,P表示重復(fù)文件數(shù)據(jù)塊的證明信息,?·τ表示偽隨機(jī)函數(shù),τ表示偽隨機(jī)函數(shù)^的安 全參數(shù),bj表示第j個(gè)重復(fù)的文件數(shù)據(jù)塊,j表示重復(fù)數(shù)據(jù)塊的序號(hào),j e {1,2,…,m},m表示 重復(fù)數(shù)據(jù)塊的個(gè)數(shù); (9e)用戶將重復(fù)文件數(shù)據(jù)塊的證明信息發(fā)送給服務(wù)器; (9f)服務(wù)器接收重復(fù)文件數(shù)據(jù)塊的證明信息,利用重復(fù)數(shù)據(jù)塊哈希值的詢問信息對(duì)重 復(fù)文件數(shù)據(jù)塊的證明信息進(jìn)行驗(yàn)證,證明用戶確實(shí)擁有這些文件內(nèi)容; (10) 服務(wù)器將不重復(fù)的數(shù)據(jù)塊序號(hào)發(fā)送給用戶; (11) 上傳不重復(fù)的數(shù)據(jù)塊: 用戶接收不重復(fù)的數(shù)據(jù)塊序號(hào),利用不重復(fù)的數(shù)據(jù)塊序號(hào)以及分割點(diǎn)在待模糊匹配文 件中的位置,從待模糊匹配文件中查找不重復(fù)的文件數(shù)據(jù)塊,將不重復(fù)的文件數(shù)據(jù)塊、用戶 保存的文件元數(shù)據(jù),以及索引一起上傳給服務(wù)器。2. 根據(jù)權(quán)利要求1所述的一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法,其特征在于,步 驟(3)中所述的分塊條件是指滿足以下條件之一的情形: 條件l,s mod b = b_l 條件2,s mod(2*b) = 2*b_l 其中,s表示待模糊匹配文件字節(jié)的校驗(yàn)和,mod表示取余操作,b表示待模糊匹配文件 的分塊長(zhǎng)度,*表示乘法操作。3. 根據(jù)權(quán)利要求1所述的一種支持模糊匹配的云存儲(chǔ)數(shù)據(jù)去重復(fù)方法,其特征在于,步 驟(5)中所述Base64編碼處理模糊哈希值的方法是指,只取每個(gè)數(shù)據(jù)塊哈希值的后6位,用 Base64編碼分別對(duì)數(shù)據(jù)塊哈希值的后6位進(jìn)行處理,得到一個(gè)由32~64個(gè)字符組成的字符 串,其中,Base64編碼是由64個(gè)ASCII碼構(gòu)成的字符集。
【文檔編號(hào)】G06F17/30GK105868305SQ201610176892
【公開日】2016年8月17日
【申請(qǐng)日】2016年3月25日
【發(fā)明人】張躍宇, 龐婷, 李暉, 陳杰, 王勇, 張?jiān)迄i
【申請(qǐng)人】西安電子科技大學(xué)