国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向去中心化存儲的數(shù)據(jù)流行度去重模型

2024-06-01 18:11汪彩梅聞琪略周子健盧建豪張琛吳志澤
計算機應用研究 2024年5期
關鍵詞:去中心化區(qū)塊鏈

汪彩梅 聞琪略 周子健 盧建豪 張琛 吳志澤

摘 要:數(shù)據(jù)流行度去重方案中存在檢測機構不誠實、數(shù)據(jù)存儲不可靠等問題,提出一種面向去中心化存儲的數(shù)據(jù)流行度去重模型。針對檢測機構不誠實,模型結合區(qū)塊鏈的不可竄改性與智能合約的不可抵賴性,將智能合約作為檢測機構執(zhí)行數(shù)據(jù)的重復性檢測和流行度檢測,保障了檢測結果的真實性。針對數(shù)據(jù)存儲不可靠問題,提出一種文件鏈存儲結構。該結構滿足數(shù)據(jù)流行度去重的要求,并通過添加輔助信息的方式,建立分布在不同存儲節(jié)點中實現(xiàn)物理/邏輯上傳的分片之間的邏輯關系,為流行度數(shù)據(jù)去中心化網(wǎng)絡存儲提供基礎;同時,在數(shù)據(jù)塊信息中添加備份標識,借助備份標識將存儲網(wǎng)絡劃分為兩個虛擬存儲空間,分別實現(xiàn)數(shù)據(jù)和備份數(shù)據(jù)的檢測與存儲,滿足了用戶備份需求。安全性分析和性能分析表明,該方案具有可行性,保障了檢測結果的真實性,并提高了數(shù)據(jù)存儲的可靠性。

關鍵詞:數(shù)據(jù)去重; 數(shù)據(jù)流行度; 去中心化; 區(qū)塊鏈; 存儲可靠性

中圖分類號:TP309 文獻標志碼:A?文章編號:1001-3695(2024)05-038-1544-10

doi:10.19734/j.issn.1001-3695.2023.07.0381

Data popularity deduplication model for decentralized storage

Abstract:There are issues such as dishonest checking organizations and unreliable data storage in a deduplication scheme based on data popularity. This paper proposed a data popularity deduplication model for decentralized storage. To address the dishonesty of the checking agency, the model executed duplication checking and popularity checking of data by using smart contracts as the checking organization, which combined the non-tamper-ability of blockchain with the non-repudiation of smart contracts. It guaranteed the authenticity of the test results. To address the problem of unreliable data storage,it proposed a file chain storage structure. This structure satisfied the requirement of data popularity deduplication. Meanwhile, this structure established the logical relationship between the fragments which were distributed in different storage nodes to achieve physical/logical uploads by adding auxiliary information. The file chain storage structure provided the basis for popularity data in decentralized network storage. Besides,it added backup identifiers to the data block information, and divided the storage network into two virtual storage spaces with the help of the backup identifiers. Also, two virtual storage spaces were oriented for data detection and storage. It satisfied the users backup needs. Security analysis and performance analysis show that the scheme is feasible, guarantees the authenticity of the test results, and improves the reliability of data storage.

Key words:deduplication; data popularity; decentralized; blockchain; storage reliability

0 引言

隨著互聯(lián)網(wǎng)技術的發(fā)展,數(shù)據(jù)呈爆炸式增長,使得越來越多的用戶將數(shù)據(jù)外包給云服務提供商(cloud service provider,CSP)進行存儲。數(shù)據(jù)外包至CSP有效緩解了本地存儲空間的壓力,但對CSP的存儲空間和傳輸帶寬造成了巨大壓力。為降低CSP的存儲成本并提高其存儲能力,數(shù)據(jù)去重技術應運而生。

數(shù)據(jù)去重是一種高效的數(shù)據(jù)縮減技術,旨在檢測并消除數(shù)據(jù)集合中的重復數(shù)據(jù),以此降低對存儲空間的需求[1,2]。重復數(shù)據(jù)包括明文和密文兩種形式。若需檢測明文是否重復,可直接比較明文的內容是否相同。檢測密文是否重復,需先將密文解密至明文,再比較明文是否相同。由于檢測機構無法獲取用戶解密密鑰,故無法將密文恢復至原始的明文,阻礙了重復密文數(shù)據(jù)的檢測。因此,最初的數(shù)據(jù)去重僅能實現(xiàn)對明文的去重[3]。

為實現(xiàn)密文去重,Douceur等人[4]提出了收斂加密(convergent encryption,CE)。CE利用哈希函數(shù)的單向特性與唯一性,可從相同數(shù)據(jù)中提取出相同密鑰,并對相同數(shù)據(jù)采用相同密鑰加密。因此,CE可為相同數(shù)據(jù)生成相同密文,實現(xiàn)無須解密密文的重復性檢測。

然而,采用CE的數(shù)據(jù)去重方案不具有語義安全性[3]。語義安全性要求攻擊者無法從密文推導出明文。若數(shù)據(jù)采用CE進行加密,攻擊者往往可以通過窮舉收斂加密有限的明文空間,并將密文與截獲的密文相匹配,可逆推得到對應的明文信息[5]。然而,如果采用具有語義安全性的加密方式加密所有的數(shù)據(jù),由于采用不同密鑰加密相同數(shù)據(jù)生成不同密文,又再次使得密文數(shù)據(jù)去重不可執(zhí)行。

因此,實現(xiàn)密文數(shù)據(jù)去重的同時提供語義安全性,是數(shù)據(jù)去重的一個挑戰(zhàn)。針對此挑戰(zhàn),一些學者圍繞數(shù)據(jù)流行度去重方案(deduplication scheme based on data popularity,DBDP)展開研究[5~11]。DBDP[6,7]根據(jù)數(shù)據(jù)流行度不同提供不同的安全級別,數(shù)據(jù)流行度可通過擁有數(shù)據(jù)的用戶數(shù)目進行衡量。DBDP設置流行度閾值,當擁有數(shù)據(jù)的用戶數(shù)目小于閾值時,數(shù)據(jù)為非流行數(shù)據(jù),并采用具有語義安全的加密方式。反之,數(shù)據(jù)為流行數(shù)據(jù),并采用收斂加密,執(zhí)行數(shù)據(jù)去重。

然而,DBDP中采用可信第三方服務器(third-party provider,TTP)作為檢測機構。TTP需負責記錄上傳擁有數(shù)據(jù)的用戶數(shù)目,并檢測數(shù)據(jù)的存儲情況以及流行度,故DBDP對第三方可信程度要求較高[8,9]。但可信度的第三方在實際中極難部署。

為降低對第三方的安全需求,Ha等人[10]將重復性檢測信息采用同態(tài)加密并存儲在TTP中。雖然該方式降低了對第三方的安全需求,但無法解決第三方服務器單點故障問題。為此,哈冠雄等人[11]提出無須第三方服務器的DBDP,在不需要部署任何第三方服務器的情況下實現(xiàn)對數(shù)據(jù)流行度的精確統(tǒng)計,但要求CSP完全可信。而在數(shù)據(jù)流行度去重方案中,如果作為檢測機構的CSP或TTP不可信,數(shù)據(jù)檢測結果的真實性難以保障,導致數(shù)據(jù)加密方式與流行度不匹配的問題,使得非流行數(shù)據(jù)安全性下降。

此外,文獻[5,6]僅實現(xiàn)了流行數(shù)據(jù)的去重,對于非流行數(shù)據(jù)仍保留多份數(shù)據(jù)副本。為降低數(shù)據(jù)的冗余,高文靜等人[8,9]提出雙層加密的方式,對非流行數(shù)據(jù)先采用收斂加密,實現(xiàn)數(shù)據(jù)去重,再采用語義安全性的加密方式以保護數(shù)據(jù)機密性,達到在CSP中仍僅保留一個副本的效果。

盡管數(shù)據(jù)去重模型中通常為降低冗余,要求CSP中僅保留一個副本[12,13],但CSP中僅保留一個副本會對DBDP中數(shù)據(jù)存儲的可靠性產生影響,具體體現(xiàn)在兩點:

a)DBDP主要面向集中式存儲[14,15],將文件存儲在中心存儲服務器上,一旦中心存儲服務器發(fā)生故障,大部分文件會損壞或者丟失。當唯一副本丟失時,擁有相同副本的所有用戶都會丟失原有數(shù)據(jù)[16]。

b)當用戶實際使用云存儲服務,希望對同一數(shù)據(jù)進行備份以保障數(shù)據(jù)的完整性與可用性[17,18]時,這與數(shù)據(jù)去重思想相沖突,CSP會忽視用戶備份需求,從而無法實現(xiàn)備份操作。

綜上所述,本文提出了一種面向去中心化存儲下的流行度數(shù)據(jù)去重模型,主要貢獻如下:

a)結合區(qū)塊鏈的不可竄改性與智能合約的不可抵賴性,提出一種基于區(qū)塊鏈的分片檢測方案。該方案核心思想是利用區(qū)塊鏈存儲分片的存儲情況、流行度等信息,實現(xiàn)數(shù)據(jù)的不可竄改。同時,方案引入智能合約作為檢測機構,執(zhí)行分片的重復性檢測和流行度檢測,并返回檢測結果。方案可以保障重復性和流行度檢測結果的真實性,從而解決數(shù)據(jù)的加密方式與流行度不匹配問題。

