孫羽 黨仁 周虎 朱德新
關(guān)鍵詞:區(qū)塊鏈;量子密鑰;云存儲
0 引言(Introduction)
作為一種新興的數(shù)據(jù)存儲方式,云存儲在數(shù)據(jù)存儲量、可靠性、成本等方面的優(yōu)勢使其逐步取代了傳統(tǒng)的存儲方式,為解決海量電子數(shù)據(jù)存儲難題提供了全新的解決方案。盡管云存儲技術(shù)發(fā)展繁榮,但在云環(huán)境中存儲數(shù)據(jù)仍存在一些機(jī)密性、可用性和完整性方面的安全問題[1]。針對云存儲數(shù)據(jù)的隱私問題,研究人員提出了不同的密碼技術(shù),確保云存儲數(shù)據(jù)的隱私安全[2-4]。考慮到傳統(tǒng)的加密技術(shù)存在一定的安全隱患,本文采用量子加密技術(shù)加密數(shù)據(jù),確保數(shù)據(jù)存儲安全[5]。目前,已經(jīng)得到實(shí)用化的量子密鑰分發(fā)技術(shù)是由BENNETT和BRASSARD在1984年提出的BB84協(xié)議,該協(xié)議通過傳輸光子并測量光子的偏振態(tài)實(shí)現(xiàn)對稱的量子密鑰,但是其依賴于光纖網(wǎng)絡(luò),并且單光子的探測設(shè)備成本較高,能實(shí)現(xiàn)的傳輸距離極短,因此限制了其應(yīng)用范圍[6]。區(qū)塊鏈技術(shù)具有分布式存儲、可信賴、透明性、防篡改、去中心化以及可追溯的特性。本文利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)量子密鑰的擴(kuò)展應(yīng)用,提升量子密鑰分發(fā)的安全性和實(shí)用性。
1 相關(guān)知識(Related technologies)
1.1 區(qū)塊鏈技術(shù)
區(qū)塊鏈?zhǔn)且环N融合多種現(xiàn)有技術(shù)的新型分布式計(jì)算和存儲范式,它利用分布式共識算法生成和更新數(shù)據(jù),并利用對等網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)間的數(shù)據(jù)傳輸,結(jié)合密碼學(xué)原理和時(shí)間戳等技術(shù)的分布式賬本保證存儲數(shù)據(jù)的不可篡改性,利用自動化腳本代碼或智能合約實(shí)現(xiàn)上層應(yīng)用邏輯[7]。與傳統(tǒng)的數(shù)據(jù)庫相比,區(qū)塊鏈相當(dāng)于一種分布式的數(shù)據(jù)庫,采用去中心化的設(shè)計(jì)思想,使得數(shù)據(jù)的存儲和處理不依賴于中心化機(jī)構(gòu)而是由全網(wǎng)的節(jié)點(diǎn)共同維護(hù),使得數(shù)據(jù)具有更高的安全性和透明性。
1.2 可搜索加密
可搜索加密技術(shù)是近年研發(fā)的一種技術(shù),針對云服務(wù)器上存儲的加密數(shù)據(jù),采用可搜索加密算法在密文上進(jìn)行關(guān)鍵字搜索。2004年,BONEH 等[8]提出了第一個(gè)公鑰可搜索加密方案。公鑰可搜索加密(PEKS)算法如下。
1.3 量子密鑰分發(fā)技術(shù)
量子密碼是一門新型的交叉學(xué)科,是量子理論、信息科學(xué)和計(jì)算機(jī)科學(xué)相結(jié)合的產(chǎn)物。量子密鑰分發(fā)(Quantum KeyDistribution, QKD)是量子通信技術(shù)中應(yīng)用最廣泛的成熟技術(shù),QKD的安全性來自量子力學(xué)的兩個(gè)特性:一是量子世界本質(zhì)的真隨機(jī)性,這是產(chǎn)生真隨機(jī)密鑰的關(guān)鍵;二是承載有非正交信息的單量子態(tài)不可以被完美復(fù)制[9]。量子密鑰分發(fā)過程既可以通過光纖通信網(wǎng)絡(luò)實(shí)現(xiàn),也可以在無線空間或其他介質(zhì)中實(shí)現(xiàn),主要取決于采用的量子密鑰分發(fā)協(xié)議。QKD協(xié)議主要有基于離散變量類協(xié)議和基于連續(xù)變量類協(xié)議。
2 系統(tǒng)模型(System model)
本節(jié)介紹結(jié)合量子密鑰和區(qū)塊鏈的安全云存儲模型和基于區(qū)塊鏈?zhǔn)录O(jiān)聽機(jī)制的量子密鑰分發(fā)模型。
2.1 結(jié)合量子密鑰和區(qū)塊鏈的安全云存儲模型
本文提出了結(jié)合量子密鑰和區(qū)塊鏈的安全云存儲方案,云存儲系統(tǒng)模型圖如圖1所示。方案涉及多種技術(shù)的結(jié)合應(yīng)用:使用量子密鑰加密數(shù)據(jù);利用可搜索加密實(shí)現(xiàn)數(shù)據(jù)密文的安全檢索。采用云存儲服務(wù)器和區(qū)塊鏈結(jié)合的方式,云存儲服務(wù)器用于存儲原始數(shù)據(jù)密文,區(qū)塊鏈用來存儲數(shù)據(jù)的索引信息及量子密鑰分發(fā)的標(biāo)記信息,并且利用事件監(jiān)聽機(jī)制實(shí)現(xiàn)對稱量子密鑰的分發(fā)。云存儲服務(wù)器可以存儲各種形式的數(shù)據(jù),本文以存儲文件數(shù)據(jù)為例,對方案模型進(jìn)行介紹。
2.1.1 模型參與實(shí)體
模型中的主要參與實(shí)體包括區(qū)塊鏈、量子密鑰云服務(wù)器、云存儲服務(wù)器、后臺服務(wù)器、客戶端及用戶。
區(qū)塊鏈(BC):模型中的區(qū)塊鏈類型為聯(lián)盟鏈。區(qū)塊鏈賬本記錄文件的索引信息及量子密鑰分發(fā)的標(biāo)記信息。
云存儲服務(wù)器(FCS):FCS負(fù)責(zé)存儲原始文件的密文,存儲成功后將文件密文存儲地址返回,并響應(yīng)用戶的文件下載請求。
量子密鑰云服務(wù)器(QKCS):QKCS部署在云上,由高速時(shí)間相位編碼技術(shù)生成量子密鑰,并且負(fù)責(zé)提供量子密鑰,生成量子密鑰分發(fā)的標(biāo)記信息,利用部署在其上的區(qū)塊鏈軟件開發(fā)工具包(Software Development Kit,SDK)調(diào)用交易以及進(jìn)行區(qū)塊鏈鏈碼事件的監(jiān)聽。
后臺服務(wù)器(BS):BS中部署的服務(wù)端應(yīng)用程序包含RSA密鑰管理模塊、AES 加密打包模塊、用戶信息管理模塊、文件信息管理模塊、公私鑰管理模塊、量子密鑰SDK模塊、區(qū)塊鏈SDK模塊和可搜索加密模塊等。文件信息管理模塊負(fù)責(zé)產(chǎn)生原始文件的Hash值,使用量子密鑰對文件進(jìn)行加密,并將文件密文上傳到云存儲服務(wù)器,將安全索引上傳到區(qū)塊鏈。用戶信息管理模塊的作用是管理用戶信息。公私鑰管理模塊產(chǎn)生BS的公鑰和私鑰,管理合法客戶端用戶的公鑰文件。量子密鑰SDK模塊用于連接量子密鑰云服務(wù)器實(shí)時(shí)獲取量子密鑰。區(qū)塊鏈SDK模塊用于連接搭建的區(qū)塊鏈網(wǎng)絡(luò),操作和管理區(qū)塊鏈分布式數(shù)據(jù)庫。可搜索加密模塊負(fù)責(zé)對文件提取出的關(guān)鍵字進(jìn)行加密,從而形成安全索引,在文件檢索時(shí)為用戶產(chǎn)生關(guān)鍵字搜索陷門,并匹配安全索引中的關(guān)鍵字密文。
客戶端(CS):CS部署的客戶端應(yīng)用程序是用戶正常訪問系統(tǒng)的平臺,包含文件解密模塊、公私鑰管理模塊、更改用戶密碼模塊、量子密鑰SDK模塊、區(qū)塊鏈SDK模塊等。量子密鑰SDK模塊用于連接量子密鑰云服務(wù)器,獲取量子密鑰云服務(wù)器發(fā)送的量子密鑰密文。文件解密模塊的作用是將來自后臺服務(wù)器的加密文件利用量子密鑰進(jìn)行解密,然后計(jì)算解密后文件的Hash值,并將其與從區(qū)塊鏈中查詢出的文件Hash值進(jìn)行比較。公私鑰管理模塊生成CS的私鑰和公鑰,管理后臺服務(wù)器端的公鑰文件。
用戶(U):U可以使用系統(tǒng)提供的云存儲服務(wù)。
2.1.2 方案具體流程
(1)系統(tǒng)初始化,后臺服務(wù)器應(yīng)用程序進(jìn)行全局公共參數(shù)設(shè)置,生成系統(tǒng)公共參數(shù)params={g,G1,G2,e,p,H1,H2,H3}。
(2)量子密鑰云服務(wù)器注冊成為聯(lián)盟鏈用戶,聯(lián)盟鏈為QKCS生成公私鑰對,即{pkq,skq },BS的公私鑰管理模塊根據(jù)params 生成BS的公鑰和私鑰對{pka,ska}。
(3)用戶U登錄客戶端注冊身份,CS的公私鑰管理模塊根據(jù)params 生成U的公鑰和私鑰對{pku,sku},U通過CS上傳文件F 并設(shè)置搜索文件的關(guān)鍵字W 。
(4)BS中量子密鑰SDK1模塊根據(jù)量子密鑰云服務(wù)器的下載服務(wù)地址請求獲取文件加密量子密鑰k,QKCS使用BS的公鑰pka 將k 加密為k^=RSApka (k),通過經(jīng)典信道發(fā)送給BS中的文件信息管理模塊,同時(shí)量子密鑰云服務(wù)器將發(fā)送的量子密鑰k 在數(shù)據(jù)庫的密鑰ID和量子密鑰k 的Hash值與用戶ID構(gòu)成鍵值對{用戶ID,量子密鑰ID+Hash值}上鏈存儲。
(5)BS的文件信息管理模塊對文件F 進(jìn)行哈希運(yùn)算后生成Hash值HF ,使用后臺服務(wù)器的私鑰ska 解密量子密鑰k,k=RSAska(k^)。利用AES 加密算法F^=AESk(F),得到加密文件F^,并上傳至云存儲服務(wù)器,同時(shí)云存儲服務(wù)器返回文件密文的存儲地址Addr。
(6)可搜索加密模塊執(zhí)行可搜索加密生成算法,將文件關(guān)鍵字W 加密為關(guān)鍵字密文W^,然后將關(guān)鍵字密文W^、文件密文存儲地址Addr、用戶ID以及HF 等信息組成安全索引Index={W^,Addr,ID,HF }數(shù)據(jù)結(jié)構(gòu)并存儲于BC。
(7)U需要訪問包含某關(guān)鍵字W 的文件時(shí),利用客戶端發(fā)起文件共享請求,可搜索加密模塊為該請求產(chǎn)生搜索陷門TD,利用搜索陷門向區(qū)塊鏈發(fā)起查詢交易,匹配含關(guān)鍵字W的文件索引,并返回安全索引Index,在客戶端展示檢索到的文件基本信息。
(8)客戶端收到文件查詢請求階段反饋的索引Index 信息時(shí),在量子密鑰云服務(wù)器中設(shè)置的區(qū)塊鏈SDK2也利用監(jiān)聽器獲取索引Index 信息。根據(jù)Index 信息中的用戶ID,區(qū)塊鏈SDK2可以獲取已經(jīng)存儲在區(qū)塊鏈賬本中用戶ID標(biāo)識的量子密鑰ID,再根據(jù)量子密鑰ID從量子密鑰數(shù)據(jù)庫中獲取相應(yīng)的量子密鑰k。
(9)U通過客戶端下載搜索到的文件時(shí),量子密鑰云服務(wù)器使用用戶的公鑰加密得到量子密鑰,然后將密文發(fā)送到客戶端,利用U的私鑰解密量子密鑰k??蛻舳送ㄟ^索引中文件地址信息從云存儲服務(wù)器拿到文件密文并利用AES解密算法F=AESk(F^),解密得到明文F。
2.2 基于區(qū)塊鏈?zhǔn)录O(jiān)聽機(jī)制的量子密鑰分發(fā)模型
為了實(shí)現(xiàn)結(jié)合量子密鑰和區(qū)塊鏈的安全云存儲方案中量子密鑰的運(yùn)用,設(shè)計(jì)了基于區(qū)塊鏈?zhǔn)录O(jiān)聽機(jī)制的量子密鑰分發(fā)模型(圖2)。
(1)Alice、Bob和量子密鑰云服務(wù)器注冊成為區(qū)塊鏈的用戶,區(qū)塊鏈為用戶生成對應(yīng)的公鑰和私鑰。
(2)Alice根據(jù)量子密鑰下載服務(wù)地址,向量子密鑰云服務(wù)器發(fā)送量子密鑰下載請求。
(3)量子密鑰云服務(wù)器從區(qū)塊鏈獲取到Alice的公鑰,用Alice公鑰將一串長度為256 bit的量子密鑰加密成密文,然后通過經(jīng)典信道發(fā)送給Alice,Alice用自己私鑰解密,獲得量子密鑰明文。量子密鑰云服務(wù)器將發(fā)送的量子密鑰在數(shù)據(jù)庫的密鑰ID和量子密鑰的Hash值標(biāo)識為Alice上鏈存儲,此為量子密鑰分發(fā)標(biāo)記信息。
(4)Bob向區(qū)塊鏈發(fā)起查詢Alice所用量子密鑰的交易。此時(shí),區(qū)塊鏈鏈碼狀態(tài)發(fā)生變化,觸發(fā)鏈碼中定義的事件,然后調(diào)用區(qū)塊鏈?zhǔn)录ㄖ獧C(jī)制,將事件類型和相關(guān)數(shù)據(jù)通知區(qū)塊鏈鏈碼事件監(jiān)聽器,其中相關(guān)數(shù)據(jù)是指Bob所發(fā)起交易的payload內(nèi)容,即Alice的量子密鑰分發(fā)標(biāo)記信息。
(5)量子密鑰云服務(wù)器所設(shè)置的區(qū)塊鏈鏈碼事件監(jiān)聽器監(jiān)聽到Bob發(fā)起交易產(chǎn)生的鏈碼事件,獲取Bob交易的信息,根據(jù)Alice的量子密鑰ID,從量子密鑰數(shù)據(jù)庫中獲取相應(yīng)的量子密鑰,利用Bob的公鑰加密生成量子密鑰密文,然后通過經(jīng)典信道發(fā)送給Bob。
(6)Bob收到量子密鑰密文后,根據(jù)自己的私鑰解密量子密鑰明文,并計(jì)算量子密鑰Hash值,并與從區(qū)塊鏈中查詢到的標(biāo)識為Alice的量子密鑰Hash值進(jìn)行比對,若相同,則Bob獲取到了未被篡改且與Alice相同的對稱量子密鑰,至此量子密鑰分發(fā)完成。
3 安全性與隱私性分析(Security and privacyanalysis)
半可信的云服務(wù)器存儲的是文件密文,本文中使用量子密鑰作為AES算法的加密密鑰進(jìn)行文件加密。有研究表明:對于高級加密標(biāo)準(zhǔn)(AES-256)這樣的對稱加密算法,適用于大量數(shù)據(jù)快速加密,并且使用量子密鑰這種完全隨機(jī)的高度安全密鑰作為初始密鑰,可以保證即使在量子攻擊的情況下,仍然是安全的,保證了數(shù)據(jù)的機(jī)密性[10]。文件的Hash值記錄在區(qū)塊鏈賬本中,區(qū)塊鏈自身具備的特性保證了區(qū)塊鏈賬本數(shù)據(jù)難以被篡改,同時(shí)可以驗(yàn)證云服務(wù)器中存儲的文件數(shù)據(jù)是否是完整的。
量子密鑰云服務(wù)器上鏈存儲的量子密鑰標(biāo)記信息僅包含量子密鑰在數(shù)據(jù)庫的存儲ID和哈希摘要值,由于ID值不包含有效信息,而且哈希函數(shù)具有單向性,因此不會從量子密鑰標(biāo)記信息獲取敏感信息。保證在量子密鑰云服務(wù)器向用戶發(fā)送量子密鑰時(shí),量子密鑰服務(wù)器使用用戶公鑰對量子密鑰進(jìn)行加密,此過程的安全性由RSA算法[11]的安全性保障。綜上,本系統(tǒng)兼顧安全性與隱私性。
4 實(shí)驗(yàn)與性能分析(Experiment and performanceanalysis)
4.1 實(shí)驗(yàn)環(huán)境
對本文提出的方案進(jìn)行數(shù)值模擬實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境如表1所示。
4.2 區(qū)塊鏈性能測試
本文提出的方案是基于區(qū)塊鏈技術(shù)實(shí)現(xiàn)的,而區(qū)塊鏈交易的更新和查詢時(shí)間開銷是系統(tǒng)性能的關(guān)鍵因素。在整個(gè)方案中,文件的安全索引和量子密鑰分發(fā)的標(biāo)記信息均存儲到區(qū)塊鏈上,并在必要時(shí)進(jìn)行查詢追溯。由于安全索引在區(qū)塊鏈交易中是屬于數(shù)據(jù)量最大的,因此本文開展的實(shí)驗(yàn)以安全索引的交易為代表,通過測試聯(lián)盟鏈網(wǎng)絡(luò)交易的更新和查詢操作的吞吐量以及平均時(shí)延評估本方案的性能。
通過Caliper工具分別發(fā)送從1 000次到10 000次的查詢和更新文件安全索引交易至Fabric聯(lián)盟鏈網(wǎng)絡(luò),每次實(shí)驗(yàn)測試10次,計(jì)算交易吞吐量和時(shí)延的平均值,結(jié)果如圖3和圖4所示。
從圖3和圖4可以看出,區(qū)塊鏈添加安全索引時(shí),隨著交易數(shù)量的變化,成功的交易基本維持在每秒135~150次,并且時(shí)間延遲也基本保持在0.15~0.23 s。區(qū)塊鏈查詢安全索引時(shí),隨著交易次數(shù)的增加,區(qū)塊鏈交易始終維持著較高的吞吐量和較低的時(shí)間延遲;即使有很高的交易數(shù)量,例如10 000次交易,也能達(dá)到約0.018 s的低時(shí)間延遲和每秒315次成功交易的高吞吐量。因此得出,本系統(tǒng)構(gòu)造的區(qū)塊鏈并不適合過高并發(fā)交易,但是在較低并發(fā)的交易情況下,區(qū)塊鏈能夠發(fā)揮不錯(cuò)的效果。
4.3 系統(tǒng)效率測試
為驗(yàn)證本文方案的可行性和效率,通過實(shí)際部署的區(qū)塊鏈和量子密鑰云服務(wù)器以及量子密鑰分發(fā)網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)分析。量子密鑰云服務(wù)器QKCS采用DELL Power Egde R740,CPU型號為Intel(R) Xeon(R) Silver 4110 CPU @2.10 GHz,內(nèi)存為32 GB,硬盤大小為4 TB。量子密鑰分發(fā)設(shè)備基于誘騙態(tài)BB84量子密鑰分發(fā)協(xié)議,采用時(shí)間相位編碼技術(shù),集成千兆級工作頻率的量子信號發(fā)射模塊。
在云存儲的應(yīng)用場景下評估系統(tǒng)的性能。用戶上傳文件,后臺服務(wù)器從QKCS獲取量子密鑰,將量子密鑰加密文件儲存在云存儲服務(wù)器中。用戶下載文件,經(jīng)過量子密鑰分發(fā),獲取文件密文解密量子密鑰,解密出文件明文。通過測試文件上傳獲取加密量子密鑰花費(fèi)的時(shí)間和下載文件獲取解密量子密鑰的時(shí)間,分析方案的效率。
對于后臺服務(wù)器獲取加密文件量子密鑰的消耗時(shí)間和客戶端接收對稱解密量子密鑰的消耗時(shí)間,本文進(jìn)行了10~100次的測試,將得到的數(shù)據(jù)進(jìn)行歸納整理,得到結(jié)果如圖5所示。
本文不考慮量子密鑰的生成過程,僅對存儲于云存儲服務(wù)器的量子密鑰做擴(kuò)展運(yùn)用,以測試本文設(shè)計(jì)的量子密鑰分發(fā)方案的實(shí)際表現(xiàn),評估系統(tǒng)性能。從圖5可以看出,在網(wǎng)絡(luò)環(huán)境穩(wěn)定的情況下,客戶端獲取解密量子密鑰花費(fèi)的時(shí)間會比后臺服務(wù)端獲取加密量子密鑰花費(fèi)的時(shí)間稍長,這是進(jìn)行區(qū)塊鏈交易需要消耗一些時(shí)間導(dǎo)致的。從圖5展示的實(shí)驗(yàn)數(shù)據(jù)可以看出,后臺服務(wù)端每次獲取加密量子密鑰的平均時(shí)間約為242 ms,客戶端每次獲取解密量子密鑰的平均時(shí)間約為360 ms,因此對稱量子密鑰分發(fā)實(shí)現(xiàn)了較高的分發(fā)效率,滿足實(shí)際的使用場景。
5 結(jié)論(Conclusion)
本文提出了一種基于區(qū)塊鏈的量子密鑰分發(fā)方案,并將此方案實(shí)際運(yùn)用于云存儲環(huán)境中。首先,考慮到經(jīng)典的量子密碼體系雖然具有絕對的安全性,但是其建設(shè)成本極高且通常只適用于兩端通信,因此利用區(qū)塊鏈技術(shù)設(shè)計(jì)了實(shí)用性較高的對稱量子密鑰分發(fā)方法。其次,本文充分利用量子密鑰的特征和優(yōu)勢,將其與經(jīng)典加密方式融合應(yīng)用到云存儲中的數(shù)據(jù)加密上,實(shí)現(xiàn)了量子密鑰的擴(kuò)展運(yùn)用。最后,對本文提出的整體方案進(jìn)行了安全性分析,并對方案進(jìn)行模擬實(shí)驗(yàn),測試區(qū)塊鏈性能和對稱量子密鑰分發(fā)效率,分析方案的綜合性能,確認(rèn)了本方案具有良好的安全性和實(shí)用性。