張正昊 李 勇 張振江
(北京交通大學(xué)電子信息工程學(xué)院 北京 100044)(19120172@bjtu.edu.cn)
在當(dāng)今大數(shù)據(jù)時(shí)代,人們的日常生活中會(huì)產(chǎn)生大量數(shù)據(jù),這些數(shù)據(jù)代表著一個(gè)人的日常習(xí)慣、行為動(dòng)態(tài)、生活軌跡等,是極其重要的隱私數(shù)據(jù).數(shù)據(jù)產(chǎn)生的源頭可能多種多樣,不同的公司、企業(yè)、部門之間都持有用戶數(shù)據(jù).在大數(shù)據(jù)背景下,這些蘊(yùn)涵著巨大價(jià)值的數(shù)據(jù)必然走向共享、開(kāi)放[1],即數(shù)據(jù)只有流動(dòng)起來(lái)才能發(fā)揮其最大效能,進(jìn)一步挖掘出數(shù)據(jù)背后的隱藏信息,為企業(yè)和個(gè)人提供更好的服務(wù)質(zhì)量[2-3].如果不同數(shù)據(jù)只存放于獨(dú)立的機(jī)構(gòu)內(nèi)部,就會(huì)形成“數(shù)據(jù)孤島”,數(shù)據(jù)得不到充分利用,造成數(shù)據(jù)浪費(fèi).
然而,數(shù)據(jù)共享過(guò)程中存在的突出問(wèn)題是,數(shù)據(jù)擁有方往往難以控制數(shù)據(jù)的流向,數(shù)據(jù)是否能得到合法使用也難以保證.例如2020年11月,國(guó)內(nèi)某快遞公司的40余萬(wàn)條客戶個(gè)人信息被內(nèi)部用戶獲取之后倒賣,被泄露的信息包括客戶的收發(fā)件地址、姓名、電話等,這是一起嚴(yán)重的數(shù)據(jù)泄露事件.因此有必要研究隱私數(shù)據(jù)在各方之間共享時(shí)的安全性,實(shí)現(xiàn)數(shù)據(jù)的可控共享.另外,許多信息泄露事件都是內(nèi)部人員所為,因此數(shù)據(jù)共享也需要設(shè)置監(jiān)管方對(duì)數(shù)據(jù)共享進(jìn)行監(jiān)管,確保所有的數(shù)據(jù)獲取請(qǐng)求和數(shù)據(jù)響應(yīng)合規(guī)合法,最大程度避免數(shù)據(jù)泄露情況的發(fā)生.
針對(duì)敏感數(shù)據(jù)共享過(guò)程中的痛點(diǎn)和難點(diǎn),文獻(xiàn)[4]基于大數(shù)據(jù)平臺(tái)提出了一種安全的敏感數(shù)據(jù)共享框架.該框架從平臺(tái)中數(shù)據(jù)的生命周期出發(fā),分別從數(shù)據(jù)提交、存儲(chǔ)、使用和銷毀4個(gè)方面考慮數(shù)據(jù)的安全共享問(wèn)題.文獻(xiàn)[4]的作者設(shè)計(jì)了一種異構(gòu)代理重加密方案,支持從身份基加密[5]到公鑰加密[6]之間的轉(zhuǎn)換.另外為了避免隱私信息的泄露,數(shù)據(jù)請(qǐng)求者將在基于虛擬機(jī)監(jiān)視器(virtual machine monitor, VMM)[7]的私有進(jìn)程中對(duì)數(shù)據(jù)進(jìn)行下載操作,所有的密鑰將保存在私有進(jìn)程的內(nèi)存中.框架為所有隱私數(shù)據(jù)設(shè)置了一種基于租約的機(jī)制,在租約到期后,明文和密鑰將從云中徹底銷毀.但是該框架對(duì)請(qǐng)求者的隱私問(wèn)題考慮不充分,任何發(fā)生在平臺(tái)上的數(shù)據(jù)共享行為都會(huì)被無(wú)關(guān)第三方得知,并且其訪問(wèn)控制功能的實(shí)現(xiàn)主要依賴于數(shù)據(jù)擁有方是否為請(qǐng)求方生成了重加密密鑰,對(duì)數(shù)據(jù)請(qǐng)求方的權(quán)限控制相對(duì)較弱.
2008年,Nakamoto[8]提出比特幣概念,區(qū)塊鏈開(kāi)始引起關(guān)注.由于區(qū)塊鏈具有分布式、防篡改等特性,一些學(xué)者開(kāi)始使用區(qū)塊鏈進(jìn)行訪問(wèn)控制,以設(shè)計(jì)可控的敏感數(shù)據(jù)共享方案.文獻(xiàn)[9]針對(duì)云環(huán)境下的電子病歷共享場(chǎng)景,設(shè)計(jì)了一個(gè)輕量可擴(kuò)展的聯(lián)盟鏈,所有的用戶實(shí)體都將經(jīng)過(guò)授權(quán)之后才能進(jìn)入共享系統(tǒng),并且所有的共享行為都會(huì)被實(shí)時(shí)記錄.該方案利用區(qū)塊鏈分布式與防篡改等特性,構(gòu)造了比較強(qiáng)的訪問(wèn)控制方案.文獻(xiàn)[10]研究了醫(yī)療數(shù)據(jù)在無(wú)信任環(huán)境下的數(shù)據(jù)共享問(wèn)題,基于區(qū)塊鏈技術(shù)提出了醫(yī)療數(shù)據(jù)管理系統(tǒng)MeDShare.在該系統(tǒng)內(nèi),對(duì)數(shù)據(jù)的操作行為都將以防篡改的方式記錄下來(lái),并且通過(guò)訪問(wèn)控制機(jī)制進(jìn)行用戶權(quán)限的管理.但是其訪問(wèn)控制通過(guò)訪問(wèn)控制表實(shí)現(xiàn),驗(yàn)證用戶權(quán)限時(shí)開(kāi)銷比較大.文獻(xiàn)[11]基于聯(lián)盟鏈并使用可搜索加密技術(shù)[12]和秘密分享技術(shù)[13],設(shè)計(jì)了一個(gè)基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享方案.在該方案中,希望得到共享數(shù)據(jù)的多個(gè)用戶將獲得搜索憑證的密鑰份額,并提供給聯(lián)盟鏈進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后會(huì)得到搜索憑證,進(jìn)而向數(shù)據(jù)服務(wù)器請(qǐng)求相應(yīng)的密文,密文會(huì)被提交給智能合約進(jìn)行解密,從而得到數(shù)據(jù)明文.此方案考慮到了云存儲(chǔ)服務(wù)器并非完全可信的問(wèn)題,并使用秘密分享技術(shù)來(lái)支持多個(gè)用戶的共享,但該方案的交互過(guò)程相對(duì)復(fù)雜,聯(lián)盟鏈、云服務(wù)器、數(shù)據(jù)擁有方和請(qǐng)求方之間都有交互,系統(tǒng)耦合性比較高.
隨著使用區(qū)塊鏈進(jìn)行訪問(wèn)控制的相關(guān)研究不斷深入,學(xué)者們開(kāi)始注意到數(shù)據(jù)共享過(guò)程中的監(jiān)管問(wèn)題.文獻(xiàn)[14]使用代理重加密技術(shù)[15]進(jìn)行數(shù)據(jù)共享,同時(shí)保證數(shù)據(jù)擁有方對(duì)數(shù)據(jù)有一定程度的可控性.當(dāng)用戶有下載文件的權(quán)限時(shí),第三方代理就會(huì)將數(shù)據(jù)密文和密鑰的重加密密文發(fā)給用戶,用戶用自己的私鑰解密出密鑰,從而獲得數(shù)據(jù)明文.該方案使用區(qū)塊鏈對(duì)用戶權(quán)限進(jìn)行驗(yàn)證,并且記錄請(qǐng)求內(nèi)容,實(shí)現(xiàn)一定程度的監(jiān)管性.文獻(xiàn)[16]從時(shí)間維度的訪問(wèn)控制出發(fā),結(jié)合屬性基加密[17]和區(qū)塊鏈,設(shè)計(jì)了醫(yī)療數(shù)據(jù)的共享方案.數(shù)據(jù)擁有方在給其他用戶授權(quán)時(shí),會(huì)部署一個(gè)限時(shí)智能合約,只有用戶同時(shí)滿足訪問(wèn)控制結(jié)構(gòu)和時(shí)間范圍才能獲得數(shù)據(jù).該方案雖然設(shè)置了監(jiān)管中心對(duì)用戶的身份進(jìn)行管理,但是監(jiān)管中心無(wú)法監(jiān)管共享請(qǐng)求,也不知道是否有非法共享行為發(fā)生.另外,從時(shí)間維度對(duì)數(shù)據(jù)共享進(jìn)行限制的靈活性不高,只要用戶符合訪問(wèn)控制結(jié)構(gòu),那么在相應(yīng)的時(shí)間段內(nèi)用戶可以隨意獲得數(shù)據(jù),擁有方無(wú)法撤回授權(quán).
從上述分析中可知,敏感數(shù)據(jù)共享過(guò)程仍存在待解決的問(wèn)題:1)數(shù)據(jù)擁有方無(wú)法靈活地進(jìn)行權(quán)限更新和撤銷.2)數(shù)據(jù)共享本身缺乏監(jiān)管性,有方案確實(shí)設(shè)置了監(jiān)管中心,但監(jiān)管性比較弱.鑒于敏感數(shù)據(jù)的重要性,必須有一個(gè)強(qiáng)監(jiān)管方來(lái)保證數(shù)據(jù)共享過(guò)程的合法合規(guī).3)共享過(guò)程中的用戶身份隱私問(wèn)題也需要考慮,共享本身是雙方之間的交互過(guò)程,不相關(guān)的第三方不能獲取到參與方的身份信息.針對(duì)這3個(gè)問(wèn)題,本文以區(qū)塊鏈技術(shù)為背景,提出了一個(gè)可控、可追責(zé)的敏感數(shù)據(jù)共享方案,旨在提高數(shù)據(jù)共享的隱私性、可控性和可監(jiān)管性.該方案可以確保數(shù)據(jù)擁有方對(duì)數(shù)據(jù)的控制權(quán),設(shè)置監(jiān)管方以監(jiān)督共享全過(guò)程,避免非法行為的出現(xiàn).并且數(shù)據(jù)共享的行為將記錄在區(qū)塊鏈上,利用區(qū)塊鏈不可篡改等特性,監(jiān)管方可以追溯數(shù)據(jù)的使用過(guò)程,在非法行為出現(xiàn)時(shí)找到相關(guān)參與方進(jìn)行問(wèn)責(zé).引入強(qiáng)指定驗(yàn)證者簽名技術(shù),保護(hù)了數(shù)據(jù)請(qǐng)求方的身份隱私.在訪問(wèn)控制方面使用動(dòng)態(tài)累加器,使得數(shù)據(jù)擁有方可以靈活地對(duì)授權(quán)用戶進(jìn)行管理,包括權(quán)限的更新和撤銷等,增強(qiáng)了擁有方對(duì)自己數(shù)據(jù)的可控程度.
設(shè)n=pq為RSA模,c∈強(qiáng)RSA假設(shè)是指在不知道n的分解的前提下,計(jì)算a,b∈使得ab=cmodn是困難的.
給定生成元為g的q階循環(huán)群,對(duì)于x,y∈R已知(g,gx,gy),CDH假設(shè)是指對(duì)于任何運(yùn)行在多項(xiàng)式時(shí)間t內(nèi)的算法A,正確計(jì)算gxy的概率是可以忽略的.
給定生成元為g的q階循環(huán)群,對(duì)于x,y,z∈R已知(g,gx,gy,gz),DDH假設(shè)是指對(duì)于任何運(yùn)行在多項(xiàng)式時(shí)間t內(nèi)的算法A,正確判斷是否有z=xymodq成立的概率是可以忽略的.
給定生成元為g的q階循環(huán)群,對(duì)于x,y∈R已知(g,gx,gy),GDH假設(shè)是指借助于DDH預(yù)言機(jī)的前提下,對(duì)于任何運(yùn)行在多項(xiàng)式時(shí)間t內(nèi)的算法A,正確計(jì)算gxy的概率是可以忽略的.
本文方案包含的算法有10個(gè):
1)Setup(1k)→params為系統(tǒng)初始化算法.以安全性參數(shù)1k為輸入,輸出公共參數(shù)params.
2)KeyGen(params)→(skA,pkA,skB,pkB,skR,pkR)為密鑰生成算法.輸入公共參數(shù)params,輸出數(shù)據(jù)擁有方密鑰對(duì)(skA,pkA)、數(shù)據(jù)請(qǐng)求方密鑰對(duì)(skB,pkB)和監(jiān)管方密鑰對(duì)(skR,pkR).
3)AccInit(params)→(Acc,C)為累加器初始化算法,由數(shù)據(jù)擁有方執(zhí)行.為屬于自己的數(shù)據(jù)設(shè)置一個(gè)訪問(wèn)控制結(jié)構(gòu),輸出累加器Acc和授權(quán)集合C.
4)ShareRequest(params,skB,pkB,pkA)→reqShare為共享請(qǐng)求算法,由數(shù)據(jù)請(qǐng)求方執(zhí)行.輸入公共參數(shù)params、數(shù)據(jù)請(qǐng)求方的密鑰對(duì)(skB,pkB)和數(shù)據(jù)擁有方的公鑰pkA,輸出共享請(qǐng)求reqShare.
5)Authorization(params,skA,reqShare,Acc,C)→(0|witnessB,witness)為授權(quán)算法,由數(shù)據(jù)擁有方執(zhí)行.輸入公共參數(shù)params、數(shù)據(jù)擁有方的私鑰skA、共享請(qǐng)求reqShare、當(dāng)前累加器Acc和授權(quán)集合C,數(shù)據(jù)擁有方根據(jù)共享請(qǐng)求判斷是否授權(quán),如果不授權(quán)則輸出0,如果授權(quán)則輸出數(shù)據(jù)請(qǐng)求方證據(jù)witnessB和其他授權(quán)用戶的新證據(jù)witness.
6)RegulateRequest(params,msg,pkA,skB,pkB,pkR,witnessB)→reqRegulate為監(jiān)管請(qǐng)求算法,由數(shù)據(jù)請(qǐng)求方執(zhí)行.輸入公共參數(shù)params、數(shù)據(jù)擁有方公鑰pkA、請(qǐng)求方自己的密鑰對(duì)skB,pkB、監(jiān)管方公鑰pkR、請(qǐng)求內(nèi)容msg和授權(quán)憑證witnessB,請(qǐng)求方為監(jiān)管方生成一個(gè)強(qiáng)指定驗(yàn)證者簽名,并附帶其他附加信息后輸出reqRegulate.
7)RegulateVerify(params,pkB,skR,pkR,reqRegulate)→(0|σR)為監(jiān)管驗(yàn)證算法,由監(jiān)管方執(zhí)行.輸入公共參數(shù)params、請(qǐng)求方公鑰pkB、監(jiān)管請(qǐng)求和監(jiān)管方密鑰對(duì)skR,pkR,監(jiān)管方驗(yàn)證信息的正確性和合法性,如果認(rèn)為該請(qǐng)求不合法,則輸出0,如果認(rèn)為請(qǐng)求可以執(zhí)行,則輸出簽名σR,并將請(qǐng)求上傳到區(qū)塊鏈中.
8)DataResponse(params,pkB,pkR,σR,wB,msg)→(0|resData)為數(shù)據(jù)響應(yīng)算法,由數(shù)據(jù)服務(wù)器執(zhí)行.輸入公共參數(shù)params、數(shù)據(jù)請(qǐng)求方發(fā)來(lái)的信息pkB,σR,wB和監(jiān)管方公鑰pkR,數(shù)據(jù)服務(wù)器驗(yàn)證所有憑證是否成立,如果驗(yàn)證通過(guò),則返回響應(yīng)的數(shù)據(jù),輸出resData,并將響應(yīng)信息上傳到區(qū)塊鏈,否則輸出0.
9)Revoke(params,Acc,C)→(Accnew,witness)為權(quán)限撤銷算法,由數(shù)據(jù)擁有方執(zhí)行.輸入公共參數(shù)params和當(dāng)前累加器Acc,數(shù)據(jù)擁有方對(duì)在權(quán)限集合C中的某個(gè)用戶進(jìn)行權(quán)限撤銷,輸出新累加器Accnew和其他還存在于授權(quán)集合中的用戶的證據(jù)witness.
10)RegulateSim(params,pkB,skR,pkR,reqRegulate)→σSim為副本模擬算法,由監(jiān)管方在有需要時(shí)執(zhí)行.為了保護(hù)數(shù)據(jù)請(qǐng)求方的隱私,輸入公共參數(shù)params、請(qǐng)求方公鑰pkB、監(jiān)管請(qǐng)求reqRegulate和監(jiān)管方密鑰對(duì)skR,pkR,輸出簽名副本σSim.
在本文方案中,安全性需求描述為4方面:
1) 數(shù)據(jù)擁有方可以控制自己數(shù)據(jù)的流向,即可以靈活地將數(shù)據(jù)訪問(wèn)權(quán)限授權(quán)給其他用戶,也可以撤銷對(duì)某個(gè)用戶的授權(quán);
2) 數(shù)據(jù)請(qǐng)求方在獲得數(shù)據(jù)擁有方的授權(quán)之后,需要進(jìn)一步獲得監(jiān)管方的授權(quán),在與監(jiān)管方通信的過(guò)程中,數(shù)據(jù)請(qǐng)求方的隱私得到保護(hù);
3) 監(jiān)管方可以對(duì)數(shù)據(jù)的請(qǐng)求、響應(yīng)進(jìn)行全流程的把控,一旦發(fā)現(xiàn)非法行為的出現(xiàn),監(jiān)管方將追蹤到相應(yīng)的共享參與方;
4) 在數(shù)據(jù)請(qǐng)求方與監(jiān)管方交互的過(guò)程中,監(jiān)管方不能破壞請(qǐng)求方的隱私,也不能冒充數(shù)據(jù)請(qǐng)求方,向數(shù)據(jù)擁有方非法請(qǐng)求數(shù)據(jù).
本文假設(shè)數(shù)據(jù)服務(wù)器是可信的,且各參與方之間與數(shù)據(jù)服務(wù)器之間的信道是安全的.下面給出本文方案的安全性定義.
定義1.數(shù)據(jù)請(qǐng)求方匿名性.對(duì)于一個(gè)挑戰(zhàn)者C和敵手D之間的游戲Gameanony,如果不存在任何概率多項(xiàng)式時(shí)間敵手能以不可忽略的優(yōu)勢(shì)贏得該游戲,則該方案具有數(shù)據(jù)請(qǐng)求方匿名性.Gameanony定義為:
1) 對(duì)于簽名者S0,S1和驗(yàn)證者V,挑戰(zhàn)者C為其生成密鑰對(duì)——(skS0,pkS0),(skS1,pkS1),(skV,pkV),并將公鑰(pkS0,pkS1,pkV)發(fā)送給敵手D.
2) 敵手D在多項(xiàng)式時(shí)間內(nèi)向下列預(yù)言機(jī)發(fā)出查詢.
Osign.輸入待簽名消息M,pkSd(d∈{0,1}),pkV,輸出對(duì)消息M的簽名σ.
Osim.輸入待簽名消息M,pkSd(d∈{0,1}),pkV,輸出對(duì)消息M的簽名σ.
Over.輸入待簽名消息M,σ,pkSd(d∈{0,1}),pkV,當(dāng)σ有效時(shí)輸出1,否則輸出0.
3) 敵手D輸出消息M*,挑戰(zhàn)者C拋出硬幣選擇一個(gè)b∈{0,1},運(yùn)行指定驗(yàn)證者簽名算法輸出σ*=Sign(skSb,pkSb,pkV,M*),將σ*發(fā)送給敵手D.
4) 敵手D向Osign和Osim發(fā)出如步驟2)中的查詢,然后輸出b′,當(dāng)b′=b時(shí),敵手D贏得這個(gè)游戲.
定義2.數(shù)據(jù)擁有方可控性.如果滿足以下條件,則數(shù)據(jù)擁有方可以控制自己數(shù)據(jù)的流向,即方案具備可控性:
Pr[Setup(1k)→params,KeyGen(params)→
(skA,pkA,skB,pkB,skR,pkR),
AccInit(params)→(Acc,C),
ShareRequest(params,skB,pkB,pkA)→
reqShare:Authorization(params,skA,
reqShare,Acc,C)→0]≥1-v(λ),
或者
Pr[Setup(1k)→params,KeyGen(params)→
(skA,pkA,skB,pkB,skR,pkR),
AccInit(params)→(Acc,C),
ShareRequest(params,skB,pkB,pkA)→reqShare:
Authorization(params,skA,reqShare,Acc,C)→
(witnessB,witness)]≥1-v(λ),
其中,v(λ)為可忽略函數(shù),即數(shù)據(jù)擁有方不給數(shù)據(jù)請(qǐng)求方授權(quán)的概率接近于1,或數(shù)據(jù)擁有方向數(shù)據(jù)請(qǐng)求方授權(quán),并為其他授權(quán)用戶更新憑證的概率接近于1.
定義3.可監(jiān)管性.如果滿足以下條件,則監(jiān)管方可以審核系統(tǒng)中的共享請(qǐng)求和響應(yīng),即方案具有可監(jiān)管性:
Pr[Setup(1k)→params,KeyGen(params)→
(skA,pkA,skB,pkB,skR,pkR),
AccInit(params)→(Acc,C),
ShareRequest(params,skB,pkB,pkA)→reqShare,
Authorization(params,skA,reqShare,Acc,C)→
(witnessB,witness),RegulateRequest(params,
msg,pkA,skB,pkB,pkR,witnessB)→reqRegulate:
RegulateVerify(params,pkB,skR,
pkR,reqRegulate)→0]≥1-v(λ),
或者
Pr[Setup(1k)→params,KeyGen(params)→
(skA,pkA,skB,pkB,skR,pkR),
AccInit(params)→(Acc,C),
ShareRequest(params,skB,pkB,pkA)→
reqShare,Authorization(params,skA,
reqShare,Acc,C)→(witnessB,witness),
RegulateRequest(params,msg,
pkA,skB,pkB,pkR,witnessB)→reqRegulate:
RegulateVerify(params,pkB,skR,
pkR,reqRegulate)→σR]≥1-v(λ),
其中,v(λ)為可忽略函數(shù),即當(dāng)數(shù)據(jù)請(qǐng)求方的請(qǐng)求有問(wèn)題時(shí),監(jiān)管方否定該請(qǐng)求的概率接近于1,或者當(dāng)數(shù)據(jù)請(qǐng)求方的請(qǐng)求正確時(shí),監(jiān)管方同意該請(qǐng)求并生成監(jiān)管憑證的概率接近于1.
通過(guò)引入動(dòng)態(tài)累加器方案和強(qiáng)指定驗(yàn)證者簽名方案,基于區(qū)塊鏈技術(shù)設(shè)計(jì)了一種適用于敏感數(shù)據(jù)共享的方案.在該方案中,各數(shù)據(jù)共享方擁有對(duì)自己數(shù)據(jù)的控制權(quán),在將數(shù)據(jù)上傳時(shí)就設(shè)置好訪問(wèn)控制結(jié)構(gòu),只有滿足訪問(wèn)控制結(jié)構(gòu)的數(shù)據(jù)請(qǐng)求方才有機(jī)會(huì)獲得數(shù)據(jù).監(jiān)管方負(fù)責(zé)驗(yàn)證每一次數(shù)據(jù)的請(qǐng)求過(guò)程,數(shù)據(jù)的請(qǐng)求和響應(yīng)情況將被上傳到區(qū)塊鏈中,這些記錄只有監(jiān)管方可以讀取,并且由于區(qū)塊鏈具有不可篡改等特性,監(jiān)管方可以在出現(xiàn)非法行為時(shí)追溯數(shù)據(jù)的共享全過(guò)程,定位相關(guān)責(zé)任方,進(jìn)而采取必要措施.
在本節(jié)中,假設(shè)有2個(gè)參與方A和B,A將數(shù)據(jù)上傳到數(shù)據(jù)服務(wù)器中,B請(qǐng)求獲得A的某些數(shù)據(jù),共享流程如圖1所示.其中,本文假設(shè)數(shù)據(jù)服務(wù)器與各參與方之間的信道是安全可信的,其余信道不可靠,需要借助如SSL/TLS等技術(shù)進(jìn)行傳輸.本文方案約定Encpk(m)=c,Decsk(c)=m為非對(duì)稱加/解密算法,Sigsk(m)=σ,Verpk(σ)=0或1為數(shù)字簽名和簽名驗(yàn)證算法,具體計(jì)算過(guò)程不再贅述.方案構(gòu)造9個(gè)算法:
Fig. 1 Data requester B requests shared from data owner A圖1 數(shù)據(jù)請(qǐng)求方B向數(shù)據(jù)擁有方A請(qǐng)求共享數(shù)據(jù)
1)Setup(1k)→params.輸入安全參數(shù)1k,得到一個(gè)長(zhǎng)度為k的隨機(jī)數(shù)N,使得N=pq,其中p=2p′+1,q=2q′+1,p和q的長(zhǎng)度相等,并且p,q,p′,q′都是素?cái)?shù),從N的二次剩余循環(huán)群QRN中選擇一個(gè)隨機(jī)數(shù)u.接著選取一個(gè)乘法群,階為m,生成元為g,H:{0,1}×3→m為一個(gè)抗碰撞的Hash函數(shù).輸出公共參數(shù)params=(N,u,,m,g,H).
2)KeyGen(params)→(skA,pkA,skB,skR,pkR).參與數(shù)據(jù)共享的雙方A和B各自生成一個(gè)隨機(jī)數(shù)x1,x2∈m,令skA=x1,skB=x2,pkA=gskAmodm,pkB=gskBmodm,A的密鑰對(duì)為(skA,pkA),B的密鑰對(duì)為(skB,pkB).監(jiān)管方R選取隨機(jī)數(shù)x∈m,監(jiān)管私鑰skR=x,pkR=gskRmodm,得到監(jiān)管密鑰對(duì)(skR,pkR).A,B,R分別保管各自的私鑰,并公開(kāi)公鑰.
3)AccInit(params)→(Acc,C).A在本地維護(hù)一個(gè)授權(quán)集合C={c1,c2,…,cn},其中{c1,c2,…,cn}為n個(gè)授權(quán)用戶的公鑰,計(jì)算累加器Acc=uc1c2…cnmodN,輸出Acc.
4)ShareRequest(params,skB,pkB,pkA)→reqShare.設(shè)B想要獲取的內(nèi)容為msg,當(dāng)前系統(tǒng)時(shí)間為T,計(jì)算r1=EncpkA(pkB,msg,T),r2=SigskB(pkB,msg,T),輸出共享請(qǐng)求reqShare={r1,r2}發(fā)送給A.
6)RegulateRequest(params,msg,pkA,skB,pkB,pkR,witnessB)→reqRegulate.B收到witnessB后,計(jì)算DecskB(EncpkB(wB)),VerpkA(SigskA(wB))驗(yàn)證簽名的正確性.若驗(yàn)證失敗,則算法終止,回到ShareRequest;若驗(yàn)證成功,則生成強(qiáng)指定驗(yàn)證者簽名(strong designated verifier signature, SDVS)[20].為了避免惡意監(jiān)管方收到wB后,冒充數(shù)據(jù)請(qǐng)求方B向數(shù)據(jù)服務(wù)器S請(qǐng)求數(shù)據(jù),B不能將wB直接發(fā)送給R,而是應(yīng)該發(fā)送隨機(jī)化后的wB,過(guò)程有4個(gè)步驟.
① 隨機(jī)生成r,z,t,r′∈m;
④ 輸出簽名σDVS=(t,z,t′,z′).
① 將σDVS解析為(t,z,t′,z′);
算法1.關(guān)于累加器證據(jù)的零知識(shí)證明.
e(Acc,g);
②B生成隨機(jī)數(shù)s∈m,計(jì)算
e(Acc,g)s,并將w發(fā)送給R;
③ R生成隨機(jī)數(shù)η∈m,并將η發(fā)送給B;
④B計(jì)算μ=s+ηr,并將μ發(fā)給R;
本節(jié)分析本文方案的安全性.
定理1.如果Hash函數(shù)H為隨機(jī)預(yù)言機(jī),且GDH假設(shè)在群上成立,則該方案滿足監(jiān)管過(guò)程中的數(shù)據(jù)請(qǐng)求方隱私性.
證明.設(shè)存在一個(gè)敵手D,以(1/2+δ)的概率攻破了監(jiān)管過(guò)程中數(shù)據(jù)請(qǐng)求方的隱私性,即攻破了強(qiáng)指定驗(yàn)證者簽名SDVS的隱私性,下面使用D作為子程序,構(gòu)建算法E解決GDH假設(shè).
步驟1.E初始化GDH參數(shù)(,g,q,gu,gw)和DDH預(yù)言機(jī),E選擇一個(gè)隨機(jī)數(shù)u′∈q,令pkS0=gu,pkS1=gugu′,pkV=gw,將(pkS0,pkS1,pkV)發(fā)給D,E生成初始為空的2個(gè)表格HT和ST.
步驟2.D向E進(jìn)行如下查詢,其中,本文假設(shè)D不進(jìn)行重復(fù)查詢.
1) Hash查詢.輸入(M,K,R1,R2),如果E發(fā)現(xiàn)HT中已經(jīng)存在對(duì)應(yīng)的記錄((M,K,R1,R2),l),則直接返回c,否則,將(g,pkS0,pkV,K)和(g,pkS1,pkV,K)輸入DDH預(yù)言機(jī),分別得到b0和b1.如果b0=1,則輸出K并中斷;如果b1=1,則輸出K/(gw)u′并中斷.如果b0=b1=0,則生成隨機(jī)數(shù)τ∈q,將τ返回給D并在HT中增加((M,K,R1,R2),l).
步驟4.D輸出b′作為對(duì)b的猜測(cè).
在步驟2中,D要想在驗(yàn)證查詢階段得到返回值為1,則需要其輸入的簽名σM*合法,而合法的簽名將通過(guò)Hash查詢獲得,但D有可能不通過(guò)Hash查詢而猜出一個(gè)合法的簽名,這種情況的概率為1/q.因此,通過(guò)Hash查詢獲得合法簽名的概率最小為(1-1/q).而D贏得Gameanony的概率為(1/2+δ),但是D有可能沒(méi)有通過(guò)Hash查詢,只是隨機(jī)選擇lM*使其贏得Gameanony,這種情況的概率為(1/2+1/q),因此D經(jīng)過(guò)上述步驟得到正確結(jié)果的概率為((1/2+δ)-(1/2+1/q)),所以E解決GDH問(wèn)題的概率為:
由上式,εGDH不可忽略,與GDH假設(shè)矛盾.
證畢.
定理2.在數(shù)據(jù)共享過(guò)程中,只有持有數(shù)據(jù)擁有方憑證的其他參與方,才有可能獲得數(shù)據(jù),即數(shù)據(jù)擁有方具備數(shù)據(jù)的可控性.
證畢.
定理3.對(duì)于系統(tǒng)中的所有數(shù)據(jù)共享請(qǐng)求,監(jiān)管方能夠?qū)徍斯蚕碚?qǐng)求與響應(yīng),即方案具有可監(jiān)管性.
證畢.
定理4.監(jiān)管方權(quán)力限制.監(jiān)管方無(wú)法破壞數(shù)據(jù)請(qǐng)求方隱私性,也不能冒充獲得授權(quán)的數(shù)據(jù)請(qǐng)求方非法獲得數(shù)據(jù).
證明. 在本文方案中,數(shù)據(jù)請(qǐng)求方將用SDVS來(lái)請(qǐng)求監(jiān)管方的審核,由于該SDVS方案具有非授權(quán)性和非傳遞性的特征,因此沒(méi)有第三方可以驗(yàn)證或者生成合法的簽名.除此之外,在監(jiān)管方驗(yàn)證授權(quán)憑證時(shí),通過(guò)交互式證明協(xié)議,在不泄露憑證本身的前提下證明了正確性,因此監(jiān)管方無(wú)法冒充合法的被授權(quán)方去獲取數(shù)據(jù).
證畢.
定理5.監(jiān)管方可以通過(guò)對(duì)區(qū)塊鏈上存儲(chǔ)的信息進(jìn)行讀取,獲取到某個(gè)敏感數(shù)據(jù)共享過(guò)程的相關(guān)信息,在發(fā)現(xiàn)問(wèn)題時(shí)進(jìn)行追責(zé).
證明.在本文方案中,數(shù)據(jù)服務(wù)器S在返回給數(shù)據(jù)請(qǐng)求方數(shù)據(jù)時(shí),需要構(gòu)建resData=(msg′,pkB,T′),并計(jì)算EncpkR(resData)上傳至區(qū)塊鏈中.resData包含數(shù)據(jù)共享過(guò)程的參與方、共享內(nèi)容等信息,監(jiān)管方R可以解密這些信息從而進(jìn)行追責(zé).
證畢.
將本文方案與文獻(xiàn)[4,9,11,14]中的方案進(jìn)行安全性對(duì)比,如表1所示:
Table 1 Comparison of Security表1 安全性對(duì)比
由表1可以看到,本文方案對(duì)比其他方案,在實(shí)現(xiàn)敏感數(shù)據(jù)可控的前提下還具有一定程度的隱私性,對(duì)于共享過(guò)程,監(jiān)管方可以進(jìn)行監(jiān)管,同時(shí)監(jiān)管方的權(quán)力將受到限制.
文獻(xiàn)[10]同樣使用訪問(wèn)控制技術(shù)進(jìn)行權(quán)限的更新與撤銷,將本文方案與文獻(xiàn)[10]中的方案進(jìn)行復(fù)雜度的對(duì)比,結(jié)果如表2所示:
Table 2 Comparison of Complexity表2 復(fù)雜度對(duì)比
由于文獻(xiàn)[10]中通過(guò)訪問(wèn)控制表進(jìn)行訪問(wèn)控制,當(dāng)需要驗(yàn)證用戶權(quán)限時(shí),需要遍歷整個(gè)訪問(wèn)控制表,所以其時(shí)間復(fù)雜度為O(n),且需要存儲(chǔ)整張表,空間復(fù)雜度為O(n).而本文方案中使用累加器進(jìn)行訪問(wèn)控制,只需要用戶自己的憑證,結(jié)合公開(kāi)的累加器即可驗(yàn)證,其時(shí)間復(fù)雜度為O(1),并且驗(yàn)證方只需要累加器本身即可進(jìn)行驗(yàn)證,無(wú)需額外存儲(chǔ)信息,空間復(fù)雜度為O(1).所以本文方案的訪問(wèn)控制結(jié)構(gòu)比較高效.并且本文方案相比文獻(xiàn)[10],在做到高效訪問(wèn)控制的同時(shí),還實(shí)現(xiàn)了一定的隱私性和追責(zé)性.
文獻(xiàn)[21]使用代理重加密和可搜索加密技術(shù)進(jìn)行醫(yī)療數(shù)據(jù)共享,其數(shù)據(jù)共享階段包括陷門生成、搜索、解密3個(gè)階段.表3展示了常用密碼學(xué)計(jì)算步驟的計(jì)算成本,將本文方案與文獻(xiàn)[21]進(jìn)行比較,2個(gè)方案的計(jì)算成本如表4所示.
Table 3 Computational Cost of Common Cryptographic Algorithms
Table 4 Computational Cost of Schemes表4 方案計(jì)算成本
綜合表3和表4可得,本文方案在數(shù)據(jù)加密階段的計(jì)算成本明顯低于文獻(xiàn)[21].在數(shù)據(jù)共享階段,文獻(xiàn)[21]的計(jì)算成本約為29.209 8ms,本文方案的計(jì)算成本約為32.761 3ms,計(jì)算成本增加了約12%,這主要是因?yàn)楸疚姆桨冈跀?shù)據(jù)共享階段設(shè)置監(jiān)管方對(duì)數(shù)據(jù)共享過(guò)程進(jìn)行監(jiān)管,提高了方案的安全性,所以計(jì)算成本有所增加,但在可接受的范圍內(nèi).
在方案仿真部分,本實(shí)驗(yàn)使用Java語(yǔ)言,調(diào)用java.math.BigInteger庫(kù)與第三方j(luò)pbc庫(kù),針對(duì)本文方案中的各種算法進(jìn)行了仿真.實(shí)驗(yàn)環(huán)境配置如表5所示:
Table 5 Experimental Environment Configuration表5 實(shí)驗(yàn)環(huán)境配置
實(shí)驗(yàn)分別設(shè)置安全參數(shù)長(zhǎng)度為512 b和1 024 b,記錄每個(gè)算法的運(yùn)行時(shí)間,為了保證實(shí)驗(yàn)數(shù)據(jù)的可靠性,每一個(gè)算法的運(yùn)行時(shí)間均多次重復(fù)運(yùn)行后取平均值,不同安全參數(shù)下各算法的運(yùn)行時(shí)間如表6所示.
從表6中可以看出,在安全性參數(shù)長(zhǎng)度為512 b時(shí),Setup算法和AccInit算法由于需要生成一系列的參數(shù)所以耗時(shí)比較大,但是這2個(gè)算法往往只在系統(tǒng)啟動(dòng)時(shí)執(zhí)行一次,所以不會(huì)對(duì)系統(tǒng)整體效率產(chǎn)生影響.其余算法運(yùn)行時(shí)間均為毫秒級(jí)別,效率比較高.當(dāng)提高安全性參數(shù)時(shí),只有Setup和AccInit兩個(gè)算法受到比較大的影響,其余算法均比較穩(wěn)定.綜上,本文方案在保證了較高安全性的同時(shí),還具有良好的運(yùn)行效率.
Table 6 Running Time of Algorithms表6 算法運(yùn)行時(shí)間 ms
本文基于動(dòng)態(tài)累加器、強(qiáng)指定驗(yàn)證者簽名和區(qū)塊鏈技術(shù),提出了一種適用于敏感數(shù)據(jù)共享的方案,該方案具有隱私性、可控性、可監(jiān)管性、可問(wèn)責(zé)性和監(jiān)管約束性的特點(diǎn).通過(guò)對(duì)比分析證明了本文方案的安全性.本文的主要貢獻(xiàn)為:
1) 通過(guò)動(dòng)態(tài)累加器技術(shù),數(shù)據(jù)擁有方可以靈活地授予用戶權(quán)限或者撤銷已經(jīng)發(fā)出的授權(quán);
2) 設(shè)置監(jiān)管方對(duì)整個(gè)敏感數(shù)據(jù)共享過(guò)程進(jìn)行監(jiān)管,監(jiān)管方將審核每一個(gè)數(shù)據(jù)共享請(qǐng)求和響應(yīng)情況,從而避免出現(xiàn)非法共享行為;
3) 引入強(qiáng)指定驗(yàn)證者簽名技術(shù),使得數(shù)據(jù)請(qǐng)求方在請(qǐng)求監(jiān)管方審核時(shí)能夠保護(hù)自身的身份隱私,從而使得方案具有一定的隱私性;
4) 敏感數(shù)據(jù)共享過(guò)程的有關(guān)信息將由數(shù)據(jù)服務(wù)器以監(jiān)管方公鑰加密后上傳至區(qū)塊鏈,監(jiān)管方可以獲得這些信息來(lái)對(duì)數(shù)據(jù)共享過(guò)程進(jìn)行追責(zé);
5) 引入交互式零知識(shí)證明技術(shù),在不影響監(jiān)管方發(fā)揮監(jiān)管職責(zé)的前提下,限制監(jiān)管方能夠獲得的信息,避免惡意監(jiān)管方破壞系統(tǒng)的安全性.
未來(lái)工作將主要聚焦在減弱本文方案的假設(shè),比如考慮在數(shù)據(jù)存儲(chǔ)服務(wù)器半可信或者不可信前提下的共享方案,以及考慮當(dāng)多個(gè)用戶同時(shí)發(fā)起共享請(qǐng)求時(shí),如何提高系統(tǒng)效率的方法.
作者貢獻(xiàn)聲明:張正昊完成了論文所提方案的設(shè)計(jì)、仿真工作,以及論文初稿撰寫;李勇、張振江與張正昊一起討論所提方案的可行性,并在方案框架、方案仿真與分析方面進(jìn)行指導(dǎo).