b)提出一種文件鏈存儲結構(file chain storage structure,F(xiàn)CSS)。結構中僅為物理上傳的分片存儲完整數(shù)據(jù),為邏輯上傳的分片存儲地址, 并為數(shù)據(jù)提供相匹配流行度的加密方式,滿足數(shù)據(jù)流行度去重的要求。同時,通過添加輔助信息的方式,建立分布存儲在不同存儲節(jié)點中物理/邏輯上傳的分片之間的邏輯關系。FCSS為數(shù)據(jù)流行度去重模型應用在去中心化存儲網(wǎng)絡中提供基礎。

c)在數(shù)據(jù)塊信息中添加備份標識,借助備份標識將存儲網(wǎng)絡劃分為兩個虛擬存儲空間,分別存儲常規(guī)上傳和備份上傳的數(shù)據(jù)。面向兩個虛擬存儲空間,實現(xiàn)數(shù)據(jù)和備份數(shù)據(jù)的差異性檢測與存儲。該方案在數(shù)據(jù)去重模型中滿足了用戶備份需求。

1 預備知識

1.1 收斂加密

在傳統(tǒng)數(shù)據(jù)加密方式中,持有相同數(shù)據(jù)的用戶會采用不同密鑰對數(shù)據(jù)進行加密,使得相同數(shù)據(jù)會對應不同密文。因此,當數(shù)據(jù)以密文形式存儲時,傳統(tǒng)數(shù)據(jù)加密方式會阻礙相同數(shù)據(jù)的檢測。收斂加密(CE)[4]是一種可以實現(xiàn)密文檢測的加密方式。CE利用哈希函數(shù)的單向特性與唯一性,從數(shù)據(jù)中提取出唯一的數(shù)據(jù)指紋,并將其作為加解密密鑰。因此,CE保障了數(shù)據(jù)明文與密文具有唯一映射關系,有助于實現(xiàn)密文的重復性檢測。收斂加密主要由四個算法組成,分別是:

a)KeyGenCE (M)→CEKey:密鑰生成算法。輸入明文數(shù)據(jù)M,輸出收斂密鑰CEKey。

b)encrypt(CEKey,M)→C:加密算法。輸入收斂密鑰CEKey和明文數(shù)據(jù)M,輸出數(shù)據(jù)密文C。

c)TagGen(C)→Tag:標簽生成算法。輸入密文數(shù)據(jù)C,輸出數(shù)據(jù)標簽Tag。

d)decrypt(CEKey,C)→M:解密算法。輸入收斂密鑰CEKey和密文數(shù)據(jù)C,輸出明文數(shù)據(jù)M。

1.2 數(shù)據(jù)去重技術

數(shù)據(jù)去重技術[1,2]是一種高效的數(shù)據(jù)縮減技術,能夠檢測并消除存儲系統(tǒng)中的重復數(shù)據(jù),以節(jié)省傳輸帶寬和存儲空間。經(jīng)典的數(shù)據(jù)去重模型如圖1所示,共包含用戶、檢測機構、CSP三個實體。圖1中,用戶A和B上傳數(shù)據(jù)前,都會向檢測機構請求檢測數(shù)據(jù)的存儲情況。由于檢測機構檢測出的數(shù)據(jù)未存儲,故用戶A為首次上傳用戶,會將完整的數(shù)據(jù)上傳存儲至CSP中,即物理上傳。由于檢測機構檢測出數(shù)據(jù)已存儲,故用戶B為后續(xù)上傳用戶,會收到檢測機構已有上傳記錄的檢測結果和數(shù)據(jù)存儲地址,不進行實際數(shù)據(jù)傳輸,即邏輯上傳。

然而,在大多數(shù)據(jù)去重模型[3]中,通常對所有數(shù)據(jù)僅采用不具有語義安全的收斂加密。為實現(xiàn)數(shù)據(jù)去重的同時保障語義安全性,Stanek等人[6]提出一種數(shù)據(jù)流行度去重方案。該方案會為數(shù)據(jù)分配一個流行度閾值T并存儲在檢測機構中,檢測機構執(zhí)行重復性檢測和流行度檢測兩個任務。檢測機構會記錄數(shù)據(jù)被不同用戶上傳的數(shù)目count。執(zhí)行流行度檢測功能時,檢測機構會將count與T進行比較。當count

1.3 區(qū)塊鏈與智能合約

區(qū)塊鏈[19]是一種分布式賬本技術,具有不可竄改性。區(qū)塊鏈通常將所有的信息以區(qū)塊為單位集中存儲在一條鏈上,通過在后一個區(qū)塊中添加前一個區(qū)塊哈希值,實現(xiàn)區(qū)塊之間的關聯(lián),從而保證了數(shù)據(jù)不可竄改性。

智能合約是一種旨在以信息化傳播、驗證或執(zhí)行合同的計算機協(xié)議,具有自動驗證性和不可抵賴性。一旦智能合約被部署在區(qū)塊鏈上,即可實現(xiàn)流程的自動控制。同時,智能合約內容將無法被任何合約參與者竄改,這使得智能合約在要求無可信第三方的場景得到了廣泛應用[20]。如,文獻[21]為解決第三方密鑰管理服務器不可信時,可能會紕漏數(shù)據(jù)的問題,采用秘密共享方案將密鑰劃分為多個部分,分布存儲在區(qū)塊鏈上,使其只有有訪問權限的用戶才可以訪問。文獻[22]為解決半誠實的云服務器帶來的安全問題,結合區(qū)塊鏈技術為公平搜索提供保障,并實現(xiàn)密文數(shù)據(jù)的分布式存儲,規(guī)避了傳統(tǒng)半誠實云服務器中的高信任、低可靠缺陷。

2 系統(tǒng)模型

2.1 系統(tǒng)模型

面向去中心化存儲的流行度數(shù)據(jù)去重模型如圖2所示,系統(tǒng)實體包括去中心化存儲網(wǎng)絡(decentralized storage network,DSN)、當前用戶(current user,CU)、首次用戶(first user,F(xiàn)U)、區(qū)塊鏈(blockchain,BC)。

a)去中心化存儲網(wǎng)絡(DSN)。DSN中包含大量的存儲節(jié)點,主要功能是向用戶提供存儲服務。與以往DBDP的存儲網(wǎng)絡不同,文件會進行分片,并構造成文件鏈結構,存儲在不同的存儲節(jié)點中,以提高數(shù)據(jù)存儲可靠性。與傳統(tǒng)去中心化存儲網(wǎng)絡不同的是,本文DSN中僅存儲了少量重復副本,提高了存儲能力。

b)當前用戶(CU)。CU指本次希望將文件上傳至DSN中,并會在需要時進行下載的用戶。CU外包數(shù)據(jù)至CSP之前,會先將文件構建成文件鏈。文件鏈可以滿足數(shù)據(jù)流行度去重以及去中心化存儲網(wǎng)絡存儲的需求。

c)首次用戶(FU)。FU指首次將數(shù)據(jù)上傳至DSN的用戶。若CU上傳的數(shù)據(jù)是首次上傳至DSN,則CU也是FU,完成數(shù)據(jù)的物理上傳。

d)區(qū)塊鏈(BC)。BC的主要功能是存儲數(shù)據(jù)的信息、部署并維護智能合約等。部署在BC上的智能合約承擔著數(shù)據(jù)去重模型中檢測機構的角色,執(zhí)行數(shù)據(jù)的重復性檢測和流行度檢測。

2.2 威脅模型

本文方案主要考慮以下兩類攻擊者:

a)內部敵手。指去重模型內部的敵手,主要指檢測機構和存儲網(wǎng)絡。檢測機構是不完全可信的,它可能會告知用戶數(shù)據(jù)錯誤的流行度,誘使用戶對數(shù)據(jù)采用流行度不匹配的加密方式,從而導致非流行數(shù)據(jù)不具有語義安全性。此外,現(xiàn)有去重模型中主要面向集中式存儲,將文件存儲在中心存儲服務器中。集中式存儲存在單點故障的風險,并且本文認為存儲網(wǎng)絡中的存儲節(jié)點是誠實且好奇的,可對用戶外包數(shù)據(jù)進行任意訪問。同時,傳統(tǒng)的數(shù)據(jù)去重模型要求僅保留一份數(shù)據(jù)副本,故當用戶通過備份方式提高數(shù)據(jù)可靠性時,去重模型會對備份文件執(zhí)行去重操作,無法實現(xiàn)備份。

b)外部敵手。指去重模型外部的敵手,主要指惡意用戶。外部攻擊者可以通過某種攻擊手段獲取部分用戶上傳的數(shù)據(jù),并嘗試破解密文數(shù)據(jù)的明文信息。此外,外部攻擊者還可以攻擊存儲節(jié)點,從而導致存儲節(jié)點中的部分數(shù)據(jù)損壞或者丟失。然而,傳統(tǒng)的數(shù)據(jù)去重模型中要求存儲系統(tǒng)僅保留一份數(shù)據(jù)副本,故當一份數(shù)據(jù)副本丟失時,所有擁有該數(shù)據(jù)的用戶都會丟失自己的數(shù)據(jù)。

2.3 安全目標

本文方案主要有四個安全目標:

