胡榮磊 王樂胥 范曉紅
北京電子科技學(xué)院,北京市 100070
云端存儲相較于本地存儲,具有相對較低的使用價格與管理成本,收到用戶的青睞[1]。 同時,為了實現(xiàn)不可信云環(huán)境中的數(shù)據(jù)安全以及用戶隱私保護,數(shù)據(jù)以密文形態(tài)上傳至云存儲平臺。 但是,數(shù)據(jù)文件以密文的形式在云環(huán)境中存儲,數(shù)據(jù)使用者需要將文件密文下載并解密后才可實現(xiàn)檢索查詢。 這種做法步驟繁瑣且浪費網(wǎng)絡(luò)流量開銷以及計算開銷。 為解決云環(huán)境中文件密文的高效搜索問題,可搜索加密技術(shù)(Searchable Encryption,SE)應(yīng)運而生。
可搜索加密技術(shù)的出現(xiàn),使數(shù)據(jù)使用者可以憑借關(guān)鍵詞密文搜索云服務(wù)器中的文件密文。它利用云存儲服務(wù)器的計算資源進行文件密文檢索,達到快速、準確檢索數(shù)據(jù)文件密文,為用戶節(jié)省網(wǎng)絡(luò)和計算開銷的目的[2]。
可搜索加密技術(shù)最早由Song 等人[3]在2000 年提出,在此基礎(chǔ)上,研究人員從搜索效率、安全性以及功能性等方向?qū)伤阉骷用芗夹g(shù)進行改進[4]。 Su 等人[5]在2017 年提出了一種基于屬性的關(guān)鍵詞搜索加密方案,通過檢查用戶屬性與訪問結(jié)構(gòu)之間的匹配關(guān)系,實現(xiàn)對密文搜索的訪問控制。 Yang 等人[6]在2020 年提出一種非雙線性對運算的公共通道的公鑰認證可搜索加密方案(NBP-SCF-PAEKS),該方案與傳統(tǒng)的雙線性對方案相比搜索效率高,適用于運算能力有限的設(shè)備。 Raouf 等人[7]在2021 年提出了一種高效安全的無證書可搜索加密方案,在保證通信以及計算效率的前提下,可以抵御不同的關(guān)鍵字猜測攻擊。 區(qū)塊鏈技術(shù)憑借去中心化分布式賬本、可溯源、數(shù)據(jù)不可篡改刪除的特點,與可搜索加密技術(shù)結(jié)合,成為新的研究熱點。 在2021 年文獻[8]與區(qū)塊鏈技術(shù)相結(jié)合,提出了區(qū)塊鏈上的屬性基可搜索加密方案,利用區(qū)塊鏈不可篡改的特性保護關(guān)鍵字密文安全。 Zhai[9]等人設(shè)計了一種基于區(qū)塊鏈的可搜索加密電子病歷共享模型,實現(xiàn)大規(guī)模網(wǎng)絡(luò)下各醫(yī)療機構(gòu)對電子病歷的安全共享。 Liu[10]等人針對當前數(shù)據(jù)共享難、被攻擊、密文搜索效率低的問題,設(shè)計了一種基于倒排索引的可搜索加密數(shù)據(jù)共享方案。Pang[11]等人針對區(qū)塊鏈環(huán)境下已有的可搜索加密方案成本高、功能局限的問題,提出了支持驗證與公平支付的多關(guān)鍵詞排序檢索方案。
通過分析,當前區(qū)塊鏈上可搜索機密設(shè)計方案在功能方面存在缺陷。 設(shè)計方案模型中,數(shù)據(jù)使用者設(shè)計比較單一,沒有根據(jù)現(xiàn)實需求進行細化,不利于系統(tǒng)運行效率提高以及多樣性的訪問控制。
本文在文獻[8]所提方案的基礎(chǔ)上進行改進,提出了一個區(qū)塊鏈上多類型用戶屬性基可搜索加密方案,實現(xiàn)了對數(shù)據(jù)密文的準確搜索與細粒度的訪問控制以及在部分可信云環(huán)境下的數(shù)據(jù)安全與隱私保護。 本文同時對方案的可行性與安全性進行了分析和證明。 本文構(gòu)造的適用于多類型用戶的可搜索加密方案,其主要優(yōu)勢體現(xiàn)在以下兩個方面:
1.針對現(xiàn)實場景需求,在文獻[8]所提可搜索加密算法的基礎(chǔ)上,設(shè)計了多種數(shù)據(jù)使用者模型。 在結(jié)合屬性加密和可搜索加密的基礎(chǔ)上,通過設(shè)計不同類型數(shù)據(jù)使用者搜索方案,提高了搜索效率的同時,實現(xiàn)了具備高細粒度以及多樣性訪問控制的可搜索加密。
2.通過分析方案在不可信云環(huán)境中的運行步驟,提出適用于不同場景的解決方案,在易受攻擊的階段提供多重保護,有效防止因重放攻擊帶來的數(shù)據(jù)使用者搜索陷門盜用問題。
定義映射e:G1×G2→G2滿足以下性質(zhì)[12]:
(1) 雙線性
?P,Q,R∈G1,?a,b∈Z,e(Pa,Qb)=e(P,Q)ab,e(PQ,R)=e(P,R)e(Q,R),e(P,QR)=e(P,Q)e(P,R)
(2) 非退化性
如果P是G1的生成元,則e(P,P) 就是G2的生成元。
(3) 可計算性
?P,Q∈G1, 則存在一個有效算法計算e(P,Q)。
(1)判定雙線性Diffie-Hellman(decisional bilinear diffie-hellman assumption,DBDH)問題
設(shè)雙線性映射對e:G1×G2→G2,g 為循環(huán)群G1的生成元,隨機選擇a,b,c∈Z*>q,Z∈G2,給定元組(g,ga,gb,gc,Z),判定等式e(g,g)abc=Z是否成立[13]。
(2) 判定Diffie-Hellman(decisional diffiehellman assumption,DDH)問題
隨機選擇a,b,c∈,g 為循環(huán)群G1生成元。 給 定 元 組 (g,ga,gb,gc), 判 定c=ab(bmodp) 是否成立[14]。
設(shè)P={P1,P2,…,Pn} 表示參與者的集合,令2P=2{P1,P2,…,Pn} ={A |A?{P1,P2,…,Pn}},集合A?2P是單調(diào)的,當且僅當任意子集B,C?P,若B∈A,B?C,則C∈A[15].
設(shè)γ是一個訪問樹。γ中每一個非葉子節(jié)點x表示一個門限結(jié)構(gòu),用(kx,numx) 描述,其中numx表示x的子節(jié)點個數(shù),kx表示門限值,0≤kx≤numx.當kx=1 時表示或門,kx=numx表示與門。 葉子節(jié)點x用以描述屬性,其門限值kx= 1.
令r表示γ根節(jié)點,γx表示以x為根的子樹,γr即為γ.如果一個屬性集合S滿足訪問樹γx表示為γx(s)=1.
在訪問樹γ中,定義parent(x) 為節(jié)點x的父節(jié)點。 當x為葉子節(jié)點,定義att(x) 為節(jié)點x所描述的屬性。 定義index(x) 表示節(jié)點x在其兄弟節(jié)點中的編號。 定義滿足訪問樹如下:
當x為非葉子節(jié)點時,對x的所有子節(jié)點x*計算γx*(s).當且僅當至少有kx個子節(jié)點x*返回γx*(s)=1 時,γx(s)=1.
當x為葉子節(jié)點時,當且僅當x所描述的屬性att(x) 是屬性集合s的元素時,γx(s)=1[16].
本文所使用的符號及定義如表1 所示。
符號 說明DO 數(shù)據(jù)擁有者DU 數(shù)據(jù)使用者DUORD 普通用戶DUCO 合作用戶DUORG 組織用戶DUSU 超級用戶KDC 密鑰分發(fā)中心CS 云存儲中心BC 區(qū)塊鏈平臺SP 系統(tǒng)參數(shù)DUATT 數(shù)據(jù)使用者屬性att 屬性KDO 數(shù)據(jù)擁有者密鑰KDU 數(shù)據(jù)使用者密鑰ω關(guān)鍵字TD 搜索陷門CL 標識
本文借鑒文獻[8]系統(tǒng)模型,基于區(qū)塊鏈,針對不同類型數(shù)據(jù)使用者,使用屬性基加密與可搜索加密對多類型用戶搜索文件進行管理以及安全保護。 本文模型涉及5 類實體,分別是密鑰分發(fā)中心、數(shù)據(jù)擁有者、云存儲中心、區(qū)塊鏈以及多類型數(shù)據(jù)使用者。
(1)密鑰分發(fā)中心(Key Distribution Center,KDC)
KDC 作為可信機構(gòu),負責(zé)為系統(tǒng)生成系統(tǒng)參數(shù)SP、數(shù)據(jù)擁有者密鑰KDO以及根據(jù)數(shù)據(jù)使用者DU 屬性生成密鑰KDU與KDU使用時限,在該時限內(nèi)數(shù)據(jù)使用者可以憑借KDU生成搜索陷門檢索、閱讀文件。 同時KDC 將根據(jù)本文設(shè)計的多類型數(shù)據(jù)使用者模型,為DU 生成標識CL∈{CLORD,CLCO,CLORG,CLSU}.
(2)數(shù)據(jù)擁有者(Data Owner,DO)
DO 作為數(shù)據(jù)文件的所有者與分享方,將數(shù)據(jù)文件密文上傳至云存儲中心CS,CS 將文件密文地址返回DO,方便DO 自行查閱。 DO 提取合適數(shù)據(jù)文件關(guān)鍵字ω,通過結(jié)合DO 要求的數(shù)據(jù)使用者屬性與文件屬性生成訪問策略并根據(jù)自己所定義的訪問策略,使用KDO加密ω生成關(guān)鍵字密文ωc.DO 建立ωc與數(shù)據(jù)文件密文的對應(yīng)關(guān)系,并將ωc與建立的對應(yīng)關(guān)系上傳區(qū)塊鏈平臺BC.
(3)區(qū)塊鏈(BlockChain,BC)
BC 作為第三方可信平臺,負責(zé)調(diào)用智能合約進行關(guān)鍵字密文搜索與文件密文搜索記錄。DU 根據(jù)KDU與想要搜索的關(guān)鍵詞ωu生成搜索陷門TD,并將TD上傳BC,交由智能合約執(zhí)行搜索操作。 若搜索成功,BC 將按照DO 上傳的對應(yīng)關(guān)系,告知CS 對DU 開放閱讀權(quán)限至KDU使用時限結(jié)束。 同時,BC 負責(zé)記錄搜索陷門及搜索結(jié)果,用于查驗。
(4)云存儲中心(Cloud Storage Center,CS)
CS 作為云存儲服務(wù)提供方,負責(zé)加密數(shù)據(jù)文件的存儲與閱讀權(quán)限開放。 DO 將數(shù)據(jù)文件密文上傳CS 存儲,CS 將數(shù)據(jù)密文文件存儲地址返回DO。 當BC 調(diào)用智能合約搜索關(guān)鍵字成功后把結(jié)果返回CS,由CS 為DU 開放閱讀權(quán)限至區(qū)塊鏈平臺規(guī)定時間完成最后的搜索。
(5)數(shù)據(jù)使用者(Data User,DU)
DU 作為數(shù)據(jù)文件的使用者,使用KDU與ωu生成TD搜索數(shù)據(jù)文件密文,搜索成功后,DU 獲得文件閱讀權(quán)限至KDU使用時限結(jié)束。
在該模型中,根據(jù)實際場景需求,將不同類型的DU 進行分類,實現(xiàn)細粒化訪問控制的同時,提高搜索效率。 KDC 在DU 申請密鑰時,為DU 在KDU中添加標識。 DU 將標識本文DU 分類如下:
1)普通用戶(Data User Ordinary,DUORD)
DUORD作為無特點用戶,可以依據(jù)自身屬性結(jié)合自己想要搜索的關(guān)鍵詞完整執(zhí)行搜索流程,生成陷門進行數(shù)據(jù)文件密文搜索。 普通用戶系統(tǒng)模型圖如圖1 所示。
圖1 普通用戶系統(tǒng)模型
2)合作用戶(Data User Cooperation,DUCO)
合作用戶模型適用于多名用戶分別提供自身屬性合作搜索文件的場景。 在本方案中DUCO支持實際場景中DU 進行合作查看數(shù)據(jù)文件。如在電子病歷領(lǐng)域,需要不同醫(yī)院的醫(yī)生一起為病人進行會診,此時,病人的電子病歷需要各醫(yī)院醫(yī)生一起查看,在申請電子病歷文件時,單一醫(yī)生的屬性無法滿足病人的訪問控制策略,需要各醫(yī)院醫(yī)生合作搜索數(shù)據(jù)密文。 在本文方案中,在屬性密鑰申請時,DUCO向KDC 申請根據(jù)同一DUCO的所有用戶屬性生成的一個KDU進行數(shù)據(jù)文件密文搜索。 合作用戶系統(tǒng)模型圖如圖2所示。
圖2 合作用戶系統(tǒng)模型
3)組織用戶(Data User Organization,DUORG)
組織用戶模型適用于有相同屬性的大量用戶請求同一文件的場景。DUORG對應(yīng)同一組織內(nèi)具有大量相同屬性的用戶,如同一班級內(nèi)的所有學(xué)生以及同一部門的所有員工。 在同一組織的用戶,有時會有相同數(shù)據(jù)搜索需求。 在本文方案中,有相同文件搜索需求的同一組織用戶,DUORG可以向KDC 申請組織用戶標識CLORG,用以提高搜索效率。 組織用戶系統(tǒng)模型圖如圖3所示。
圖3 組織用戶系統(tǒng)模型
4)超級用戶(Data User Super,DUSU)
超級用戶模型適用于管理、審查人員檢查云存儲中心文件內(nèi)容的場景。 本文方案中DUSU的依據(jù)KDC賦予的標識CLSU, 在搜索所需密文時,可以不依據(jù)DO 訪問控制策略,成功搜索所需文件。 KDC 可以根據(jù)實際情況將CLSU賦予政府監(jiān)管部門以及該云存儲系統(tǒng)管理員。 超級用戶系統(tǒng)模型圖如圖4 所示。
圖4 超級用戶系統(tǒng)模型
本文算法借鑒文獻[8]方案進行功能擴展。
(1)系統(tǒng)初始化SETUP
由KDC 執(zhí)行。 KDC 輸出系統(tǒng)參數(shù)SP用于后續(xù)密鑰生成,關(guān)鍵字密鑰生成以及關(guān)鍵字密文搜索。
算法描述:KDC 為后續(xù)算法執(zhí)行生成系統(tǒng)參數(shù)SP={G1,G2,e,g,H0,H1,H2,H3,H4}.其中G1與G2是階為素數(shù)p的乘法循環(huán)群。e:G1×G1→G2,g為G1的生成元。 定義散列函數(shù)H0:{0,1}*→,H1:{0,1}*→G1,H2:CL→{0,1}*,H3:T→{0,1}*,H4:S→{0,1}*.
(2)密鑰生成KEYGEN
由KDC 執(zhí)行。 KDC 輸入SP, 為DO 輸出KDO,并根據(jù)DUATT與數(shù)據(jù)使用者類型為DU 生成KDU與CL.
算法描述:KDC 為數(shù)據(jù)擁有者生成密鑰KDO并根據(jù)用戶屬性DUATT為數(shù)據(jù)使用者生成密鑰KDU.KDU包含若干子部分,在密鑰生成與搜索陷門生成部分分別發(fā)揮作用。 KDC 根據(jù)DU 類型生成標識CL,并使用H2:CL→{0,1}*加密保護。 KDC 在為DU 生成KDU時,會綜合評估DU所提交屬性,為DU 生成一個KDU使用時間上傳至區(qū)塊鏈,在該時間內(nèi),DU 可憑借KDU生成的搜索陷門查找、閱讀文件;若超出該時間,則區(qū)塊鏈智能合約判定搜索陷門無效。 為適應(yīng)多類型用戶需求,KDU生成具體算法步驟以普通用戶為基礎(chǔ),根據(jù)不同用戶類型有所調(diào)整。
1)普通用戶
輸入:(SP,DUATT),即:系統(tǒng)參數(shù)SP、數(shù)據(jù)使用者屬性DUATT.計算
輸出:(KDO,KDU)
對于DU 在KDU使用時間內(nèi)追加的屬性申請,KDC 在審核后使用相同的系統(tǒng)參數(shù)為DU 更新KDU發(fā)送給DU。
2)合作用戶
DUCO中的DU 為了合作搜索得到數(shù)據(jù)文件密文集合到一起。 在同一DUCO中的DU 一起向KDC 申請屬于DUCO成員共有的KDU.KDC 根據(jù)DUCO中所用人的所有屬性生成一個密鑰KDU供DUCO成員使用。 KDC 添加CLCO標識用于標記合作用戶成員后,將生成的KDU發(fā)送給DUCO.
3)組織用戶
在密鑰生成階段KDC 首先給每名用戶共同的屬性例如{A 公司,研發(fā)部}生成密鑰,再在組織用戶KDU中添加CLORG標識。 相同的CLORG用來表示持有者屬于同一CLORG.
4)超級用戶
DUSU通常表示監(jiān)管部門或者該云存儲系統(tǒng)中的管理員。DUSU在搜索數(shù)據(jù)加密文件時享有特權(quán),在搜索時憑借CLSU向BC 驗明身份并直接獲取所需文件,而不需要通過復(fù)雜的屬性密鑰與搜索陷門生成。 其KDU={CLSU,H2(CLSU)}.
(3)關(guān)鍵字密文生成ENCRYPT
由DO 執(zhí)行。 DO 使用SP與KDO,根據(jù)設(shè)定的訪問控制策略,加密數(shù)據(jù)文件關(guān)鍵字ω生成關(guān)鍵字密文ωc.DO 將ωc上傳至BC.
算法描述:由數(shù)據(jù)擁有者DO 執(zhí)行,通過結(jié)合DO 要求的數(shù)據(jù)使用者屬性與文件屬性生成訪問策略,使用密鑰KDO, 根據(jù)訪問策略生成訪問樹γ, 加密關(guān)鍵詞ω生成ωc.設(shè)X為訪問樹γ所有葉子節(jié)點的集合,r為訪問樹γ根節(jié)點。 對于訪問樹γ中的每個節(jié)點x, 定義多項式px.多項式px的次數(shù)為節(jié)點x門限值kx減1, 且有
輸入:(SP,KDO,ω,γ),即:系統(tǒng)參數(shù)SP、數(shù)據(jù)擁有者密鑰KDO、關(guān)鍵字ω、由訪問控制策略生成的訪問樹γ.計算:
輸出:ωc
(4)關(guān)鍵詞密文搜索SEARCH
由DU 執(zhí)行。 DU 使用SP與KDU,結(jié)合感興趣的關(guān)鍵字ωu生成陷門TD.通過分析,在不可信云環(huán)境中,在關(guān)鍵詞密文搜索階段,DU 所提交陷門存在被惡意攻擊、盜用。 為防止TD被其他用戶盜用,實施重放攻擊,DU 在串行上傳陷門的通用情況下,在TD中加入時間戳T。 在組織用戶批量上傳陷門等并行上傳陷門的情況下,在TD中加入隨機數(shù)S.DU 將TD上傳BC,交智能合約進行關(guān)鍵字密文搜索。 智能合約關(guān)鍵詞密文搜索流程如圖5 所示。
圖5 關(guān)鍵詞密文搜索流程圖
算法描述:數(shù)據(jù)使用者DU 結(jié)合自身用戶類型CL,使用KDU與搜索關(guān)鍵詞ωu,生成搜索陷門TD上傳區(qū)塊鏈智能合約。 首先,智能合約根據(jù)KDC 上傳的DU 密鑰使用時限判斷此時DU生成的陷門是否在使用期限內(nèi)。 若通過,隨后,智能合約調(diào)用搜索算法,驗證DU 上傳陷門是否符合DO 指定的訪問控制策略。 為防止重放攻擊造成的搜索陷門TD盜用問題,DU 根據(jù)實際情況在TD中加入時間戳T或隨機數(shù)S, 并用H3:T→{0,1}*或H4:S→{0,1}*保護。 BC 在收到TD后首先進行檢驗,提高安全性。 為提高搜索效率以及符合實際場景,具體算法步驟以普通用戶為基礎(chǔ),根據(jù)不同用戶類型有所調(diào)整。
1)普通用戶
普通用戶DUORD生成搜索陷門TD。
輸入: (SP,KDU,ωu,T/S), 即:系 統(tǒng) 參 數(shù)SP、數(shù)據(jù)使用者密鑰KDU、DU 搜索關(guān)鍵字ωu以及時間戳T或隨機數(shù)S.計算:
輸出:TD
輸入:(SP,TD,ωc),即:系統(tǒng)參數(shù)SP、陷門TD、關(guān)鍵字密文ωc。
DUORD提交陷門TD至BC。 BC 將搜索記錄記錄在區(qū)塊中,并依據(jù)智能合約所記錄的內(nèi)容來自動執(zhí)行以下步驟:
①驗證TD時間戳T或隨機數(shù)S判斷是否為重放攻擊。 若驗證通過,則執(zhí)行下一步驟。
②驗證TD是否符合關(guān)鍵字密文ωc所定義訪問控制策略,若一致,則DUORD搜索成功。 BC記錄搜索結(jié)果。
對于?x∈X, 若x描述屬性屬于集合DUATT,則有
對于訪問樹γ中的非葉節(jié)點x,若其描述屬性屬于集合DUATT的子節(jié)點個數(shù)大于該非葉節(jié)點門限值kx,則Fx=e(g,g)(r+r1)px(0)。 若對于根節(jié)點r,有Fr=e(g,g)(r+r1)pr(0)=e(g,g)(r+r1)s則稱數(shù)據(jù)使用者屬性DUATT滿足訪問樹γ.計算是否等于co,若相等,則表明陷門搜索成功。
③BC 查看DO 上傳的關(guān)鍵字密文與文件密文的對應(yīng)關(guān)系,告知CS 向DUORD開放文件閱讀權(quán)限至KDU使用期結(jié)束。 智能合約調(diào)用過程就此完成。
2)合作用戶
DUCO選擇某一用戶,使用合作申請產(chǎn)生的KDU,生成陷門TD搜索文件,BC 識別TD中的CLCO,確認該陷門由合作用戶DUCO上傳。 若TD符合ωc中包含的訪問控制策略,BC 告知CS向DUCO的每一個成員開放文件閱讀權(quán)限至KDU使用期結(jié)束,此次DUCO合作結(jié)束。
3)組織用戶
同一組織的DU 在搜索相同數(shù)據(jù)文件時,可以使用組織用戶DUORG的標識CLORG來提高搜索效率。 執(zhí)行SEARCH算法時,DUORG中的所有用戶DU 執(zhí)行算法生成TD, 并在TD中添加標識CLORG上傳BC 平臺。 BC 通過CLORG識別出TD是DUORG搜索請求后,隨機選擇若干DU∈DUORG,驗證TD是否符合ωc所指定的訪問控制策略。 若符合,BC 告知CS 向DUORG中所有DU開放文件閱讀權(quán)限至KDU使用期結(jié)束。
4)超級用戶
本方案的超級用戶DUSU一般用來擔當管理員以及監(jiān)管角色。 憑借KDC 賦予的CLSU, 向BC 發(fā)出文件查看申請,BC 記錄申請后,命令CS向DUSU開放文件閱讀權(quán)限。
通過設(shè)計攻擊者A與挑戰(zhàn)者B之間的INDCPA 游戲,來證明本文方案中的關(guān)鍵字密文與陷門在選擇明文攻擊下是安全的。
定理1 若攻擊者A有不可忽略的優(yōu)勢ε攻破方案中的關(guān)鍵字密文安全,則B能夠以優(yōu)勢解決DBDH 問題。
證明:挑戰(zhàn)者B生成DBDH 元組
其中a,b,c,z∈.
初始化:挑戰(zhàn)者B運行算法,生成系統(tǒng)參數(shù)SP。A定義挑戰(zhàn)訪問樹γ*并將其發(fā)送給B。
階段1:A向B發(fā)起多項式次數(shù)的密鑰以及關(guān)鍵字密文詢問。 密鑰與關(guān)鍵字需滿足
密鑰詢問:A向B發(fā)送屬性集合DUATT1,DUATT2,DUATT3,…,DUATTN.要求A發(fā)送的屬性集合不可滿足挑戰(zhàn)訪問樹γ*。B運行密鑰生成算法,生成相應(yīng)數(shù)據(jù)使用者密鑰KDU1,KDU2,KDU3,…,KDUN發(fā)送給A.
挑戰(zhàn):A選擇兩個等長的挑戰(zhàn)關(guān)鍵字ω0,ω1與挑戰(zhàn)訪問樹γ*一并發(fā)送至B,B投擲硬幣,公平隨機選取μ∈{0,1},將ωμ加密后得到的關(guān)鍵字密文
發(fā)送給A.其中,X*為訪問樹γ*所有葉子節(jié)點的集合。 若令隨機數(shù)a=s,bc=α, 則關(guān)鍵字密文ωcμ可以表示為
階段2:A重復(fù)階段1 的工作,繼續(xù)向B發(fā)起詢問。 要求A發(fā)送的屬性集合不可滿足挑戰(zhàn)訪問樹γ*。
猜測:攻擊者A輸出μ的猜測μ′ ∈{0,1}.若μ=μ′, 則挑戰(zhàn)者B認為Z=e(g,g)abc; 若μ≠μ′,則挑戰(zhàn)者B認為Z=e(g,g)z.
若Z=e(g,g)abc,A獲得的密文有效。 若A有不可忽略的優(yōu)勢ε攻破關(guān)鍵字密文安全,所以
故B解決DBDH 問題的優(yōu)勢為:
初始化:挑戰(zhàn)者A運行算法,生成系統(tǒng)參數(shù)SP。
階段1:A向B發(fā)起多項式次數(shù)的密鑰以及陷門詢問。
挑戰(zhàn):A選擇兩個等長的挑戰(zhàn)關(guān)鍵字ω0,ω1.B投擲硬幣,公平隨機選取μ∈{0,1},使用ωμ計算得到陷門
階段2:A重復(fù)階段1 的工作,繼續(xù)向B發(fā)起詢問。
猜測:攻擊者A輸出μ的猜測μ′ ∈{0,1}.若μ=μ′,則挑戰(zhàn)者B認為Z=gab;若μ≠μ′,則挑戰(zhàn)者B認為Z=gz.
若Z=gab,A獲得的陷門有效。 因為A有不可忽略的優(yōu)勢ε攻破陷門安全,所以可得Pr[μ
對于用戶串行提交的陷門TD, 數(shù)據(jù)使用者DU 為其添加時間戳T,智能合約驗證陷門時間戳T,若T足夠接近當前時刻,則智能合約接受陷門TD;若T遠離當前時刻,則視為重放攻擊,智能合約丟棄該陷門TD。 如圖6 所示,對于攻擊者試圖上傳的盜用陷門,智能合約驗證時間戳T*,但是T*與智能合約時間不符,因此攻擊者無法通過重放攻擊盜用其他DU 的搜索陷門。對于通過檢驗的串行提交陷門TD,智能合約根據(jù)其T的先后順序,依次執(zhí)行搜索算法,保證搜索的順序執(zhí)行。
圖6 串行上傳陷門防止重放攻擊
對于并行提交的陷門TD, 數(shù)據(jù)使用者為其添加隨機數(shù)S,智能合約驗證陷門隨機數(shù)S, 智能合約記錄TD附加的隨機數(shù)S,若TD附帶的S未被智能合約記錄,則智能合約接受TD; 若S已被智能合約記錄,則視為重放攻擊,智能合約丟棄該TD。 如圖7 所示,攻擊者試圖上傳盜用陷門,智能合約驗證其隨機數(shù)S*, 但該隨機數(shù)已被智能合約數(shù)據(jù)庫記錄,因此攻擊者無法通過重放攻擊盜用其他DU 的搜索陷門。
圖7 并行上傳陷門防止重放攻擊
將本文方案與近幾年可搜索加密方案進行對比分析,從表2 看出,從功能對比角度,本文方案具有一定優(yōu)勢。
文獻[8,12]均將可搜索加密技術(shù)與屬性基加密技術(shù)向結(jié)合,由數(shù)據(jù)使用者屬性集合與訪問策略的契合程度定義其解密與搜索能力。 而文獻[12]與本文方案和文獻[8]不同的是,文獻[12]采用與門訪問結(jié)構(gòu),與本文方案和文獻[8]采用的訪問樹結(jié)構(gòu)相比,表達能力相對較弱。 文獻[8,13]與本文方案將區(qū)塊鏈技術(shù)引入可搜索加密方案。 依靠區(qū)塊鏈防篡改的特性,保護了加密關(guān)鍵詞的同時,將數(shù)據(jù)使用者搜索申請一并記錄,方便日后查驗。 文獻[14]在提出高效可搜索加密方案的同時,關(guān)注敵手對搜索陷門的竊聽與重放攻擊,提高了系統(tǒng)的安全性。 本文方案較文獻[8]方案相比,注重對用戶陷門重放攻擊保護的同時,依托實際場景,抽象出多類型用戶模型,并為各類型用戶提供個性化可搜索加密方案。 提高效率的同時,使訪問控制策略多樣化,豐富化:
方案 屬性加密訪問結(jié)構(gòu) 區(qū)塊鏈 抗重放攻擊多類型用戶模型文獻[8] 有 訪問樹 有 無 無文獻[14] 有 與門 無 無 無文獻[15] 無 無 有 無 無文獻[16] 無 無 無 有 無本文方案 有 訪問樹 有 有 有
合作用戶模型提供了一種多人合作搜索文件方案,有助于數(shù)據(jù)的共享,實現(xiàn)細粒化的訪問控制,減少“信息孤島”的產(chǎn)生。 比如分散在各地的不同醫(yī)院的不同領(lǐng)域的醫(yī)生需要一起為病人會診,需要查看病人加密的電子病歷,以往方案如果將訪問控制策略設(shè)置為{{醫(yī)院A,科室A,醫(yī)生A},{醫(yī)院B,科室B,醫(yī)生B},{醫(yī)院C,科室C,醫(yī)生C}}同時滿足,則沒用醫(yī)生可以同時滿足訪問策略,不利于不同醫(yī)院間的合作;若設(shè)置成滿足上述三個條件滿足其中一個即可,任意一個醫(yī)生就可以隨意翻看病人電子病歷,不利用病人隱私信息的保護,本方案的合作用戶模型允許在屬性密鑰申請時,所有醫(yī)生向KDC 提交屬性,KDC 使用所應(yīng)醫(yī)生的屬性一起生成一個數(shù)據(jù)使用者密鑰。 在關(guān)鍵詞密文搜索時一名醫(yī)生使用該密鑰生成陷門搜索文件,若滿足訪問控制策略,服務(wù)器將電子病歷發(fā)給每一個醫(yī)生。 這樣做既讓不同醫(yī)院的醫(yī)生可以順利開展工作,又保護了病人的隱私,且算法效率與普通用戶模型基本相同,沒有造成額外的計算負擔。
組織用戶模型為有相同屬性的數(shù)據(jù)使用者設(shè)計,這些使用者可以自發(fā)組織,向KDC 申請組織用戶標識。 在搜索相同文件時,BC 識別出組織用戶標識,可隨機抽取若干用戶上傳陷門進行查驗,比如同一個實驗室的實驗員或者同一個部門的員工,他們有著相似的屬性標簽與對加密數(shù)據(jù)相似的需求。 在有相同的文件搜索需求時,利用組織用戶模型,相較于以往方案中檢測所有上傳陷門的方案,減少了檢測次數(shù),提高了搜索效率。
超級用戶為系統(tǒng)內(nèi)的監(jiān)管以及管理員,負責(zé)對文件內(nèi)容進行管理審查,維護網(wǎng)絡(luò)空間安全。通過標識可不通過訪問樹獲取任意文件,檢查文件內(nèi)容,刪除違規(guī)文件。 在密鑰生成算法與關(guān)鍵詞密文搜索算法不包含雙線性對運算,算法效率高。
因此,本方案在用戶量與數(shù)據(jù)量較大時,較過去方案,有較快的搜索效率與靈活性。 本文對普通用戶模型與組織用戶模型進行具體算法效率分析。 分析了在若干數(shù)據(jù)使用者搜索密文時的算法效率,如表3 所示,結(jié)果不難看出,在多數(shù)據(jù)使用者的情況下,組織用戶模型具有較高的SEARCH算法效率,且本文方案與文獻[8]相比用較低代價實現(xiàn)了對陷門的防重放攻擊保護。其中P代表一次雙線性對運算,E代表一次指數(shù)運算,M代表一次乘法運算,H代表一次哈希運算,Inv代表一次乘法逆元運算,Ver代表一次防重放攻擊驗證運算。 |S|、|X|、|A|與|N|分別代表屬性集,訪問樹葉子節(jié)點集合,滿足訪問樹的訪問結(jié)構(gòu)最小屬性集,用戶量。
表4 對各模式算法通信代價進行分析,其中|G1|,G2|代表G1,G2中元素的長度|H|代表各哈希函數(shù)壓縮后的長度,|CL|代表標識長度,|Ver|代表搜索陷門時間戳或隨機數(shù)長度,|C|代表密文文件長度。 |S|、|X|與|N|分別代表屬性集,訪問樹葉子節(jié)點集合,用戶量。 分析表明在實現(xiàn)多樣性細粒度訪問控制的同時,方案單位用戶量通信代價并無明顯增加。
普通用戶 組織用戶 文獻[8]KEYGEN N[P+(2 |S |+3)E+(|S|+1)M+(|S |+1)H+Inv]N[P+(2 |S |+3)E+(|S|+1)M+(|S|+1)H+Inv]N[P+(2 |S |+1)E+(|S |+1)M+|S |H+Inv]ENCRYPT P+(2 |X |+3)E+2M+(|X |+1)H P+(2 |X |+3)E+3M+(|X |+1)H SEARCH N[(2 |A|+3)P+(|A|+|S |+2)E+(|S |+|A|+5)M+2H+Ver]P+(2 |X |+3)E+2M+(|X |+1)H(2 |A|+3)P+(|A|+|S |+2)E+(|S |+|A|+5)M+2H+Ver N[(2 |A|+3)P+(|A|+|S|+1)E+(|S |+|A|+4)M+H]
本文在 AMD Ryzen 7 5800H 處理器,4GBRAM,Ubuntu16.04 虛擬機實驗環(huán)境下,在Hyperledger Fabric 1.4.0 區(qū)塊鏈平臺,網(wǎng)絡(luò)拓撲架構(gòu)如圖8 所示,包含Org1 與Org2 兩個組織,其下各自有一個Peer 節(jié)點。 部署兩個排序節(jié)點Order1 與Order2 與Kafka 集群為區(qū)塊鏈網(wǎng)絡(luò)提供排序以及輔助共識服務(wù)。
圖8 整體網(wǎng)絡(luò)拓撲結(jié)構(gòu)
利用Caliper 測試框架測試鏈碼寫入以及查詢操作的吞吐量與平均時延。 將交易頻率分別設(shè)置為50 至250tps,測試結(jié)果如圖9 所示。
圖9 不同交易頻率查詢、寫入吞吐量以及平均時延
由圖9 可以看出查詢操作吞吐量基本隨交易頻率線性增長。 寫入操作涉及背書、排序、共識等過程,較查詢操作過程復(fù)雜,當前計算機性能下吞吐量為140tps 上下,慢于查詢操作,且隨交易量進一步的增加,吞吐量有所降低。 查詢操作的平均時延在800ms 以下,而寫入操作頻繁的節(jié)點通信導(dǎo)致平均時延隨交易頻率增長而增長。
使用PBC 庫對本文方案算法進行性能測試,實驗結(jié)果為算法運行50 次平均值。 將關(guān)鍵詞個數(shù)固定為200 個,數(shù)據(jù)使用人數(shù)固定為10人,測試不同屬性集元素個數(shù)對算法運行時間的影響。 結(jié)果如圖10 所示。
圖10 算法運算花銷
通過測試可以看出算法所花費時間隨屬性集元素個數(shù)增多而線性增加,本文方案中與文獻[8]方案KEYGEN算法時間消耗基本一致。 組織用戶模型具有較高的SEARCH算法效率實驗結(jié)果與理論分析結(jié)果基本一致。
通過測試發(fā)現(xiàn),合作用戶模型在實現(xiàn)更為靈活的訪問控制的同時,與普通用戶和文獻[8]方案有著幾乎相同的效率。 在數(shù)據(jù)使用者比較多的情況下,組織用戶模型相較其他模型方案有很高的效率。
本文提出了一種區(qū)塊鏈上多類型用戶屬性基可搜索加密方案,實現(xiàn)了對數(shù)據(jù)密文的準確搜索與細粒度的訪問控制以及在不可信云環(huán)境下的數(shù)據(jù)安全與隱私保護。 同時,從實際出發(fā),定義了多類型數(shù)據(jù)用戶模型,拓展了原有方案的單一搜索模式。 該方案可應(yīng)用于電子病歷、數(shù)字版權(quán)保護以及物品溯源等需要大量分享加密文件的領(lǐng)域。 在未來工作中,計劃將本文方案與無證書密碼體制[17]相結(jié)合,擺脫密鑰生成中心必須是完全可信的限制。