云存储技术[1]为用户带来了巨大便利,许多公司选择把数据存储服务外包给云服务提供商.由于大多云服务器并不是完全诚实可靠的,因此数据文件在被存储到云服务器之前需要被加密,在查找使用数据时需要将大量的数据文件都下载到本地再去解密它们,这十分地浪费网络带宽且效率低下.在这样的背景下,可搜索加密(searchable encryption, SE)的概念被及时地提出.
SE[2]允许数据用户通过关键字对加密的数据文件进行搜索,很大程度上降低了用户的通信量和计算量.现有的SE大都是基于公钥的SE,Ma等人[3]将公钥SE应用于医疗信息管理,提出了公钥SE在移动医疗系统下的应用方案.出于离线关键字猜测攻击等方面的安全性考虑,Huang等人[4]提出了一个在随机预言机模型下相对安全的公钥SE方案.但大多基于公钥的SE都是一对一的加密和解密,每次加密都必须知道接收者的身份信息,且没有考虑搜索用户的搜索权限问题,故数据拥有者无法对外包的加密数据实施有效的访问控制,这在实际的应用环境中缺乏方便性和实用性.
上述SE方案都为数据用户赋予了无限的搜索能力,即数据用户可以采用任何关键字从服务器获取包含自己感兴趣关键字的加密数据.因此,数据拥有者无法对外包的数据信息实施有效的访问控制,因此研究人员利用属性基加密技术设计了具有关键字搜索授权的SE方案.文献[5]第1次提出一种新型的密码原语,即属性基加密的概念,它通过模糊身份的方法来实现数据的细粒度访问控制.此后,Goyal等人[6]为了实现数据的细粒度访问控制第1次提出了将属性嵌入到密钥中的属性基加密方案.Li等人[7]基于数据外包的安全性和用户体验之间的平衡提出了一个细粒度的数据SE方案,并指出了其在加密的移动云环境下的应用.文献[8]中的属性基加密方案也是将属性嵌入到密钥中,实现了一对多的有效通信,但该方案要求在发送陷门时采用安全的通信信道,这无疑增加了通信成本.关志涛等人[9]提出了在半诚实云存储上的属性基加密方案,该方案基于密钥策略的属性基加密设计了更为灵活通用的访问控制策略.为了减少访问策略更新时用户的运算量,提高访问策略更新时的灵活度,文献[10]提出了一种由云服务器处理复杂计算操作的属性基SE方案.由于大多属性基SE方案都采用云存储,导致因云存储的集中化带来的数据安全和隐私保护问题也越来越多.
云服务器可以为用户提供便捷、海量的数据存储服务.然而,其安全形势也相当严峻,如未经身份验证的用户可以任意地访问云服务器、数据安全性得不到保证等严重影响了用户对其的信任.区块链技术的发展与应用为解决此类问题带来了新的契机,因为区块链技术[11]能自由安全地实现数据的访问和共享.Liu等人[12]首次指出在公有链中存储数据的必要性,在此基础上提出了一种新的基于区块链的数据删除方案,无论云服务器的行为多么恶劣,数据拥有者都可以验证删除结果,使得删除操作更加透明.之后,Li等人[13]为了保证公平和减少用户的计算量,将区块链技术与SE相结合,提出了一种基于区块链的SE方案.Zhang等人[14]针对恶意用户和恶意云服务提供商对加密的数据文件进行非法搜索的问题,提出了基于云存储的可信SE方案.基于属性的加密尤其是将属性嵌到密文中的加密在数据共享中起着重要的作用,但在分布式网络中,访问控制结构通常会泄漏敏感的数据信息,区块链技术可以保证与访问策略相关信息的完整性和不可篡改性.针对属性加密的效率、隐私泄露和密钥的滥用问题,Wu等人[15]提出了区块链中高效的、保护隐私的、可追踪的属性基可搜索加密方案.该方案利用区块链技术保证了数据的完整性和不可篡改性.
针对现有的SE没有考虑数据用户搜索权限的问题,本文将密文策略的属性基加密技术与SE结合,使数据拥有者可以为数据使用者执行细粒度的搜索授权.针对现有的可搜索加密方案因云的集中化对数据安全和隐私保护带来威胁的问题,本文将区块链技术和基于属性的SE结合,提出了区块链上基于云辅助的属性基可搜索加密方案.本文的创新点主要包括3个方面:
1) 利用SE和基于属性的加密技术,设计了一个密文策略的属性基SE方案,以实现对加密数据的有效搜索和细粒度访问授权,并基于困难问题证明了其安全性.
2) 针对因云的集中化对数据安全和隐私保护带来的威胁,并基于区块链去中心化、匿名性、不可篡改性和可验证性等特点,将区块链技术应用于上述方案.在整个过程中加密的关键字存储在区块链上,而云服务器上存储加密的关键字和加密的数据文件,其中区块链不可篡改的特性可确保关键字密文的安全性.
3) 在Linux Ubuntu-10.10操作系统下利用双线性对包,并用C语言进行编程,对本文方案和文献[16]的方案进行了数值模拟.实验结果表明:本文方案的效率较高于文献[16]的方案.
本文提出的算法可应用于社交网络、医疗信息管理等领域.例如在电子病历中主要有患者、医生、医院服务器、医疗云服务器和联盟链5个角色.患者就诊后产生电子病历,由医生将电子病历加密后上传至医院服务器,同时将关键字密文的Hash值、医生身份、患者伪身份和关键字密文上传至医疗云服务器.患者的电子病历密文存储在医院服务器上,而关键字密文则存储在医疗云服务器和联盟链上,而由患者伪身份和关键字密文所构成的安全索引则存储在联盟链上.当患者需要数据时,产生陷门并上传至联盟链.根据激励机制,选取联盟链上的节点对关键字进行搜索.当搜索到相应患者的密文后,联盟链上节点提取安全索引,并匹配患者的伪随机身份,联盟链上节点通过医生身份定位至医疗云服务器获取关键字密文的Hash值,再由患者解密得到电子病历的明文.
定义1. 双线性映射.令G1和G2是2个阶为素数p的循环乘群,定义1个双线性映射e:G1×G1→G2满足3个性质[8].
1) 双线性(bilinear).对任意x,y∈G1,存在a,b∈Z
使得等式e(xa,yb)=e(x,y)ab成立.
2) 非退化性(non-degenerate).存在x,y∈G1,满足e(x,y)≠1.
3) 可计算性(computable).对任意x,y∈G1,存在有效的算法计算e(x,y).
定义2. 判定性双线性Diffie-Hellman(decisional bilinear Diffie-Hellman, DBDH)假设[8].G1和G2是阶为素数p的循环群,e:G1×G1→G2为一个双线性映射,g是群G1的生成元,给定2个元组(g,ga,gb,gc,e(g,g)abc)和(g,ga,gb,gc,e(g,g)z),对随机的a,b,c,z∈Z
不存在概率多项式时间的攻击者以不可忽略的优势区分e(g,g)abc和e(g,g)z.
定义3. 判定性Diffie-Hellman(decisional Diffie-Hellman, DDH)假设.g是群G1的生成元,给定2个元组(ga,gb,gz)和(ga,gb,gab),对随机的a,b,z∈Z
不存在概率多项式时间的攻击者以不可忽略的优势区分(ga,gb,gz)和(ga,gb,gab).
定义4. 访问结构[17].令P={P1,P2,…,Pn}为一个基于属性加密方案的属性集合.令集合Γ∈2{P1,P2,…,Pn},∀B,C:若B∈Γ且B⊆C,那么C∈Γ.若上述关系成立,那么称Γ是单调的.因此一个访问结构Γ就是由P={P1,P2,…,Pn}的非空属性子集构成的集合.在Γ中的集合被称为授权访问集合,不在Γ中的集合称为非授权访问集合.访问结构是基于属性加密方案不可或缺的组成部分[8,18].
定义5. 访问树[17].T表示一个访问树,T中的每个非叶子节点x都可以表示成如(nx,kx)的门限结构,其中nx表示x的孩子节点个数,kx表示阈值或门限值,其中0≤kx≤nx.kx=1时表示“OR”门,kx=nx则表示“AND”门.叶子节点x用来描述属性,我们规定其门限值kx=1[17].
访问树中常用的表示方法是:parent(x)表示返回节点x的父节点,att(x)表示返回叶子节点x描述的属性,index(x)表示返回x在其兄弟节点中的编号.T是以t为根节点的访问树,若一个属性集合S满足访问树Tx,则可表示为Tx(S)=1.
1) 若x是非叶子节点,对x的孩子节点x′计算Tx′(S).当且仅当至少有kx个x′返回Tx′(S)=1时,可得到Tx(S)=1.
2) 若x是叶子节点,当且仅当att(x)∈S时,可得到Tx(S)=1.
在本节中,我们主要介绍方案的系统模型、形式化定义和安全模型.
本文基于云辅助实现了区块链上加密数据的细粒度访问控制.其中,云服务器上存储加密的关键字和加密的数据文件.区块链上存储加密的关键字和其在云服务器上的存储地址.方案主要包括5类实体,分别是数据属主、多个数据用户、云服务器、可信的属性授权中心、区块链(联盟链).系统模型如图1所示.
Fig. 1 System model of our paper
图1 本文所提的系统模型
1) 属性授权中心.对系统中与其有交互的数据属主和用户是完全可信的,它负责系统参数的设置和用户的注册.由属性授权中心生成密钥和相应的参数,并返回给用户.
2) 数据属主.数据属主从数据文件中按照约定规则提取关键字集合,并用自己所定义的访问策略对关键字进行加密,最后将数据文件密文和关键字密文上传至云服务器.云服务器收到密文后将其存储并将存储地址返回给数据属主,数据属主建立数据文件密文和关键字密文在云服务器存储地址的逆向索引关系.数据属主将关键字密文和其存储地址嵌入到1笔构造的交易中并上传至区块链,形成新的区块,并广播新的区块,区块链上其他数据用户负责新区块的验证.
3) 云服务器.云服务器提供数据存储服务.云服务器收到数据属主上传的数据文件密文和关键字密文后,将其存储并将存储地址返回给数据属主.当关键字搜索成功后,数据属主根据区块链返回的地址在本地查看数据文件密文和关键字密文的索引关系.然后向云服务器发出请求,最后云服务器根据数据文件密文进行查找并将数据文件密文返回给用户.
4) 区块链.区块链上节点提供数据搜索服务.数据属主将关键字密文及其地址嵌入到1笔自己构造的交易中并上传至区块链,当区块链上其他数据用户收到广播的区块后,对该区块进行验证.当用户以交易的形式上传陷门后,根据激励机制,区块链上想要去获得奖励的节点运行搜索算法.若搜索成功,区块链上节点将关键字密文存储地址返回给数据属主.否则,返回失败.
5) 数据用户.用户用其私钥和感兴趣的关键字产生搜索陷门,并将陷门以交易的形式上传至区块链,由区块链上节点执行搜索操作.若搜索成功,区块链上节点返回关键字密文存储地址给数据属主,数据属主根据索引关系找到数据文件密文地址,并将数据文件密文地址返回给云服务器,云服务器根据地址找到加密的数据文件,最后将数据文件密文返回给用户.
本文提出的方案包括5个概率多项式时间算法:
1) 系统建立. SetUp(1λ)→(PP,SK).该算法由属性授权中心执行.输入安全参数λ,输出系统公共参数PP和密钥SK.DO使用SK和定义的访问树加密关键字.
2) 密钥生成.KeyGen(PP,Suid)→SKu.该算法由属性授权中心执行.输入PP和用户的属性集合Suid,输出用户的私钥SKu.
3) 加密.Encrypt(PP,SK,w,T)→Iw.该算法由数据属主执行.输入系统公共参数PP、数据属主的私钥SK、关键字w和访问树结构T,输出关键字w的密文Iw,将密文Iw和相关信息嵌入交易Tx中并向全网广播该笔交易,然后由矿工写入区块链.
4) 陷门生成.Trapdoor(PP,SKu,ω)→Tω.该算法由用户执行.输入系统公共参数PP、用户的私钥SKu和感兴趣的关键字ω,输出陷门Tω,将Tω嵌入交易Ty并向区块链网络广播.
5) 搜索.Search(PP,Iw,Tω)→1.该算法由区块链(联盟链)上节点执行.输入系统公共参数PP、关键字密文Iw和用户的陷门Tω.若用户的属性集Suid满足嵌在Iw中的访问树且w和ω一致,则搜索成功并返回其存储地址Address.Iw给数据属主,否则失败.
通过概率多项式时间攻击者
和挑战者
之间的游戏来定义方案在选择明文攻击下的关键字密文不可区分性安全和陷门不可区分性安全.
游戏1. 关键字密文不可区分性.
初始阶段.
运行系统建立算法输出公共参数,
定义1个挑战访问树T*.
阶段1. 在此阶段
适应性地进行多项式有界次下列询问.
密钥提取询问.
适应性地向
请求对应于属性集S1,S2,…,Sn的私钥.
关键字密文询问.
适应性地向
请求对应于关键字为k1,k2,…,km的密文.在此过程中,被询问到的私钥都不满足访问树T*.
挑战.
向
提交2个挑战关键字w0和w1.
随机选取μ∈{0,1},并且加密wμ得到关键字密文Iwμ,并将其返回给![]()
阶段
像阶段1一样继续发起一系列对应于属性集为Sq+1,Sq+2,…的询问,要求询问到的私钥都不满足访问树T*.
猜测.最后
输出μ′∈{0,1},若μ′=μ则
赢得游戏1.
成功地赢得这个游戏的优势被定义为
若对于概率多项式时间的攻击者
可忽略,则称方案满足关键字密文不可区分性安全.
游戏2. 陷门不可区分性.
假设
是一个试图攻破陷门不可区分性安全的多项式时间攻击者.挑战者
通过建立算法解决DDH问题,
获得实例F=(G1,G2,e,p,g,a,b,gab).
初始阶段.
运行系统建立算法输出公共参数.
阶段1. 在此阶段
适应性地进行多项式有界次下列询问.
密钥提取询问.
运行密钥生成算法计算SKu,并将密钥SKu返回给![]()
陷门询问.给定一个关键字ω,计算相应的陷门Tω并将它返回给![]()
挑战.
向
提交2个挑战关键字ω0和
随机选取μ∈{0,1},并且利用ωμ得到陷门Tωμ,并将其返回给![]()
阶段
像阶段1一样继续发起一系列询问,但不能询问与挑战关键字有关的信息.
猜测.最后
输出μ′∈{0,1},若μ′=μ则
赢得游戏2.
成功地赢得这个游戏的优势被定义为
若对于概率多项式时间的攻击者
可忽略,则称方案满足陷门不可区分性安全.
区块链上基于云辅助的属性基可搜索加密方案分为3个阶段:系统建立、数据加密、数据搜索.
阶段1. 系统建立.
本阶段分为系统初始化和密钥生成2个步骤.
系统初始化(SetUp).在这个过程中,属性授权中心执行该算法初始化系统.输入安全参数λ,输出系统公共参数PP和数据属主的密钥SK.
1) 产生1个双线性映射e.G1×G1→G2,其中G1和G2是阶为素数p的循环乘群,g是G1的生成元.
2) 定义2个抗碰撞Hash函数H.{0,1}*→Z
H1:{0,1}*→G1.
3) 定义Lagrange系数.
S表示1个集合,i,j∈Z![]()
4) 随机选择α,β∈Z
计算gα,gβ,e(g,g)α.
返回PP={G1,G2,e,g,H,H1},SK={e(g,g)α,gβ}.
密钥生成(KeyGen).在这个过程中,属性授权中心执行该算法,为用户产生与其属性集Suid相关联的私钥.
1) 随机选择r∈Z
计算![]()
2) 对∀att∈Suid,随机选择ra∈Z
计算:
SKua=SKu3×H1(att)ra=gr×H1(att)ra,![]()
最后得到用户的密钥SKu={SKu1,SKu2,SKu3,
并将SKu返回给用户.
阶段2. 数据加密.
关键字加密(Encrypt).在这个阶段,数据属主调用此算法来加密所有关键字,每个关键字对应于定义关键字搜索权限的访问树.
1) 随机地选择s∈Z
并作为秘密值,计算Cw=e(gH(w)s,g)e(g,g)α s和![]()
2) 首先执行秘密共享算法,对于每个在访问树T中的节点x(包含叶子节点t在内),从根节点t开始,选择一个多项式qx.具体步骤为:
① 对在T中的每个节点,使得多项式qx的次数dx为该节点门限值kx-1,即dx=kx-1.
② 从根节点t开始,定义qt(0)=s,然后随机选择多项式qt的dt个点,完成对qt的定义.对于其他的节点x,定义qx(0)=qparent(x)(index(x)),并随机选择dx个点完成对qx的定义.
③ 令X为T中的叶子节点集合,对于集合X中的节点∀x∈X,计算![]()
最后得到加密后的关键字为![]()
数据属主将加密的数据文件F和加密的关键字Iw上传至CS,CS返回其存储地址.数据属主将Iw和其存储地址Address.Iw嵌入交易Tx,并对其签名,再以交易Tx的形式向全区块链系统广播,由矿工将验证通过的交易记录到区块链上.区块链上的数据结构如表1所示.它由块头和交易2部分组成.其中块头包括:块标识、块的大小、前一个块的Hash和时间戳;交易包括:块产生者(DO)身份IDDO、块产生者的签名δDO和由Iw以及Address.Iw构成的交易Tx=(Iw,Address.Iw).
Table 1 Blockchain Data Structure
表1 区块链的数据结构
块头交易单块标识块大小前块Hash时间戳块产生者身份前一个区块签名交易IDsizehashtIDDOδDOTx,Ty
阶段3. 数据搜索.
本阶段主要包括陷门生成(Trapdoor)和关键字搜索(Search)两个步骤.
陷门生成.在这个过程中,用户使用自己的密钥SKu和所要查询的关键字ω产生陷门Tω.
1) 随机选择r1∈Z
计算![]()
2) 对于∀att∈Suid,计算Ta=SKua×gr1=gr+r1× H(att)ra和![]()
故所要查询的关键字ω产生的陷门为
将陷门Tω嵌入交易Ty,并对其签名,再以交易Ty的形式向全区块链系统广播,由矿工将验证通过的交易Ty=(Tω)记录到区块链上.
搜索.在关键字搜索阶段,根据用户提交的陷门信息Tω,区块链上节点(也可称为搜索者P)执行该算法对关键字密文进行搜索. 在整个搜索过程中,不会向区块链和云服务器泄露有关数据文件和所要搜索关键字的有用信息.用户构造1笔包含自己陷门信息的交易Ty,区块链上的节点根据交易Ty计算交易g的主要部分,并将搜索成功的Iw嵌入交易g中,对其签名后向全区块链网络广播该交易,同时获得交易Ty中的奖励d.当区块链上并未出现交易g时,用户可以选择构造1笔新的交易来追回上1笔交易Ty中的奖励.
区块链上节点验证等式A=Cw是否成立,其中
若等式成立,则表明搜索成功,说明用户的属性集Suid满足嵌在Iw中的访问树且w和ω一致,此时区块链将Iw的存储地址Address.Iw返回给数据属主.若等式不成立,则表明搜索失败.搜索失败的情况分为2种:用户的属性集Suid不满足嵌在Iw中的访问树,算法终止,也就是说用户对关键字w不具有搜索权限,或者是用户对关键字w有搜索权限,但搜索时发现w和ω并不相同.
x表示访问树T中的节点,算法运行:
1) 若节点x是叶子节点,令att=attr(x),即att表示与叶子节点x相关联的属性.
① 若att∈Suid,计算:
![]()
![]()
e(g,g)(r+r1)qx(0).
② 若att∉Suid,定义Fx=⊥.
2) 若该节点x是非叶子节点,对于节点x的所有孩子节点z,执行算法后的结果记为Fz,集合Ux中保留Fz≠⊥的所有值.
① 若|Ux|<kx,表明x节点的孩子节点属性集合不满足该节点的门限值,则终止并输出⊥.
② 若|Ux|≥kx,则表明x节点的孩子节点属性集合满足该节点的门限值,则从集合Ux中随机挑选kx个Fz的值,结合Lagrange系数计算Fx值:
![]()
![]()
![]()
其中i=index(z),Sx={∀z∈Ux:index(z)},Δi,Sx表示Lagrange系数.
3) 若用户的属性集Suid满足访问树T,则将算法的执行结果表示为Ft=e(g,g)(r+r1)qt(0)=e(g,g)(r+r1)s.
正确性证明.计算
验证A=Cw是否成立,若成立,则返回1.
Cw=e(gH(w)s,g)e(g,g)α s,
![]()
e(g,g)α se(gsH(ω),g).
证毕.
当数据属主获得Iw的存储地址Address.Iw后,数据属主根据Address.Iw和Address.F的索引关系找到Address.F,并将Address.F返回给云服务器,云服务器根据Address.F找到对应的加密数据文件,将加密的数据文件返回给用户.
证明.
是一个试图攻破关键字密文安全性的攻击者.挑战者
通过建立算法解决DBDH问题.
初始阶段.
随机选择1个比特v∈{0,1},t0=(g,A=ga,B=gb,C=gc,Z=e(g,g)abc),t1=(g,A=ga,B=gb,C=gc,Z=e(g,g)z).且a,b,c,z都是从Z
中随机选取的.
阶段1. 在此阶段
适应性地向由挑战者
模拟的预言机进行询问:挑战者
计算公开参数Y=e(B,C)=e(g,g)bc,并将其发送给攻击者
同时
定义被挑战的访问树T*.
密钥提取询问OEXT.
适应性地询问属性集S1,S2,…,Sn对应的私钥
要求嵌入到相应私钥中的属性集S1,S2,…,Sn都不满足挑战访问树,且所有的私钥都能产生正确的搜索陷门.
关键字密文询问OCIP.
适应性地询问关键字k1,k2,…,km对应的密文Ik1,Ik2,…,Ikm.
询问到的密钥和密文满足的条件为:给定一个私钥
和一个关键字w,计算得到搜索陷门表示为
存在关键字密文Ikj{j∈[1,m]},使得搜索算法![]()
挑战.
向
提交2个挑战关键字w0和w1,并将挑战访问树T*发送给
从Z
中随机地选择1个比特μ∈{0,1},并且返回密文
给
其中X*表示挑战访问树T*的叶子节点集合.
阶段2. 与阶段1类似,
适应性地询问属性集Sn+1,Sn+2,…对应的私钥
和关键字km+1,km+2,…对应的密文Ikm+1,Ikm+2,….要求嵌入到相应密钥中的属性集Sn+1,Sn+2,…都不满足挑战访问树T*.
猜测.
输出μ的猜测比特μ′.因为
询问到的属性集均不满足访问树T*,故
无法通过搜索算法
来判断μ=0或μ=1.因此
必须从
中恢复关键字信息H(wμ)用以判定μ=0或μ=1.
若
在加密关键字时α,s都是随机选择的,令a=s,bc=α则关键字密文可以被表示为
H1(attr(x)qx(0))}.
若v=1,Z=e(g,g)z,则关键字密文可以表示为
因为z是1个随机元素,故对于攻击者
来说
也是1个随机元素.
输出μ的猜测μ′.若
输出v的猜测v′.
从
恢复关键字信息H(wμ)优势为
则
输出μ=μ′的概率是
若
输出μ的猜测
输出μ=μ′的概率是1
2.
故
在以上游戏中解决DBDH问题的优势为
![]()
1
2Pr[v=v′|v=1]-1
2|=![]()
![]()
若
不可忽略,则
也不可忽略,这与DBDH问题的困难性假设矛盾.
证毕.
证明. 假设
是一个试图攻破陷门安全的多项式时间攻击者.挑战者
通过建立算法解决DDH问题,
获得实例F=(G1,G2,e,p,g,a,b,gab).
初始阶段.
随机选择a,r,r1∈Z
将PP返回给
随机地选择1个比特v∈{0,1},若v=1,令gβ=g1
b.若v=0,则随机选择y∈Z
得到
维护一个初始为空的列表LHash={
·,·,·,·
}.
阶段1. 在此阶段
适应性地进行如下询问,并且假设
不会执行重复的询问.
Hash询问OHash.挑战者
从LHash中查找{
ω,α,R(1),v
},若LHash中R(1)不为空,挑战者
提取私钥发送给攻击者
否则,若v=1,计算R(1)=a-α-r1并写入LHash,若v=0,计算R(1)=gy并写入LHash.
Hash询问OHash1.随机选择k∈G1,并返回它作为H1(att)的输出,即R(2)=k.
密钥提取询问OEXT.若v=1,则中止.否则,查看列表
执行密钥生成算法计算SKu,并将密钥SKu返回给
其中
Z![]()
陷门询问OTRA.若v=1,查看列表LHash计算Tω并返回给
其中
Z
否则v=0,则中止.
挑战.
向
提交2个挑战关键字ω0和
随机地选择μ∈{0,1},计算陷门信息
Z
并返回给![]()
阶段2. 与阶段1一样.要求不能询问与挑战关键字有关的信息.
猜测.
输出μ的猜测μ′.若μ′=μ,则表示挑战者
挑战成功,输出1;否则输出0.
输出μ的猜测μ′.若
输出v的猜测比特v′.
成功地赢得这个游戏的优势为
则
输出μ=μ′的概率是
若
输出μ的猜测
输出μ=μ′的概率是1
2.
故
在以上游戏中解决DDH问题的优势为
![]()
1
2Pr[v=v′|v=1]-1
2|=![]()
![]()
若
不可忽略,则
也不可忽略,这与DDH问题的困难性假设矛盾.
证毕.
本文与近几年的属性基加密文献[16,19-21]的方案进行功能性对比,其中访问控制策略主要包括访问树和线性秘密共享方案2种.对比结果如表2所示.表2表明本文方案在功能特性上有一定优势.
Table 2 Function Comparison
表2 功能特性比较
方案访问控制策略可搜索隐私保护区块链技术文献[19]方案访问树×××文献[20]方案线性秘密共享√××文献[21]方案访问树√√×文献[16]方案访问树√√×本文方案访问树√√√
注:“×”表示不具有特定功能或未使用某种技术;“√”表示具有特定功能或使用某种技术.
在表3中,Tp表示配对运算的时间,Te表示指数运算的时间,Tm表示乘法运算的时间,Th表示Hash运算的时间,Tinv表示乘法逆元运算的时间.
1) 计算量比较
在表3和表4中,分别用|S|,|X|,|N|表示1个用户的属性集、1个访问树的叶子节点集合和满足访问树的最小属性集.
Table 3 Computation Comparison
表3 计算量比较
算法文献[16]方案本文方案SetUp3TeTp+3TeKeyGen(3|S|+1)Te+(|S|+2)Tm+|S|Th+Tinv(2|S|+1)Te+(|S|+1)Tm+|S|Th+TinvEncrypt(2|X|+4)Te+2Tm+(|X|+1)ThTp+(2|X|+3)Te+3Tm+(|X|+1)ThTrapdoor(2|S|+4)Te+Tm+Th(|S|+1)Te+(|S|+1)Tm+ThSearch(2|N|+3)Tp+|N|Te+(|N|+2)Tm+2Tinv(2|N|+3)Tp+|N|Te+(|N|+3)Tm+|N|Tinv
Table 4 Storage Comparison
表4 存储代价比较
算法文献[16]方案本文方案SetUp4|G1|+3|ZZ*q|3|G1|+|G2|+|ZZ*q|KeyGen(2|S|+1)|G1|(2|S|+2)|G1|Encrypt(2|X|+3)|G1|(2|X|+1)|G1|+|G2|Trapdoor(2|S|+3)|G1|(2|S|+1)|G1|Search
2) 存储量比较
在表4中,分别用|G1|,|G2|,|Z
表示G1,G2,Z
中元素的长度.
我们在Linux操作系统下利用双线性对包(pairing-based cryptography library)[22],用C语言进行编程,在2.9 GHz CPU,4 GB RAM PC机上运行[23].(所使用的椭圆曲线基域为512 b,双线性对包参数类型为Type-A)实验结果如图2所示:
Fig. 2 Time cost of each algorithm(fixed number of
keywords and attributes is 500 and 10)
图2 算法的时间花销(将关键字和属性的个数固定为500和10)
由图2可得出结论,本文方案在密钥生成阶段、陷门生成阶段和搜索阶段效率高于文献[16]的方案,在系统建立阶段两者几乎相同.
Fig. 3 Algorithm running time comparison
(fixed number of keywords is 500)
图3 算法运行时间比较(将关键字个数固定为500)
由图3可知,本文方案在密钥生成阶段、陷门生成阶段和搜索阶段效率高于文献[16]的方案.
同样地,由图4可得出结论,本文方案在密钥生成阶段、陷门生成阶段和搜索阶段的效率均高于文献[16]的方案.如在用户陷门生成阶段,当属性个数为10且关键字个数为600时,本文方案的运行时间为2.381 3 s,文献[16]方案的运行时间为4.619 4 s.
Fig. 4 Algorithm running time comparison when
fixed number of attributes is 10
图4 属性个数固定为10时算法运行时间比较
本文提出了区块链上基于云辅助的属性基可搜索加密方案.本文方案利用属性基加密技术使数据拥有者为数据用户执行细粒度的搜索授权.使用可搜索加密技术完成关键字在区块链上的搜索工作,实现数据用户对加密数据的安全访问.在整个过程中,不会向云服务器泄露任何关于关键字和数据文件的重要信息.我们给出了详细的正确性证明、性能分析和安全性证明.数值实验结果表明:本文方案具有较高的效率.在未来的工作中我们考虑结合代理重加密技术将其应用于电子病历数据共享过程中,以实现与第三方数据用户的数据共享.
[1]Feng Dengguo, Zhang Min, Zhang Yan, et al. Research on cloud computing security[J]. Journal of Software, 2011, 22(1): 71-83 (in Chinese)(冯登国, 张敏, 张妍, 等. 云计算安全研究[J].软件学报, 2011, 22(1): 71-83)
[2]Qin Zhiguang, Xu Jun, Nie Xuyun, et al. Overview of public key searchable encryption system[J]. Journal of Cyber Security, 2017, 2(3): 1-12 (in Chinese)(秦志光, 徐骏, 聂旭云, 等. 公钥可搜索加密体制综述[J]. 信息安全学报, 2017, 2(3): 1-12)
[3]Ma Mimi, He Debiao, Khan M K, et al. Certificateless searchable public key encryption scheme for mobile healthcare system[J]. Computers and Electrical Engineering, 2018, 65: 413-424
[4]Huang Qiong, Li Hongbo. An efficient public-key searchable encryption scheme secure against inside keyword guessing attacks[J]. Information Sciences, 2017, 403/404: 1-14
[5]Sahai A, Waters B. Fuzzy identity-based encryption[G] //LNCS 3494: Proc of Annual Int Conf on the Theory and Applications of Cryptographic Techniques. Berlin: Springer, 2005: 457-473
[6]Goyal V, Pandey O, Sahai A, et al. Attribute-based encryption for fine-grained access control of encrypted data[C] //Proc of the 13th ACM Conf on Computer and Communications Security. New York: ACM, 2006: 89-98
[7]Li Hongwei, Liu Dongxiao, Dai Yuanshun, et al. Engineering searchable encryption of mobile cloud networks: When QoE meets QoP[J]. IEEE Wireless Communications, 2015, 22(4): 74-80
[8]Li Shuang, Xu Maozhi. Searchable encryption scheme based on attributes[J]. Chinese Journal of Computers, 2014, 37(5): 1017-1024 (in Chinese)(李双, 徐茂智. 基于属性的可搜索加密方案[J]. 计算机学报, 2014, 37(5): 1017-1024)
[9]Guan Zhitao, Yang Tingting, Xu Ruzhi, et al. Multi-authority access control scheme based on attribute encryption for cloud storage[J]. Journal on Communications, 2015, 36(6): 120-130 (in Chinese)(关志涛, 杨亭亭, 徐茹枝, 等. 面向云存储的基于属性加密的多授权中心访问控制方案[J]. 通信学报, 2015, 36(6): 120-130)
[10]Ying Zuobin, Ma Jianfeng, Cui Jiangtao. Semi-policy hidden attribute encryption scheme supporting dynamic policy update[J]. Journal on Communications, 2015, 36(12): 178-189 (in Chinese)(应作斌, 马建峰, 崔江涛. 支持动态策略更新的半策略隐藏属性加密方案[J]. 通信学报, 2015, 36(12): 178-189)
[11]Xu Wenyu, Wu Lei, Yan Yunxue. Privacy protection scheme for electronic health records based on blockchain and homomorphic encryption[J].Journal of Computer Research and Development, 2018, 55(10): 2233-2243 (in Chinese)(徐文玉, 吴磊, 阎允雪. 基于区块链和同态加密的电子健康记录隐私保护方案[J].计算机研究与发展, 2018, 55(10): 2233-2243)
[12]Liu Yining, Zhou Yuanjian, Lan Rushi, et al. Blockchain-based cloud data deletion verification protocol[J]. Journal of Computer Research and Development, 2018, 55(10): 2199-2207 (in Chinese)(刘忆宁, 周元健, 蓝如师, 等. 基于区块链的云数据删除验证协议[J]. 计算机研究与发展, 2018, 55(10): 2199-2207)
[13]Li Huige, Tian Haibo, Zhang Fangguo, et al. Blockchain-based searchable symmetric encryption scheme[J]. Computers and Electrical Engineering, 2019, 73: 32-45
[14]Zhang Yinghui, Deng R H, Shu Jiangang, et al. TKSE: Trustworthy keyword search over encrypted data with two-side verifiability via blockchain[J]. IEEE Access, 2018, 6: 31077-31087
[15]Wu Axin, Zhang Yinghui, Zheng Xiaokun, et al. Efficient and privacy-preserving traceable attribute-based encryption in blockchain[J]. Annals of Telecommunications, 2019, 74(7/8): 401-411
[16]Zheng Qingji, Xu Shouhuai, Ateniese G. Vabks: Verifiable attribute-based keyword search over outsourced encrypted data[C] //Proc of IEEE Conf on Computer Communications. Piscataway, NJ: IEEE, 2014: 522-530
[17]Liu Quanming, Zhao Bao, Gao Fuqiang. Searchable encryption scheme based on attributes[J]. Journal of Shanxi University: Natural Science Edition, 2016, 39(4): 593-600 (in Chinese)(刘全明, 赵宝, 高富强. 基于属性的可搜索加密方案[J]. 山西大学学报: 自然科学版, 2016, 39(4): 593-600)
[18]Shamir A. How to share a secret[J]. Communications of the ACM, 1979, 22(11): 612-613
[19]Bethencourt J, Sahai A, Waters B. Ciphertext-policy attribute-based encryption[C] //Proc of IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2007: 321-334
[20]Wang Shangping, Zhang Duo, Zhang Yaling, et al. Efficiently revocable and searchable attribute-based encryption scheme for mobile cloud storage[J]. IEEE Access, 2018, 6: 30444-30457
[21]Zhu Huijun, Wang Licheng, Ahmad H, et al. Key-policy attribute-based encryption with equality test in cloud computing[J]. IEEE Access, 2017, 5: 20428-20439
[22]Lynn B. The pairing-based cryptography library[EB/OL]. [2019-11-20]. http://crypto.stanford.edu/pbc/
[23]Niu Shufen, Niu Ling, Wang Caifen, et al. Privacy-preserving multi-recipient aggregate signcryption for heterogeneous cryptography systems[J]. Computer Engineering and Science, 2018, 40(5): 805-812 (in Chinese)(牛淑芬, 牛灵, 王彩芬, 等. 可实现隐私保护的多接收者异构聚合签密方案[J]. 计算机工程与科学, 2018, 40(5): 805-812)