a)數(shù)據(jù)隱私性。本文模型要求存儲網(wǎng)絡中存儲節(jié)點和惡意敵手無法獲取用戶外包數(shù)據(jù),即用戶外包數(shù)據(jù)應以密文的形式存儲在存儲網(wǎng)絡中。同時,非流行數(shù)據(jù)應持有語義安全性,故數(shù)據(jù)去重模型中需保障檢測機構檢測結果的真實性,從而使數(shù)據(jù)的加密方式與其流行度相匹配。由于區(qū)塊鏈具有不可竄改性,智能合約具有不可抵賴性,故可使得區(qū)塊鏈和智能合約在無可信第三方的場景中得到應用。因此,本文將智能合約作為數(shù)據(jù)去重模型中的檢測機構。

b)數(shù)據(jù)存儲可靠性。去中心化存儲網(wǎng)絡不依賴任何中心存儲服務器,并將數(shù)據(jù)分散存儲在多個存儲節(jié)點中,故可以有效緩解中心化存儲網(wǎng)絡中單點故障的問題。因此,本文要求數(shù)據(jù)去重模型應面向去中心化存儲網(wǎng)絡,并且由于集中式存儲網(wǎng)絡下文件的存儲結構與去中心化存儲網(wǎng)絡下文件的存儲結構存在差異,故本文模型要求設計一個新的存儲結構,并且存儲結構應同時滿足去中心化存儲網(wǎng)絡下流行度數(shù)據(jù)的存儲與去重。

c)數(shù)據(jù)容錯性。本文模型中可滿足用戶備份文件需求,不會對用戶備份的文件實現(xiàn)去重。故,數(shù)據(jù)去重模型中要求在數(shù)據(jù)檢測和數(shù)據(jù)存儲時,需將用戶常規(guī)上傳的文件與備份上傳的文件進行區(qū)分,即對分片實現(xiàn)差異性的檢測和存儲。

d)數(shù)據(jù)完整性。本文模型應保障存儲網(wǎng)絡中數(shù)據(jù)的完整性。同時,用戶可以自行驗證外包數(shù)據(jù)的完整性。

3 詳細設計

3.1 系統(tǒng)初始化

系統(tǒng)初始化分為兩個部分。a)為加入數(shù)據(jù)去重模型的用戶分配唯一標識符UserID。UserID用于確定用戶的身份,以避免同一用戶上傳相同分片時,對數(shù)據(jù)流行度準確性造成影響。b)智能合約的部署,其主要涉及兩個智能合約。

1)上傳數(shù)據(jù)塊信息合約

上傳數(shù)據(jù)塊信息合約由用戶調用,負責將所有數(shù)據(jù)塊信息存儲至區(qū)塊鏈,記為AddBlockInfo(BlockInfo[N])→res。其中,所涉及的參數(shù)如表1所示。

2)檢測分片合約

檢測分片合約由用戶調用,負責對分片執(zhí)行重復性檢測以及流行度檢測,并返回分片的檢測結果,記為CheckFragment(FInfo[N])→Result[N]。其中,所涉及的參數(shù)如表2所示。

3.2 基于區(qū)塊鏈的檢測方案

在數(shù)據(jù)流行度去重模型中,用戶在上傳數(shù)據(jù)前,需借助檢測機構檢測數(shù)據(jù)的存儲情況和流行度。同時,當檢測機構不誠實時,檢測機構可能會向用戶返回錯誤的檢測結果,從而導致數(shù)據(jù)加密方式與流行度不匹配的問題。由于區(qū)塊鏈和智能合約可應用于無可信場景下,故為確保檢測結果的真實性,本文結合區(qū)塊鏈的不可竄改性與智能合約的不可抵賴性,提出了基于區(qū)塊鏈的檢測方案。具體地,由區(qū)塊鏈存儲分片對應的數(shù)據(jù)塊信息以用于檢測,并將區(qū)塊鏈上的智能合約作為檢測機構。

3.2.1 差異性檢測思路

由于數(shù)據(jù)去重模型中通常要求僅存儲一份文件,故檢測機構在執(zhí)行重復性檢測時僅會判斷存儲網(wǎng)絡是否存儲了該文件,而不會判斷文件是否是用戶需要備份的文件。為滿足用戶的備份需求,需實現(xiàn)對常規(guī)分片與備份分片實現(xiàn)差異性檢測,即檢測機構不僅需要執(zhí)行檢測還需要識別文件是否為用戶主動備份的文件。因此,本文方案在數(shù)據(jù)塊信息中添加備份標識BS,BS由用戶的備份意愿所決定。

如圖3所示,本文方案根據(jù)借助備份標識BS,存儲網(wǎng)絡可以劃分為兩個虛擬存儲空間VSS1和VSS2。VSS1中存儲的是無論用戶是否有備份需求均會上傳的數(shù)據(jù)塊,即常規(guī)數(shù)據(jù)塊,BS=0。VSS2中均為用戶有備份需求時,為實現(xiàn)備份時上傳的數(shù)據(jù)塊,即備份數(shù)據(jù)塊,BS=1。故在檢測分片存儲情況時,常規(guī)上傳的分片面向VSS1進行檢測,而備份上傳的分片面向VSS2檢測。將常規(guī)與備份上傳區(qū)分檢測的方式,使用戶在備份時,檢測機構不會因為用戶曾上傳過而執(zhí)行去重操作。

3.2.2 檢測分片合約計算方式

智能合約檢測分片合約CheckFragment執(zhí)行重復性檢測和流行度檢測的方式如下:

區(qū)塊鏈中共包含l個區(qū)塊,可記為

TDk={Tag,UserID,count,value,DP,BS},k∈[1,l]

TD={TD1,TD2,…,TDl}(1)

從區(qū)塊鏈中的區(qū)塊TD中篩選出兩類,并按照下標進行排序,分別是

CTD1={TDs1|TDs1.tag==FIi.tag,TDs1.BS==0,s1∈[1,cl1]}(2)

CTD2={TDs2|TDs2.tag==FIi.tag,TDs2.BS==1,s2∈[1,cl2]}(3)

CTD1和CTD2表示區(qū)塊鏈中標簽為FIi.tag的分片對應的所有數(shù)據(jù)塊信息。區(qū)別在于,CTD1為常規(guī)數(shù)據(jù)塊信息,CTD2為備份數(shù)據(jù)塊信息。其中CTD1中共包含cl1個元素,CTD2中共包含cl2個元素。

結果參數(shù)Ri中各參數(shù)計算方式如下:

a)分片被不同用戶上傳的數(shù)目Ri.count。Ri.count取決于CTD1中最新更新的數(shù)據(jù)塊信息CTD1[cl1-1]。當CTD1沒有數(shù)據(jù)塊信息時,表示未曾有用戶上傳該分片,則Ri.count=1。當CTD1有數(shù)據(jù)塊信息時,表示曾有用戶上傳過該分片。如果CU沒有上傳該分片時,Ri.count=CTD1[cl1-1].count+1。反之,Ri.count=CTD1[cl1-1].count,從而避免由于分片重復上傳造成對數(shù)據(jù)流行度的影響。

b)分片流行度Ri.DP。Ri.DP取決于Ri.count與流行度閾值T之間的關系。當Ri.countT時,分片為流行數(shù)據(jù),則Ri.DP=popular。

c)常規(guī)數(shù)據(jù)塊地址Ri.value1。Ri.value1取決于CTD1中的數(shù)據(jù)塊信息。當CTD1沒有數(shù)據(jù)塊信息或者流行度剛轉換Ri.DP=transition時,表明當前存儲網(wǎng)絡中沒有存儲完整數(shù)據(jù)的、相應流行度的數(shù)據(jù)塊,則Ri.value1=NULL。

當CTD1存在數(shù)據(jù)塊信息時,表明當前存儲網(wǎng)絡中已經(jīng)存儲完整數(shù)據(jù)的常規(guī)數(shù)據(jù)塊。如果分片為非流行數(shù)據(jù),Ri.value1取決于第一次記錄的數(shù)據(jù)塊信息,則Ri.value1=CTD1[0].value。如果分片為流行數(shù)據(jù),Ri.value1取決于CTD1[r1].DP=transition,r1∈[1,cl1]的數(shù)據(jù)塊,則Ri.value1=CTD[r1].value。

d)備份數(shù)據(jù)塊地址Ri.value2。Ri.value2僅在當前用戶CU有備份意愿時才進行計算,取決于CTD2中的數(shù)據(jù)塊信息。此時,當前存儲網(wǎng)絡中沒有存儲完整數(shù)據(jù)的、相應流行度的備份數(shù)據(jù)塊有三種情況:

(a)CTD2沒有數(shù)據(jù)塊信息;

(b)流行度剛進行轉換,Ri.DP=transition;

(c)流行度轉換時,沒有上傳備份數(shù)據(jù)塊;

則Ri.value2=NULL。

當CTD2存在數(shù)據(jù)塊信息時,表明當前存儲網(wǎng)絡中已經(jīng)存儲完整數(shù)據(jù)的備份數(shù)據(jù)塊。如果分片為非流行數(shù)據(jù), Ri.value2取決于第一次上傳備份數(shù)據(jù)塊時記錄的數(shù)據(jù)塊信息,則Ri.value2=CTD2[0].value。如果分片為流行數(shù)據(jù),Ri.value2取決于首次上傳分片流行度為流行的數(shù)據(jù)塊信息CTD2[r2],r2∈[1,cl2],則Ri.value2=CTD2[r2].value。

3.3 構造文件鏈

在數(shù)據(jù)流行度去重模型中,檢測機構完成數(shù)據(jù)的重復性檢測和流行度檢測后,用戶需根據(jù)檢測結果,確定數(shù)據(jù)的上傳方式,即邏輯上傳或者是物理上傳,并為流行度數(shù)據(jù)采用相匹配的加密方式。在本模型中,該步驟對應構造文件鏈。

3.3.1 文件鏈存儲結構設計思想

本文方案中,為緩解集中式存儲中心存儲服務器故障,會導致大部分文件損壞或丟失的問題,設計一種文件鏈存儲結構FCSS,可使文件滿足數(shù)據(jù)流行度去重的要求,同時適用于去中心化網(wǎng)絡的存儲,提高數(shù)據(jù)存儲的可靠性。故FCSS應考慮并滿足以下四點:

a)設計分片去重方法。為將數(shù)據(jù)去重模型中的數(shù)據(jù)最終存儲到去中心化存儲網(wǎng)絡中,要對文件以分片為單位進行處理[23],并將分片作為本文模型中最小的存儲和檢測單位。同時,僅為需要物理上傳的分片保留完整數(shù)據(jù)。

b)選擇不同安全級別。數(shù)據(jù)流行度去重模型要求應對不同流行度的數(shù)據(jù)采用相匹配的加密方式,并提供不同的安全級別。其中,非流行數(shù)據(jù)應持有語義安全性。

c)建立分片邏輯關聯(lián)。其目的是將分散存儲在不同存儲節(jié)點中的分片重新合并為文件。同時,由于文件中可能存在物理上傳和邏輯上傳的分片,故存在難點在于如何將邏輯上傳的分片還原為文件。因此,需要在存儲結構中添加輔助信息,以實現(xiàn)分片之間邏輯順序的連接。

d)實現(xiàn)備份。為滿足用戶的備份需求,需對常規(guī)分片與備份分片實現(xiàn)差異性存儲。因此,需將文件鏈劃分為常規(guī)文件鏈(routine file chain,RFC)和備份文件鏈(backup file chain,BFC)。如果用戶沒有備份文件意愿,則需構建一條文件鏈RFC;反之,用戶則構建兩條文件鏈RFC和BFC。

3.3.2 文件鏈存儲結構定義

故文件鏈存儲結構構建思想如圖4所示。本文方案將文件F根據(jù)系統(tǒng)預設大小M劃分為N個分片F(xiàn)F={fi|i∈[1,N]}。

文件鏈(file chain,F(xiàn)C)本質上是由N個數(shù)據(jù)塊(data block,DB)組成,記為FC={DBi|i∈[1,N]}。每個數(shù)據(jù)塊中都包含尋址域(addressing domain,AD)和數(shù)據(jù)域(data domain,DD)兩個部分,記為DB=AD∪DD。

1)尋址域AD

AD用于建立數(shù)據(jù)塊之間的聯(lián)系以及定位數(shù)據(jù)塊的位置。AD中包含前一數(shù)據(jù)塊地址(previous address,PA)、當前數(shù)據(jù)塊地址(current address,CA)、下一數(shù)據(jù)塊地址(next address,NA),記為AD=PA∪CA∪NA。PA、CA、NA分別用于定位上一個數(shù)據(jù)塊、當前數(shù)據(jù)塊、下一個數(shù)據(jù)塊的位置。地址的計算方式是計算數(shù)據(jù)塊哈希,hash(·)為計算哈希的函數(shù),記為

hash(DNi-1 .DD)→DNi.AD.PA

hash(DNi.DD)→DNi.AD.CA

hash(DNi+1.DD)→DNi.AD.NA(4)

其中:本文方案采用的哈希函數(shù)為國密SM3。

故,AD可以建立DNi-1、DNi、DNi+1之間的邏輯關系φ1(α)和φ2(α),i∈[1,N],α=DNi。φ1(α)用于獲取上一數(shù)據(jù)塊DNi-1的地址,φ2(α)用于獲取下一數(shù)據(jù)塊DNi+1的地址。特別地,當i=1時,φ1(α)用于獲取上一數(shù)據(jù)塊DNN的地址;當i=N時,φ2(α)用于獲取下一數(shù)據(jù)塊DN1的地址。這種方式可以一定程度上減輕用戶保管數(shù)據(jù)塊地址的負擔。

2)數(shù)據(jù)域DD

DD用于存儲數(shù)據(jù),它包含兩個部分:a)塊標識BlockID,用于區(qū)分存儲相同內容的數(shù)據(jù)塊,記為hash(count+UserID+TimeStamp)→BlockID,其中TimeStamp為時間戳;b)采用匹配加密方式的完整分片或者存儲完整分片的數(shù)據(jù)塊地址,其具體內容由分片檢測結果中的存儲情況和流行度決定。

其中,為便于后面討論,本文將存儲完整分片的數(shù)據(jù)塊稱為完整數(shù)據(jù)塊(complete data block,CDB),實現(xiàn)分片的物理上傳;存儲完整分片數(shù)據(jù)塊地址的數(shù)據(jù)塊稱為去重數(shù)據(jù)塊(duplicated data block,DDB),實現(xiàn)分片的邏輯上傳。

3.3.3 文件鏈構造流程

文件鏈構造流程共分為文件預處理和構造文件鏈兩個部分。

1)文件預處理

當前用戶CU需先對文件進行預處理,從而獲得構建文件鏈時所需使用的參數(shù),其具體操作如下:

a)完成文件分片。CU將文件F根據(jù)大小M劃分為N個分片,得到分片有序集FF={fi|i∈[1,N]}。其中,M由系統(tǒng)預設。

b)生成收斂密文。CU依次對fi生成收斂密鑰KeyGenCE (fi)→CEKeyi,并將CEKeyi集合成收斂密鑰集CEKS={CEKeyi|i∈[1,N]}。之后,CU依次對fi進行第一次加密得到收斂密文encrypt(CEKeyi,fi)→C1fi。

c)生成分片標簽。CU依次從C1fi中計算出fi的標簽TagGen(C1fi)→tagi。

d)調用檢測分片合約。CU調用檢測分片合約CheckFragment,并獲得合約返回分片檢測結果。

e)獲取外層密鑰。當fi由CU首次上傳時,則CU生成外層密鑰KeyGen (1λ)→OKeyi。否則,CU向首次用戶FU申請并獲取OKeyi。CU將OKeyi集合成外層密鑰集OKS={OKeyi|i∈[1,N]}。

2)構造文件鏈

構建文件鏈所需的參數(shù)獲取完畢后,CU開始文件鏈的構造。構造文件鏈本質上是將N個分片構建成N個數(shù)據(jù)塊結構,本文將文件鏈記為RFC={DBri|i∈[1,N]}和BFC={DBbi|i∈[1,N]}。

由于文件鏈構造方式相同,故為便于介紹,將Ri.value1和Ri.value2統(tǒng)記為Ri.value,常規(guī)文件鏈RFC={DBri|i∈[1,N]}和備份文件鏈BFC={DBbi|i∈[1,N]}統(tǒng)記為FC={DBi|i∈[1,N]}。

構造文件鏈具體操作如下:

a)確定存儲內容。為構造數(shù)據(jù)塊的數(shù)據(jù)域,CU首先要確定存儲的內容(data domain content,DDC)是完整的分片還是存儲完整分片的數(shù)據(jù)塊地址。確定方式可以通過查看檢測結果中的Ri.value是否為空值NULL。

(a)當Ri.value==NULL時,表明fi在Ri.DP的流行度下VSS1/VSS2中沒有存儲完整分片,故需實現(xiàn)fi的物理上傳,即數(shù)據(jù)塊的數(shù)據(jù)域中存儲的內容是完整的分片DDCi=fi。

(b)當Ri.value≠NULL時,表明fi在Ri.DP的流行度下VSS1/VSS2中已經(jīng)存儲過完整的分片,故只需實現(xiàn)fi的邏輯上傳,即數(shù)據(jù)塊的數(shù)據(jù)域中存儲的內容是存儲完整分片的數(shù)據(jù)塊地址DDCi=Ri.value。

b)第一次加密。采用的是收斂加密,收斂加密的目的是為了實現(xiàn)密文數(shù)據(jù)去重,故無論fi為非流行數(shù)據(jù)還是流行數(shù)據(jù),CU都需采用CEKeyi依次對DDCi進行加密,得到收斂密文C1i,記為encrypt(CEkeyi,DDCi)→C1i。

c)第二次加密。采用的是具有語義安全性的加密算法國密SM4。因此,如果fi為流行數(shù)據(jù),則CU無須對數(shù)據(jù)進行第二次加密,即C2i=C1i。如果fi為非流行數(shù)據(jù),則CU需采用OKeyi依次對C1i進行加密,得到最終的密文C2i,encrypt(OKeyi,C1i)→C2i。

d)構造數(shù)據(jù)域。數(shù)據(jù)塊的數(shù)據(jù)域中包含塊標識和具體存儲內容兩個部分,故CU應依次計算出DBi的塊標識BlockIDi,記為

hash(fi.count+UserID + TimeStamp)→BlockIDi(5)

計算完成后,CU將塊標識BlockIDi和密文C2i共同組合成數(shù)據(jù)塊的數(shù)據(jù)域DBi.DD,如下:

(a)當fi需實現(xiàn)物理上傳時,數(shù)據(jù)塊的數(shù)據(jù)域為DBi.DD=BlockIDi‖C2i。

(b)當fi僅需實現(xiàn)邏輯上傳時,數(shù)據(jù)塊的數(shù)據(jù)域為DBi.DD=BlockIDi‖C2i‖C2i。拼接兩次C2i的目的是在CU下載數(shù)據(jù)塊時,以區(qū)分存儲的內容是完整分片還是數(shù)據(jù)塊地址。

e)構造尋址域。CU依次對DBi.DD生成哈希,并將哈希賦值給數(shù)據(jù)塊的尋址域,記為

至此,當所有分片均構建成數(shù)據(jù)塊后,文件鏈構造完成。

3.4 上傳文件

在構造完成文件鏈后,當前用戶CU需將文件鏈上傳至去中心化存儲網(wǎng)絡DSN中,即數(shù)據(jù)塊會分布式存儲在不同的存儲節(jié)點中。此外,為實現(xiàn)基于區(qū)塊鏈的分片檢測,保障檢測結果的真實性,CU還需將所有的數(shù)據(jù)塊信息存儲在區(qū)塊鏈中,以保障數(shù)據(jù)塊信息不被竄改。該階段的詳細步驟如下:

a)調用上傳數(shù)據(jù)塊信息合約。CU將用戶唯一標識符UserID、備份標識BS和所有數(shù)據(jù)塊的分片標簽tag、分片被不同用戶上傳的數(shù)目count、加密的數(shù)據(jù)塊地址value、分片流行度DP整合為N組數(shù)據(jù)塊信息BIi。其中,數(shù)據(jù)塊的備份標識值與用戶備份意愿相同,記為BS=RBackup。

之后,CU調用上傳數(shù)據(jù)塊信息合約AddBlockInfo,將所有數(shù)據(jù)塊信息上鏈。

b)存儲數(shù)據(jù)塊信息。合約接收到N組數(shù)據(jù)塊信息BIi,并將信息存儲至區(qū)塊鏈中。其中,一個區(qū)塊對應一個數(shù)據(jù)塊的信息。

c)建立映射元文件。為實現(xiàn)文件的自主管理,CU需建立元文件。元文件可實現(xiàn)文件與文件鏈中數(shù)據(jù)塊的基本映射,其基本內容與作用如表3所示。

d)上傳文件鏈。CU將文件鏈上傳至去中心化存儲網(wǎng)絡DSN中。

e)存儲文件鏈。DSN接收到文件鏈后,將數(shù)據(jù)塊分布式地存儲在不同的存儲節(jié)點中。

3.5 下載文件

當前用戶CU在需要時,需從去中心化存儲網(wǎng)絡DSN中下載文件。與以往的數(shù)據(jù)流行去重模型不同的是,以往的模型將文件存儲在集中式存儲網(wǎng)絡中,不需要對文件進行重構,本文模型需要將分布式存儲在不同存儲節(jié)點中的數(shù)據(jù)塊進行重構。下載文件的詳細步驟如下:

a)第一次下載數(shù)據(jù)塊。根據(jù)元文件中的頭數(shù)據(jù)塊地址FA,CU從DSN中下載文件鏈中所有的數(shù)據(jù)塊{DBi|i∈[1,N]}。

b)區(qū)分數(shù)據(jù)塊存儲內容。文件鏈中存在存儲完整分片的數(shù)據(jù)塊CDB,也存在存儲數(shù)據(jù)塊地址的數(shù)據(jù)塊DDB,故在解密之前,CU需先對它們進行區(qū)分。

由于存儲完整分片和數(shù)據(jù)塊地址的數(shù)據(jù)塊數(shù)據(jù)域構成不同,且塊標識由哈希計算得出,大小恒定不變,故可以借助數(shù)據(jù)域的內容和大小進行區(qū)分。如果數(shù)據(jù)塊數(shù)據(jù)域中除去塊標識后,剩下的內容前半部分和后半部分相同,則為完整數(shù)據(jù)塊CDB。反之,則為去重數(shù)據(jù)塊DDB。

c)第一次解密數(shù)據(jù)塊。由于數(shù)據(jù)塊對應分片的流行度存在非流行和流行兩種情況,故解密時需采取兩個步驟:

(a)如果CU擁有OKS[i],說明DBi對應分片為非流行數(shù)據(jù),則CU需采用OKS[i]對數(shù)據(jù)域中存儲的內容DCi進行解密,記為decrypt(OKS[i],DCi)→C1DBi。反之,則跳過該解密過程,即C1DBi=DCi。

(b)在構造數(shù)據(jù)塊時,無論分片處于非流行還是流行狀態(tài),均需采用收斂加密加密數(shù)據(jù)。故,CU必須采用CEKS[i]對C1DBi進行解密,記為decrypt(CEKS[i],C1DBi)→MDBi。

其中,文件鏈中可能包含去重數(shù)據(jù)塊DDB,故部分MDBi為數(shù)據(jù)塊地址BAddress,記為BAddress=MDBi。CU所有的BAddress集合為{BAdressk|k∈[1,l]},l為文件鏈中DDB的數(shù)目。

d)第二次下載數(shù)據(jù)塊。如果{DBi|i∈[1,N]}中存在DDB,則執(zhí)行該步驟。CU根據(jù){BAdressk|k∈[1,l]}從DSN中下載數(shù)據(jù)塊{DBk|k∈[1,l]}。

e)第二次解密數(shù)據(jù)塊。如果{DBi|i∈[1,N]}中存在DDB,則執(zhí)行該步驟。CU依次對{DBk|k∈[1,l]}進行解密。解密方式同步驟c),不同的是此次解密的數(shù)據(jù)塊DBk均為完整數(shù)據(jù)塊CDB。

f)合并分片。CU將CDB的MDB進行合并,最終獲得文件F。

4 安全性分析

4.1 檢測結果真實性分析

定義1 在數(shù)據(jù)流行度去重方案中,文件上傳至CSP前通常需要檢測機構對文件執(zhí)行重復性檢測和流行度檢測,其具體流程如下:

a)用戶user生成文件F的標簽TagGen(F)→tag,并將tag發(fā)送給檢測機構。

b)檢測機構TA根據(jù)tag執(zhí)行重復性檢測和流行度檢測,計算出F的存儲情況和流行度。

c)TA將F的存儲情況和流行度告知user。

d)user根據(jù)F的存儲情況和流行度,對F采用不同的上傳、加密方式。如果F沒有上傳,則進行物理上傳。反之,則進行邏輯上傳。如果F為非流行數(shù)據(jù),則采用語義安全的加密方式。反之,則采用收斂加密,執(zhí)行去重操作。

定義2 流行度欺騙攻擊指惡意檢測結構會告知用戶數(shù)據(jù)錯誤的流行度,使用戶采用錯誤的加密方式加密數(shù)據(jù),其在數(shù)據(jù)去重模型中的攻擊流程如下。

假設文件F為非流行數(shù)據(jù),并且其密文C已經(jīng)存儲在CSP中。

a)用戶user將標簽tag發(fā)送給檢測機構TA執(zhí)行重復性檢測和流行度檢測。

b)出于利益或其他原因,檢測結構TA與攻擊者A進行合謀。TA告知user,文件F經(jīng)過此次上傳,流行度將從非流行數(shù)據(jù)轉換為流行數(shù)據(jù)。

c)user無法對流行度檢測的結果進行驗證,故對文件F采用收斂加密得到收斂密鑰和收斂密文,如下:

KeyGenCE(F)→CEKey(7)

encrypt(CEKey,F(xiàn))→C*(8)

d)user將密文C*上傳至CSP中進行存儲。

e)攻擊者A通過非法手段截取文件F的密文C*。C*采用的是不具有語義安全性的收斂加密,因此破解難度低于C。

f)攻擊者A采用暴力攻擊或者其他攻擊方式嘗試對C*進行破解,建立C*與F之間的聯(lián)系。

定理1 本文方案可以保障檢測機構檢測結果的真實性。

證明 本文方案中,由區(qū)塊鏈存儲數(shù)據(jù)塊信息,采用智能合約檢測分片合約CheckFragment執(zhí)行數(shù)據(jù)的重復性檢測和流行度檢測,并向用戶返回數(shù)據(jù)的存儲情況和流行度。

區(qū)塊鏈的每一個區(qū)塊中都包含指向前一個區(qū)塊的哈希值,故如果前一個區(qū)塊數(shù)據(jù)被竄改,其對應的哈希值也相應會改變。如果攻擊者試圖竄改區(qū)塊鏈中的某個區(qū)塊,則會破壞該區(qū)塊以及后續(xù)所有的區(qū)塊,導致整個區(qū)塊鏈無效。因此區(qū)塊鏈可以保證區(qū)塊中的數(shù)據(jù)塊信息不會被別的攻擊者竄改。而智能合約的執(zhí)行過程是公開的,并且可被其他節(jié)點查看和驗證。如果智能合約的執(zhí)行結果被竄改,其他節(jié)點會發(fā)現(xiàn)并拒接該結果,從而保證了智能合約執(zhí)行結果的真實性。

因此,由檢測分片合約CheckFragment作為檢測機構,承擔重復性檢測和流行度檢測職責,可避免流行度欺騙攻擊中的步驟b)的出現(xiàn),從而避免后續(xù)階段的發(fā)生。故本方案可以抵御流行度欺騙攻擊,保障檢測結果的真實性。

4.2 語義安全性分析

定義3 本文方案使用的對稱加密SM4具有語義安全性,其猜測優(yōu)勢是可以忽略的。

定理2 本文方案中非流行數(shù)據(jù)具有語義安全性。

證明 假設存在攻擊者A和挑戰(zhàn)者Chal。A會攻擊非流行數(shù)據(jù)。Chal擁有外層密鑰OKey,并運行非流行數(shù)據(jù)的加密方式,接受A的攻擊挑戰(zhàn)。具體挑戰(zhàn)描述如下:

a)攻擊者A從明文數(shù)據(jù)集M中任意選取兩個明文數(shù)據(jù)(M0,M1)。

b)攻擊者A將兩個明文數(shù)據(jù)(M0,M1)發(fā)送給挑戰(zhàn)者Chal。

c)挑戰(zhàn)者Chal任意選取Mr∈(M0,M1),并采用非流行數(shù)據(jù)的加密方式進行加密,得到密文Cr:

encrypt(Okey,encrypt(KeyGenCE (Mr),Mr))→Cr(9)

并將Cr發(fā)送給攻擊者A。

d)攻擊者A猜測密文Cr來源于M0還是M1。

攻擊者A猜測優(yōu)勢為

Pr1=Pr[encrypt(Okey,encrypt(KeyGenCE(M0),M0))→Cr](10)

Pr2=Pr[encrypt(Okey,encrypt(KeyGenCE (M1),M1))→Cr](11)

Adv(A)=|Pr1-Pr2|(12)

又因為本文采用的對稱加密算法SM4具有語義安全性,故(M0,M1)的密文在計算上是不可分的,即

{C0}≈p{C1}(13)

因此,存在可忽略值ε,使Adv(A)=|Pr1-Pr2|≤ε,非流行數(shù)據(jù)具有語義安全性。

4.3 抵御暴力攻擊分析

定義4 暴力攻擊指當攻擊者已知數(shù)據(jù)屬于某個可預測集時,通過窮舉方式可以確定密文對應明文數(shù)據(jù)的攻擊方式。暴力攻擊在數(shù)據(jù)去重模型的攻擊流程如下:

假設存在攻擊者A,A擁有明文空間集MS={F1,F(xiàn)2,…,F(xiàn)n},其可以通過以下流程發(fā)起暴力攻擊:

a)A通過非法手段截取文件F的密文C。

b)A依次對MS中的文件Fk,k∈[1,n]進行計算,并得到收斂密鑰CEKeyk和收斂密文Ck,如下:

KeyGenCE(Fk)→CEKeyk(14)

encrypt(CEKeyk,F(xiàn)k)→Ck(15)

c)A將Ck和截獲的密文C進行比對。當Ck滿足等式Ck==C,A可確定F==Fk。至此,A獲得原始明文文件F。

定理3 本文方案中非流行數(shù)據(jù)能夠抵御暴力攻擊。

證明 本文方案中,當前用戶CU將文件劃F分成N個分片F(xiàn)F={fi|i∈[1,N]},并根據(jù)fi的存儲情況和流行度,將fi構建成不同的數(shù)據(jù)塊結構。當fi.DP=unpopular時,CU需將數(shù)據(jù)塊數(shù)據(jù)域中存儲的內容DDC先后采用收斂密鑰CEKey和外層密鑰OKey進行加密,得到最終的密文,記為

encrypt(Okey,encrypt(CEKey,DDC))→C(16)

其中:CEKey是從fi中提取的密鑰。

KeyGenCE (fi)→CEKeyk(17)

故任何擁有fi的用戶均可以計算得到。

OKey由第一個上傳fi的首次用戶FU隨機生成:

KeyGenCE(1λ)→Okey(18)

假設攻擊者A發(fā)起暴力攻擊,通過非法手段獲取任一數(shù)據(jù)塊,數(shù)據(jù)塊的數(shù)據(jù)域中存儲密文C。A依次將MS中的Fk劃分成與fi同等大小的分片,共J個分片{f*j|j∈[1,J]}。由于A僅能計算出f*j的收斂密鑰,無法獲取外層密鑰,故無法將f*j加密成最終的密文C*j,并將C*j與C進行比對。其次,A截獲的僅為文件鏈中的一個數(shù)據(jù)塊,并且無權限根據(jù)數(shù)據(jù)塊地址直接訪問存儲內容,故A無法獲取完整的文件。

4.4 完整性驗證分析

定理4 本文方案中任意用戶均可對密文進行完整性驗證。

證明 本文方案中,用戶上傳文件F前,會先將文件F構建成多個不同的數(shù)據(jù)塊結構,即文件鏈FC={DBi|i∈[1,N]}。當文件鏈構建完成后,再將文件鏈上傳至CSP中。當用戶下載文件F時,用戶會先下載若干個數(shù)據(jù)塊,再將數(shù)據(jù)塊重構為文件。數(shù)據(jù)塊DB由尋址域AD與數(shù)據(jù)域DD組成,尋址域AD中包含前一數(shù)據(jù)塊的地址PA、當前數(shù)據(jù)塊的地址CA、后一數(shù)據(jù)塊的地址NA,記為

DB=AD∪DD,AD=PA∪CA∪NA(19)

已知用戶已經(jīng)上傳文件F對應的文件鏈FC={DBi|i∈[1,N]}。當用戶將文件鏈中所有數(shù)據(jù)塊下載完畢,用戶可通過尋址域判斷文件是否完整,具體流程如下:

a)依次計算數(shù)據(jù)塊數(shù)據(jù)域DBi.DD的哈希地址hash(DBi.DD)→hi。

b)依次將hi與DBi.AD.CA進行比對。如果相同,則說明數(shù)據(jù)塊DBi沒有發(fā)生竄改。

c)依次將DBi.AD.CA與DBi-1.AD.NA、DBi+1.AD.PA進行比對。其中,DBN.AD.NA與DB1.AD.CA比對,DB1.AD.PA與DBN.AD.CA比對。如果相同,則說明下載的數(shù)據(jù)塊正確。

當上述比對均相同時,數(shù)據(jù)具有完整性。

4.5 存儲可靠性分析

定義5 以往的流行度數(shù)據(jù)去重模型多會將文件F集中式地存儲在中心存儲服務器中。假設存在攻擊者A攻擊中心存儲服務器成功,中心存儲服務器中的大量數(shù)據(jù)都會損壞或者丟失,其中可能包含有文件F。又因為數(shù)據(jù)去重模型中擁有相同文件的用戶僅存儲一個副本在存儲系統(tǒng)中,故所有擁有該文件的用戶都會丟失自己的文件。

定理5 本文方案可以提高數(shù)據(jù)存儲的可靠性。

證明 在本文方案中,假設去中心化存儲網(wǎng)絡DSN中包含P個存儲節(jié)點DSN={SN1,SN2,…,SNP}。當用戶希望上傳文件F時,會將F劃分為N個分片F(xiàn)F={fi|i∈[1,N]},并構造常規(guī)文件鏈RFC={DBri|i∈[1,N]}。如果用戶有備份需求,用戶還會構造出備份文件鏈BFC={DBbi|i∈[1,N]}。構造文件鏈完成后,再將其分散存儲在k,k∈[1,P]個存儲節(jié)點中。

假設存在攻擊者A成功攻擊DSN中的任意存儲節(jié)點SNk,k∈[1.P],導致丟失了RFC中的部分數(shù)據(jù)塊。此時,可以將BFC中數(shù)據(jù)塊進行替換或采用容錯兩種方式進行恢復。因此,本文方案可以提高數(shù)據(jù)存儲的可靠性。

5 實驗分析

實驗采用C語言編寫哈希函數(shù)SM3、加解密函數(shù)SM4,采用Python實現(xiàn)參數(shù)的初始化、文件鏈構造以及網(wǎng)絡通信的編寫,采用基于Python的開發(fā)測試框架Brownie實現(xiàn)區(qū)塊鏈網(wǎng)絡,采用Solidity實現(xiàn)智能合約的編寫。實驗環(huán)境涉及主機參數(shù)如表4所示。三臺主機模擬去中心化存儲網(wǎng)絡中的服務器端,并且共同維護一個區(qū)塊鏈網(wǎng)絡。在這三臺主機中,其中一臺主機還用于模擬用戶端。本章主要從功能上將本文方案與其他方案[7,8,14,24]進行了對比,并通過仿真實驗分別完成了本文方案的性能和去重效率測試。

5.1 功能對比分析

本文方案的功能優(yōu)勢主要體現(xiàn)在數(shù)據(jù)流行度去重模型可以保障檢測結果的真實性、面向去中心化存儲、考慮用戶備份需求。將本文方案與文獻[7,8,14,24]進行比較,結果如表5所示。

文獻[7]中首次提出數(shù)據(jù)流行度去重方案,為流行度不同的數(shù)據(jù)提供不同的安全級別,可在實現(xiàn)密文數(shù)據(jù)去重的同時,為非流行數(shù)據(jù)提供語義安全性。該方案中將第三方服務器作為檢測機構,而可信第三方服務器極難部署,存在返回錯誤檢測結果的可能,故無法保障檢測結果的真實性。此外,該方案并未考慮到數(shù)據(jù)存儲不可靠的問題。

文獻[8]在文獻[7]的基礎上提出了一種基于雙層加密的數(shù)據(jù)去重方案,對非流行數(shù)據(jù)先采用收斂加密,后采用語義安全的加密方式,實現(xiàn)了對非流行數(shù)據(jù)的去重,提高了數(shù)據(jù)去重效率。但該方案將CSP作為檢測機構,仍無法保障檢測結果的正確性。同時,數(shù)據(jù)存儲可靠性問題也并未考慮。

文獻[14]結合區(qū)塊鏈的去中心化和不可竄改性,實現(xiàn)了面向去中心化存儲的數(shù)據(jù)存儲。由于去中心化存儲網(wǎng)絡不依賴任何中心服務器,并將數(shù)據(jù)分散存儲在多個存儲節(jié)點上,故當數(shù)據(jù)中部分存儲節(jié)點被惡意敵手攻擊,導致部分數(shù)據(jù)被損壞或者丟失時,仍可以通過糾刪碼等容災方式恢復完整的文件。此外,由于該文獻不涉及數(shù)據(jù)去重,故仍可實現(xiàn)用戶數(shù)據(jù)的備份。

文獻[24]引入雙服務器模型作為去中心化存儲網(wǎng)絡對數(shù)據(jù)進行存儲以及去重,并且由雙服務器相互對數(shù)據(jù)進行審計。雙服務器的審計結果在用戶之間共享,以避免重復審計。同時,該文獻將標簽存儲在區(qū)塊鏈中,由用戶進行搜索是否重復,可以保障重復性檢測結果的真實性。但該文獻沒有考慮到數(shù)據(jù)流行度,故也無法保障流行度檢測結果的真實性。同時,該文獻中相同數(shù)據(jù)僅能存儲一份,故會對用戶備份的數(shù)據(jù)執(zhí)行去重操作,無法實現(xiàn)備份需求。

因此,本文方案更具功能性,可提高數(shù)據(jù)流行度去重模型的安全性。

5.2 時間開銷分析

為便于進行實驗分析,實驗設置數(shù)據(jù)分塊量N為10,閾值T為3,對1~20 M的文件進行測試。根據(jù)上傳方式和加密方式不同,本文分片劃分為四種情況,分別是:a)情況1,非流行數(shù)據(jù)首次上傳;b)情況2,非流行數(shù)據(jù)后續(xù)上傳;c)情況3,流行數(shù)據(jù)首次上傳;d)情況4,流行數(shù)據(jù)后續(xù)上傳。

為模擬分片的四種情況,本實驗在上傳文件前,將存儲網(wǎng)絡存儲置空,使任何分片均未被存儲;實驗開始后,將相同文件分別上傳、下載4次。這可保證文件中所有分片的情況均從情況1開始,并且所有分片的存儲情況和流行度在四次上傳和下載的過程中將保持一致。同時,由于構建常規(guī)文件鏈與備份文件鏈中的數(shù)據(jù)塊時,處于相同情況的相同分片的時間開銷相同,故本實驗不刻意考慮備份文件的情況。

5.2.1 基于區(qū)塊鏈的數(shù)據(jù)檢測時間開銷

在數(shù)據(jù)流行度去重模型中,用戶在上傳數(shù)據(jù)前,需借助檢測機構檢測數(shù)據(jù)的存儲情況和流行度。本文方案將區(qū)塊鏈中的智能合約作為檢測機構,執(zhí)行數(shù)據(jù)的重復性檢測和流行度檢測。本節(jié)測試在不同文件大小情況下數(shù)據(jù)檢測的時間開銷,如圖5所示。實驗表明,數(shù)據(jù)檢測時間開銷并不會受到文件大小的影響。

原因在于,本文方案中,檢測分片合約CheckFragment執(zhí)行重復性檢測和流行度檢測時,僅需輸入用戶唯一標識UserID、分片標簽tag、用戶備份意愿RBackup。其中,同一文件中所有分片的UserID和RBackup始終保證不變。tag由標簽生成算法TagGen計算而來,即由不同大小文件劃分得到的分片會具有相同位數(shù)的tag。故在檢測分片合約和區(qū)塊鏈中數(shù)據(jù)規(guī)模相同時,文件大小不會對數(shù)據(jù)檢測時間開銷造成影響。

同時,文獻[25]同樣采用區(qū)塊鏈上的智能合約作為檢測機構。與本文不同的是,該方案每檢測一次分片的存儲情況,都需要調用智能合約執(zhí)行重復性檢測,且不支持流行度檢測。本文模型中,用戶只需調用一次智能合約即可檢測文件中所有分片的存儲情況。故本文方案中的檢測方式減少了調用智能合約的次數(shù),可降低檢測所需要的時間。同時,圖5表明,本文方案中一次性檢測所有分片思想的時間開銷,要遠低于多次檢測分片思想的時間開銷。此外,本文方案的分片檢測合約具有更多的功能,其可以面向兩個虛擬存儲空間,檢測分片的存儲情況和流行度。

5.2.2 構造文件鏈時間開銷

本文方案中,在文件上傳前,當前用戶需先將文件構造為文件鏈。構造文件鏈分為文件預處理和構造文件鏈兩個部分。

a)文件預處理包含文件分片、分片的收斂加密、生成分片標簽,時間開銷測試結果如圖6所示。實驗結果表明,該階段時間開銷隨著文件體積的增大隨之增大,但不受文件中分片流行度與存儲情況的影響。

原因在于,文件分片、分片的收斂加密、生成分片標簽的三個階段僅需輸入文件F,而決定分片情況的數(shù)據(jù)塊地址Ri.value和分片流行度Ri.DP不參加該階段的計算。因此,文件預處理時不存在差異性策略,不會受到分片流行度與存儲情況的影響。

b)構造文件鏈的時間開銷如圖7所示。實驗表明,在情況1和3下,構造文件鏈的時間開銷隨著文件的增大而增大。而情況2和4下,該階段的時間開銷并不隨文件增大。

原因在于,在情況1和3下,由于文件對應分片的流行度分別處于非流行和流行時,存儲網(wǎng)絡中并沒有存儲相應流行度的數(shù)據(jù)塊,故在構造文件鏈的數(shù)據(jù)塊時,數(shù)據(jù)塊中存儲的是完整的分片,而不同的文件大小會被劃分成不同大小的分片。同時,構造數(shù)據(jù)塊包含構造數(shù)據(jù)域和構造尋址域兩個階段,構造數(shù)據(jù)域時需對分片進行加密,構造尋址域時需對數(shù)據(jù)域部分進行哈希運算,故兩個階段時間開銷均會受到分片大小影響。因此,在情況1和3下,構造文件鏈會受到文件大小的影響。

在情況2和4下,存儲網(wǎng)絡已經(jīng)存儲文件鏈中相應流行度的數(shù)據(jù)塊,故數(shù)據(jù)塊中存儲的內容是存儲完整分片數(shù)據(jù)的數(shù)據(jù)塊地址。而數(shù)據(jù)塊地址位數(shù)是恒定的,故不同大小的分片不會對構造數(shù)據(jù)塊時間開銷造成影響。因此,在情況2和4下,構造文件鏈不會受到文件大小的影響。

此外,在情況1和2下,文件對應分片的流行度為非流行,故在構造數(shù)據(jù)塊的數(shù)據(jù)域時,僅需對存儲的內容進行兩次加密;在情況3和4下,文件對應分片的流行度為流行,僅需一次加密。因此,在分片處于相同流行度時,情況1構造文件鏈的時間開銷要高于情況3,情況2構造文件鏈的時間開銷要高于情況4。

5.2.3 上傳文件鏈時間開銷

文件鏈構造完成后,當前用戶需要將文件鏈上傳至去中心化存儲網(wǎng)絡中,其時間開銷測試結果如圖8所示。實驗表明,在情況1和3下,文件鏈傳輸?shù)臅r間開銷隨著文件的增大而增大。而在情況2和4下,該階段的時間開銷并不隨文件增大。情況2和4的文件鏈傳輸時間要遠低于情況1和3。

原因在于構造文件鏈相同,在情況1和3下,文件鏈的數(shù)據(jù)塊中存儲的是完整分片,即在傳輸過程中要實現(xiàn)數(shù)據(jù)塊的物理上傳。在情況2和4下,文件鏈的數(shù)據(jù)塊中存儲的是存儲完整分片的數(shù)據(jù)塊地址,即在傳輸過程中要實現(xiàn)數(shù)據(jù)的邏輯上傳,執(zhí)行去重操作。

5.2.4 文件下載

本文模型中,當前用戶需要文件時,會從存儲網(wǎng)絡中下載文件鏈,并將其重構為文件。本階段主要圍繞數(shù)據(jù)塊第一次下載、第一次解密、第二次下載、第二次解密、合并文件五個步驟進行展開,時間開銷如圖9~12所示。結果表明,四種情況下獲取完整文件的時間開銷均會隨文件大小增大而增大,但其中各步驟占比不同。原因在于,在情況1和3下,文件鏈中的數(shù)據(jù)塊實現(xiàn)的是物理上傳,第一次下載時獲得的數(shù)據(jù)塊中存儲內容均是完整分片,因此,當前用戶無須進行數(shù)據(jù)塊的第二次下載和解密,第二次數(shù)據(jù)塊的下載和解密的時間均為0 s。

在情況2和4下,文件鏈中的數(shù)據(jù)塊實現(xiàn)的是邏輯上傳,僅存儲了存儲完整分片的數(shù)據(jù)塊地址,而非完整分片。又因為文件鏈中數(shù)據(jù)塊數(shù)據(jù)域體積是恒定的,故隨著文件體積大小增大,第一次下載和解密數(shù)據(jù)塊的時間開銷并不受影響。而第二次下載文件鏈中的數(shù)據(jù)塊時,數(shù)據(jù)塊中存儲的是完整的分片,因此數(shù)據(jù)塊的第二次下載和解密會隨文件體積而增大,它們的時間開銷增大。

5.3 去重效率分析

本節(jié)在當前用戶上傳數(shù)據(jù)或者主動備份數(shù)據(jù)后,對存儲網(wǎng)絡中存儲情況進行分析。存儲網(wǎng)絡部分存儲情況如表6所示。其中,行表示上傳的次數(shù),列表示第幾次進行備份。交叉部分S表示經(jīng)過若干次上傳和備份時,存儲網(wǎng)絡中存儲文件的總大小。其中,S針對本文方案,S針對不支持數(shù)據(jù)去重的存儲系統(tǒng)。S表示文件的大小。ε為極小的值,表示文件鏈中除去完整數(shù)據(jù)以外的大小。由分析可得,將大小為S的文件在本文方案中進行備份與去重后,無論上傳多少次,存儲網(wǎng)絡中存儲的空間不會超過4S+ε。因此,提高了存儲服務器的空間利用率。

6 結束語

本文提出了面向去中心化存儲的數(shù)據(jù)流行度去重模型。為了實現(xiàn)在不可信環(huán)境下對流行度數(shù)據(jù)執(zhí)行重復性檢測和流行度檢測,本文借助區(qū)塊鏈的不可竄改性與智能合約的不可抵賴性,將區(qū)塊鏈上的智能合約作為檢測機構,保障了檢測結果的真實性,使數(shù)據(jù)流行度與加密方式相匹配。為提高數(shù)據(jù)存儲的可靠性,本文提出文件鏈存儲結構,該結構可以關注流行度數(shù)據(jù)去重,同時將文件構建成適合去中心化存儲網(wǎng)絡存儲的結構。此外,本文借助備份標識,將存儲網(wǎng)絡虛擬劃分為兩個虛擬存儲空間,并面向兩個虛擬存儲空間,實現(xiàn)數(shù)據(jù)的檢測與存儲,滿足用戶備份需求。最后,安全性分析和實驗表明本文方案具有可行性。

參考文獻:

[1]Li Peng, Zheng Yan, Liang Xueqin, et al. SecDedup: secure data deduplication with dynamic auditing in the cloud[J]. Information Sciences, 2023, 644:119279.

[2]Benil T, Jasper J. Blockchain based secure medical data outsourcing with data deduplication in cloud environment[J]. Computer Communications, 2023, 209: 1-13.

[3]Prajapati P, Shah P. A review on secure data deduplication: cloud storage security issue[J]. Journal of King Saud University-Computer and Information Sciences, 2022,34(7): 3996-4007.

[4]Douceur J R, Adya A, Bolosky W J, et al. Reclaiming space from duplicate files in a serverless distributed file system[C]//Proc of the 22nd International Conference on Distributed Computing Systems. Piscataway, NJ: IEEE Press, 2002: 617-624.

[5]Xie Qingyuan, Zhang Chen, Jia Xiaohua. Security-aware and efficient data deduplication for edge-assisted cloud storage systems[J]. IEEE Trans on Services Computing, 2023,16(3): 2191-2202.

[6]Stanek J, Sorniotti A, Androulaki E, et al. A secure data deduplication scheme for cloud storage[C]//Proc of International Conference on Financial Cryptography and Data Security. Berlin: Springer, 2014: 99-118.

[7]Stanek J, Kencl L. Enhanced secure thresholded data deduplication scheme for cloud storage[J]. IEEE Trans on Dependable and Secure Computing, 2018,15(4): 694-707.

[8]高文靜, 咸鶴群, 程潤輝. 基于雙層加密和密鑰共享的云數(shù)據(jù)去重方法[J]. 計算機學報, 2021,44(11): 2203-2215. (Gao Wenjing, Xian Hequn, Cheng Runhui. A cloud data deduplication method based on double-layered encryption and key sharing[J]. Chinese Journal of Computers, 2021,44(11): 2203-2215.)

[9]高文靜, 咸鶴群, 田呈亮, 等. 基于雙層加密的云存儲數(shù)據(jù)去重方法[J]. 密碼學報, 2020,7(5): 698-712. (Gao Wenjing, Xian Hequn, Tian Chengliang, et al. A cloud storage deduplication me-thod based on double-layered encryption[J]. Journal of Cryptologic Research, 2020,7(5): 698-712.)

[10]Ha Guanxiong, Chen Hang, Jia Chunfu, et al. A secure deduplication scheme based on data popularity with fully random tags[C]//Proc of the 20th International Conference on Trust, Security and Privacy in Computing and Communications. Piscataway, NJ: IEEE Press, 2021: 207-214.

[11]哈冠雄, 賈巧雯, 陳杭, 等. 無第三方服務器的基于數(shù)據(jù)流行度的加密去重方案[J]. 通信學報, 2022,43(8): 17-29. (Ha Guanxiong, Jia Qiaowen, Chen Hang, et al. Data popularity-based encrypted deduplication scheme without third-party servers[J]. Journal on Communications, 2022,43(8): 17-29.)

[12]Zhang Guipeng,Yang Zhenguo,Xie Haoran,et al.A secure authorized deduplication scheme for cloud data based on blockchain[J]. Information Processing & Management, 2021,58(3): 102510.

[13]Wang Yunling, Miao Meixia, Wang Jianfeng, et al. Secure deduplication with efficient user revocation in cloud storage[J]. Computer Standards & Interfaces, 2021,78: 103523.

[14]Sharma P, Jindal R, Borah M D. Blockchain-based decentralized architecture for cloud storage system[J]. Journal of Information Security and Applications, 2021, 62: 102970.

[15]Qi Saiyu, Wei Wei, Wang Jianfeng, et al. Secure data deduplication with dynamic access control for mobile cloud storage[J]. IEEE Trans on Mobile Computing, 2024,23(4):2566-2582).

[16]Li Jingyi, Wu Jigang, Chen Long, et al. Deduplication with blockchain for secure cloud storage[M]//Xu Zongben, Gao Xinbo, Miao Qiguang, et al. Big Data. Singapore: Springer, 2018: 558-570.

[17]Benoit A, Hakem M, Robert Y. Fault tolerant scheduling of prece-dence task graphs on heterogeneous platforms[C]//Proc of IEEE International Symposium on Parallel and Distributed Processing. Pisca-taway, NJ: IEEE Press, 2008: 1-8.

[18]Wang Shuli, Li Kenli, Mei Jing, et al. A task scheduling algorithm based on replication for maximizing reliability on heterogeneous computing systems[C]//Proc of IEEE International Parallel & Distributed Processing Symposium Workshops. Piscataway, NJ: IEEE Press, 2014: 1562-1571.

[19]Nakamoto S. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. (2008). https://bitcoin.org/en/bitcoin-paper.

[20]Nizamuddin N, Salah K, Azad M A, et al. Decentralized document version control using Ethereum blockchain and IPFS[J]. Computers & Electrical Engineering, 2019,76: 183-197.

[21]顏亮, 葛麗娜, 胡政. 基于區(qū)塊鏈的屬性基多關鍵詞排序搜索方案 [J]. 計算機應用研究, 2023,40(7): 1952-1956,1963. (Yan Liang, Ge Lina, Hu Zhen. Blockchain-based attribute-based multi-keyword ranking search scheme[J]. Application Research of Computers, 2023,40(7): 1952-1956,1963.)

[22]Zhang Guipeng,Xie Haoran,Yang Zhenguo,et al.BDKM:a blockchain-based secure deduplication scheme with reliable key management[J]. Neural Processing Letters, 2021,54: 2657-2674.

[23]Benisi N Z, Aminian M, Javadi B. Blockchain-based decentralized storage networks: a survey[J]. Journal of Network and Computer Applications, 2020, 162: 102656.

[24]Tian Guohua, Hu Yunhan, Wei Jianghong, et al. Blockchain-based secure deduplication and shared auditing in decentralized storage[J]. IEEE Trans on Dependable and Secure Computing, 2021,19(6): 3941-3954.

[25]Li Yandong, Zhu Liehuang, Shen Meng, et al. CloudShare: towards a cost-efficient and privacy-preserving alliance cloud using permissioned blockchains[M]//Hu Jiankun, Khalil I,Tari Z, et al. Mobile Networks and Management. Cham: Springer International Publishing, 2018: 339-352.

猜你喜歡
去中心化區(qū)塊鏈
一種去中心化的網(wǎng)絡域名服務系統(tǒng)模型
保險企業(yè)的區(qū)塊鏈技術應用方向選擇研究
區(qū)塊鏈技術在金融領域的應用與前景研究
區(qū)塊鏈技術的應用價值分析
“區(qū)塊鏈”的茍且、詩和遠方
淺析移動互聯(lián)語境下中小成本電影去中心化的創(chuàng)作趨向
基于區(qū)塊鏈技術的數(shù)字貨幣與傳統(tǒng)貨幣辨析
“去中心化”電子商務背景下大學生網(wǎng)絡創(chuàng)業(yè)前景分析
淺析新媒體視閾下的新聞失實報道
用“區(qū)塊鏈”助推中企走出去