面向外包数据的可追踪防泄漏访问控制方案
2020-03-19彭维平郭凯迪闫玺玺
彭维平,郭凯迪,宋 成,闫玺玺
河南理工大学 计算机科学与技术学院,河南 焦作454003
1 引言
随着云计算的广泛应用,基于“云”模式的外包服务已日趋成为外包行业发展的主流和趋势[1]。其中,医院信息管理系统是一个比较典型的应用。在现代医疗信息管理应用中,医院的电子病历数据庞大,且涉及到医生、护士和病人等多方用户,由于云服务器并不完全可信,其信息的存储、安全访问和隐私保护都是云外包服务模式下亟待解决的问题[2-3]。根据电子病历的多角色和多权限等特性,应用基于属性基加密(Attribute-Based Encryption,ABE)的可追踪外包数据泄漏的安全访问是解决上述问题的一种可行途径。Sahai 等人[4]首次提出ABE 的方案,其基本思想是将用户身份标识视为一系列描述用户身份的属性,实现了用户的隐私保护,但是在灵活性和效率性方面还存在不足。Goyal 等人[5]提出了密钥策略属性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)方案,该方案中密钥对应于访问结构而密文关联于属性集合,方案加强了数据的安全性和访问策略的灵活性,但其公钥长度会随着用户属性的增加而增加。Bethencourt 等人[6]提出密文策略属性基加密(Ciphertext-Policy Attribute-Based Encryp‐tion,CP-ABE)方案,该方案中用户私钥是根据用户属性集合生成,而密文策略则以访问结构的形式部署在密文中,发送者根据密文自己制定访问结构,从而增强了灵活性。但是,在ABE 机制中私钥仅与属性关联,与用户的其他特征信息无关,当合法用户有意或无意泄漏私钥被发现后也无法确认出与其关联的合法用户。Hinek等人[7]提出了基于标记的ABE 方案,使得密钥代理会泄漏用户的隐私,对预防密钥泄漏起到了震慑作用,但该方案无法确认密钥泄漏者的身份。文献[8]提出了属性基叛徒追踪方案,方案采用联合安全编码和叛徒追踪技术确定泄密者身份,但联合编码的应用使得密文及公钥长度增加,降低了系统效率。文献[9]中提出的基于CP-ABE 的数据访问控制方案较好地解决了云服务器不完全可信的问题,提高了数据访问的安全性,但密钥滥用依然不能追踪到用户身份。文献[10]提出了一个支持任意单调访问结构可追踪ABE 方案,支持强表达能力,但追踪到的是与用户对应的随机数,而随机数与用户身份不具有可公开验证的关联,无法明确用户身份。文献[11]提出了密文策略分层属性基加密(CPHABE)方案,该方案降低了公钥和密文长度。但方案由于权限委托在抵抗攻击和用户密钥泄漏追踪方面存在不足。文献[12]提出一个固定追踪存储空间的白盒追踪方案,实现了用户的追踪,但是解密操作与访问控制策略线性相关,增大了计算量,且只有发现了恶意用户的密钥才能进行追踪,无法对用户的解密行为进行统计记录。文献[13]提出了一个可隐藏的密文属性基加密方案,方案实现了信息的隐私安全保护,也在一定程度上降低了私钥的长度,但是与门的访问策略在访问灵活性上还有不足。文献[14]将叛徒追踪机制和联合安全编码引入到方案中,提出一个适应性安全可追踪的属性基加密方案,方案对用户私钥滥用实现了有效的追踪,但是方案在密文长度和公钥长度上会随着属性的增加而增加。文献[15]提出了一个可追踪的云存储属性基加密访问控制方案,该方案通过对密文进行签名,在追踪阶段对签名进行验证从而实现追踪用户,但这在一定程度上增加了密文的长度,同时方案在访问灵活性上有所不足。
鉴于以上不足,本文基于医院电子病历外包数据的安全访问和泄漏追踪问题,结合双线性理论和秘密共享机制提出了一个面向服务外包数据的可追踪防泄漏安全访问控制方案。患者病历经加密后上传至云服务器存储,由病历科对病人病历的读取权限进行授权,医护人员以及患者均可查看病历。当用户需访问病历数据时则根据授权属性与策略进行匹配,若满足则服务器反馈给用户解密参数,用户根据私钥进一步解密数据。反之,则不能访问数据。同时,方案中将身份特征嵌入私钥实现了抵抗合谋攻击以及用户身份的追踪确认。方案通过与传统的外包数据访问控制方案和部分改进方案相比较,实现了对数据安全性和效率性的优化。
2 预备知识
2.1 双线性映射
设G1和G2为两个p 阶乘法循环群且p 为素数。设g 是G1的生成元,且在群G1和G2上计算离散对数问题是困难的。则是G1×G1→G2的一个双线性映射,若满足以下三个性质[16],则称为一个从G1到G2的有效双线性映射:
(1)双 线 性:∀u,v ∈G1和∀m,n ∈Zp,都 存 在(um,vn)=(u,v)mn的运算关系。
(2)非退化性:∃u,v ∈G1,使得(u,v)1,即映射不能将所有G1×G1都映射到G2中某个相同元素。
(3)可计算性:对∀u,v ∈G1,存在有效的算法可计算(u,v),即(um,vn)=(u,v)mn=(un,vm)。
2.2 判定双线性Diffie-Hellman问题
双线性Diffie-Hellman 问题是指:对于乘法循环群G1和G2,随 机 选 取m,n,k ∈Zp,给 定 任 意 四 元 组(g,gm,gn,gk),计算e(g,g)mnk∈G2,其中g 是群G1中的生成元。而判定双线性Diffie-Hellman 问题是指:设g 是乘法循环群G1中的生成元,m,n,k ∈Zp且未知,r ∈G2,给定一个五元组(g,gm,gn,gk,r),判定r=e(g,g)nmk是否成立。
攻击者验证r 与e(g,g)nmk是否相等的前提条件是需要分别从gm、gn、gk中计算获取m、n、k 的值。而由于g 是群G1中 的 生 成 元,m,n,k ∈Zp,设 定N=gm,计 算,可知其为离散对数困难问题,故攻击者通过计算得到m 是不可行的,同理n与k亦是如此。此时假设攻击者能够验证r 与e(g,g)nmk相等的概率为κ,则攻击者的优势函数AdvDBDHB(κ)定义如下:
2.3 (t,n)门限共享方案
秘密共享方案是由Shamir[17]提出的,其主要思想是将秘密分割成若干份并分别由若干可信用户保管,只有秘密的份额大于规定的门限值时才能重建。在(t,n)门限共享方案中,将一个共享密钥K 分成n个子密钥k1,k2,...,kn,且分配给n 个用户。方案需满足两个条件[18]:
(1)任意大于等于t 个用户执有ki值才可解得K。
(2)任意小于等于t-1个用户执有ki值不可解得K。
(t,n)门限共享方案的具体设计描述如下:
选择共享密钥k ∈Zp以及素数,授权中心给n(n <p)个参与者pi(1 ≤i ≤n)分配秘密值[19]:
(1) 选 取 随 机 的 t-1 次 多 项 式ξ(x)=at-1xt-1+at-2xt-2+ +a1x1+a0,令a0=k,则 有ξ(0)=k。
(2)任意选取n 个非零且互不相同的元素x1,x2, ,xn,计算(yi=ξ(xi))1≤i≤n。
(3)把(xi,yi)1≤i≤n分配给第i个参与者pi,其中yi是pi的子密钥且xi公开。
3 系统模型
3.1 相关定义
设定U={Ai,i ∈[1,n]}为所有的属性集合,且每个属性Ai设定三个取值其中表示属性值为真,表示属性值为假,表示此属性值任意取值。在访问中,每个用户均具备不同的特征和身份,通过属性取值来区分。为了标识不同的用户,在此为每个用户分配一个属性集L,定义如下:
定义1(用户属性集L)定义用户的属性集L={Bj,j ∈[1,k]},且。可知,属性集L是U 的一个非空子集,即L ⊆U。仅当用户具备并满足属性Ai时,即设定为;当无需考虑该属性,即该属性可以任意时,设定为。否则,表示该用户不具备该属性项。属性总数为n 的属性集最多能够用来鉴别2n个用户。
定义2(访问结构T[20])设定访问结构T 是系统属性全集U的一个非空子集,即T ⊆2{A1,A2,,An}{∅}。T 表示为属性的判断条件:在T 中的属性集合即为授权集合,不在T 中的属性集合即为非授权集合。
定义3(访问树[21])访问结构的采用访问树来实现。将T 定义为一棵访问结构树,访问树的每一个非叶子节点代表一个关系函数,关系函数可以是AND(n of n)、OR(1 of n)和Threshold(m of n,n >m)等,节点的值由其子节点以及门限值来确定。定义节点x 的子节点数量 为numx,设 其 门 限 值 为kx,则 有0 ≤kx≤numx。当kx=1时,代表的关系函数为OR,当kx=numx时,代表的关系函数为AND。访问树的每一个叶子节点x 定义为一个属性项,其门限值kx=1。同时,定义节点x 的父节点为par(x),定义叶子节点x 的相关联的属性为att(x),定义index(x)为节点x的子节点位置返回值。
定义4(授权)设T 代表根节点为r 的访问树,设R代表访问树T 在根节点x 的子树,则有R和T 具有相同的性质。假设一个属性集合γ 符合访问树R,则令R(γ)=1。应用递归方式来计算R(γ),即当所计算的节点x 为非叶子节点时,计算节点x 的所有的子节点x′的Rx′(γ)值。当且仅当至少有kx个子节点返回值为1 时,Rx′(γ)返回值才为1;如果节点x 为叶子节点时,当且仅当该叶子节点属性值满足att(x)∈γ,Rx′(γ)返回值才为1。
3.2 应用模型
本医疗云外包数据安全访问系统模型主要由4 类实体组成:病历科、医护人员、云服务商和用户,如图1所示。
图1 系统架构图
(1)病历科:作为第三方授权机构(Third-Party Authority,TPA),主要负责执行初始化算法生成公钥和主密钥,根据数据拥有者发送的策略,为其返回加密数据的参数。同时也为用户分发私钥,保存可追踪列表。
(2)医护人员:作为病历上传者(Data Owner,DO),主要是对病历进行加密并将密文发送至云端。
(3)云服务商(Cloud Service Provider,CSP):主要用来存储加密数据,同时为访问者进行属性匹配并为匹配成功者分发中间解密参数。云服务提供者是半可信或者是不可信的。
(4)用户(User):拥有一组属性,当属性满足密文访问策略时即可获得云端反馈的解密参数并解密密文。
系统整体执行如下:首先,病历科作为TPA 执行系统初始化过程,生成系统公钥和主密钥;随后①医护人员根据不同病历类型,定义不同访问权限的访问策略,并发送给病历科;②病历科根据该访问策略中所包含的属性集合生成访问策略的根节点,连同系统公钥返回给医护人员;③医护人员根据病历科返回根节点和系统公钥,生成加密所需的加密密钥等参数,完成医疗信息的加密并上传至云服务器;④当某一用户需要访问该医疗数据时,首先将该用户的属性信息集合发送给病历科;⑤病历科根据该用户的属性集合,生成用户私钥和中间参数返回给该用户;⑥用户将中间参数和自身的属性集合发送给云服务器,由云服务器实施策略匹配;⑦若匹配成功,云服务器将中间解密参数和密文发送给用户,用户即可根据自己的私钥解密密文;⑧云服务器将中间参数和用户属性集合发送给病历科,由病历科执行追踪用户解密行为。
3.3 安全分析模型
本文方案使用选择明文攻击(IND-CPA)模型,其模型可以定义为一个攻击者ℜ和一个挑战者ℑ的游戏,具体方案定义如下:
初始阶段:攻击者ℜ选择挑战访问结构。
建立阶段:挑战者ℑ 运行初始化算法,并将生成的公钥PK提供给攻击者ℜ。
查询阶段1:根据属性集对应的属性密钥进行查询,挑战者ℑ 执行密钥生成算法,同时将私钥交给攻击者ℜ,其属性基不能满足访问结构T。
挑战阶段:攻击者ℜ向挑战者ℑ提交两个等长的消息M1、M2以及挑战属性集合,且有挑战者ℑ 未曾查询挑战属性集的密钥,挑战者ℑ随机选择一个数u ∈{0,1},并且利用T 加密,生成挑战密文并发送给攻击者ℜ。
查询阶段2:重复执行查询阶段1。
猜测阶段:攻击者ℜ输出一个猜测的数u′∈{0,1},若有u′=u,则攻击者胜利。攻击者ℜ 在游戏中的优势定义为:
若攻击者赢得游戏的概率Advℜ(k)可以忽略,则称该方案是安全的。
4 方案设计
4.1 系统初始化Setup(λ,U)→(MK,PK,W)
由TPA执行初始化操作,属性全域U 以及安全随机数λ作为初始化算法的输入,得到主密钥MK、公共密钥PK,同时生成一个二元组为(用户ID,随机参数)的可查询列表W,W 初始化为∅。
e:G×G →GT是双线性映射,且由素数阶P 和生成元g 组成。定义系统全域属性集合U 且对其属性值进行index 编号,按index 进行排序,同时为每个属性Ai∈U 选择一个随机参数ti∈Zp。从循环群G 中选择两个随机参数α,β ∈ZP,同时定义∀y ∈Zp。TPA 执行Setup(),则有:
4.2 密钥生成KeyGen(MK,uk,L′)→(SKu,DKu)
TPA 为User 分配私钥。将主密钥MK,User 的ID号uk以及User 的属性授权L′作为输入,TPA 运行密钥生成算法,生成用户私钥SKu和中间参数DKu。在生成密钥后,将ID和随机参数记录在列表W 中。设定用户的授权属性集合为L′,即L′={Ai′}且L′⊆S,同时,根据User的ID分配一个随机参数ϑ,TPA 将用户ID和参数ϑ写入列表W。TPA执行KeyGen(),则有:
4.3 数据加密Encrypt(PK,P,M)→(Cp)
数据拥有者DO 对数据进行加密处理,输入公共密钥PK和指定的策略P以及明文M,生成密文文件Cp。具体执行如下:
(1)DO 将制定的访问策略Policy 发送给授权机构TPA,TPA 根据公钥PK 去除Policy 中所有的*(*代表其通配符)属性,同时将其属性按照指定的优先级进行排序,形成新的属性集合L。将L中的属性映射到U 中,构建访问树。
定义属性集合L={W1,W2, ,Wm},并将L 属性Ai作为树的叶子节点,根据访问结构树T 对明文M 加密。为T 的每个节点x 选择一个多项式qx,该多项式依照由上至下,从根节点r 开始进行选择。对T 的每个节点x为其定义多项式qx的阶次为dx,且与该节点的门限值kx满足关系式:dx=kx-1。算法以根节点r 开始,算法随机选择多项式qr剩余dr个点的值。对于剩余节点x,令qx(0)=qpar(x)(index(x,)同)样随机选择其他dx个点的值。若多项式被确定后,那么每一个叶子节点x,将定义一个秘密值,即:
TPA将根节点r 的qr(0)返回给DO。
(2)DO 在接收到TPA 反馈的参数之后,令qr(0)=ε,选择随机参数y ∈ZP,生成密文文件Cp,则有:
数据拥有者DO 将生成的密文文件发送给CSP,存储数据。
4.4 策略匹配Delegate(DKu,L′)→(Fu,ψ*)
由User 发送DKu和L′给CSP,如果User 授权属性与DO 定义的策略P 相匹配,则将中间解密参数Fu和ψ*返回给User。具体如下:
(1)用户User访问云端数据时需将自己的属性集合L′和中间参数DKu发送给CSP,CSP 将用户属性集合与访问策略进行比较,以确定是否拥有访问权限。同时计算{TAi}Ai∈L′的集合,即中间参数DL′,则:
定义递归算法DepNode(Hp,D,x),输入密文文件参数秘密值集合D 以及访问树节点x,输出G2的一组元素或者是⊥。若节点x 为叶子节点,则有i=att(x),满足公式(8):
若x 为非叶子节点,则递归算法DepNode(Hp,D,x)定义如下:关于节点x 的所有子节点z,运算DepNode(Hp,D,x),且将结果记为fz,若满足存在节点x的子节点集合为Sx,且其值为kx,则继续执行递归算法,若不然,则有fz=⊥。
令i =index(x),S′x={index(z)|z ∈,S则x}有:
以上算法详细地定义了DepNode(Hp,D,x)的运算方式,系统中的解密算法只能调用该递归算法在根节点r 的值。所以只有在用户属性集关联的私钥满足指定的访问树时,即Tx(r)=1时,有:
Fu=DepNode(Hp,D,r)=e(g,ω)yqr(0)=e(g,ω)εy(10)
(2)若用户属性集合满足访问,则根据用户属性的授权集合,计算出用户ID对应的参数,即有:
CSP将中间解密参数Fu和ψ*返回给用户。
4.5 数据解密Decrypt(SKu,ψ*,Fu,Cp)→(M)
User 根据TPA 为其分配的SKu以及中间解密参数Fu和ψ*,运行算法得到明文M。当用户User 收到CSP反馈的参数Fu和ψ*,根据公式(12)得到参数G,再根据公式(13)解得明文M。
4.6 用户追踪Trace(DKu,W,L)→(ID/⊥)
本文方案中,TPA 为每个User 产生密钥时均将其ID和对应的参数ϑ 记录在列表W 中,并且当用户访问数据时,云服务器不仅实施策略匹配,也会将用户的属性集合L 和中间参数DKu通过安全信道发送给TPA。由此,TPA 可根据公钥PK、中间参数DKu和属性集合L进行验证,若验证用户DKu是TPA 分发的有效中间参数,则根据参数ϑ 在列表W 中即可查找出对应的用户ID,以此来监测用户的解密行为,为追踪恶意散布解密密钥用户提供参考因子。若验证无效,则说明该用户不能解密即无需追踪。
本文方案的用户追踪分为检验和查询两个阶段,具体流程如下:
(1)检验阶段:在检验阶段,TPA 根据用户的属性集合L、中间参数DKu和公钥PK 验证中间参数DKu是否为有效参数,依据以下计算方法:
根据访问者的属性和公式(14)可计算出公钥中对应属性的Ti连乘运算,只有当用户中间参数是根据其属性集合分配得到的,才能使得公式(15)成立。若公式(15)成立,则表明其为有效用户;反之,为非授权用户。
(2)查询阶段:若验证参数为有效的用户中间参数,则可以根据查询列表W 对ϑ 进行查询,并输出与ϑ 对应的用户ID,若验证无效,则输出⊥。
5 方案分析
5.1 正确性分析
本文所设计算法的正确与否体现于密文数据能否被成功解密以及泄密用户能否被追踪。在解密过程中,用户需先将自己的属性集合和中间参数DKu提交给云服务器,云服务器对其进行策略匹配,当用户属性集合L′满足访问结构L,即,用户才能获取到解密参数Fu和ψ*,然后根据公式(12)解得参数G,最后根据公式(13)解密密文得到明文。由此可知,本解密算法的正确性验证可等价于对公式(12)和(13)的正确性验证。而泄密用户的检测和追踪主要是通过验证中间参数DKu的有效性来实现的,可等价于对公式(15)的正确性验证。
(1)用户收到解密参数Fu和ψ*后,执行解密算法,根据公式(12)解得参数G,这里验证公式(12)的正确性:
(2)获得参数G后进一步根据公式(13)解密密文,这里验证公式(13)的正确性:
若用户属性不能够满足访问策略,则不能获取解密参数,从而不能够正确解密密文。
(3)对公式(15)的正确性证明如下:
5.2 安全性分析
5.2.1 IND-CPA模型下证明安全性
以下证明是基于上述IND-CPA 安全模型和DBDH问题上进行分析论证的。假设DBDH成立,则攻击者无法在多项式时间内选择访问策略T*攻破该方案,则方案是IND-CPA安全的。
证明如果存在一个攻击者ℜ 能够攻破本文方案,则存在一个算法B 可以攻破DBDH 问题,即输入(ga,ωb,gc,Z=e(g,ω)z),算法B决定等式Z=e(g,ω)abc是否成立,其过程如下:
挑战者定义系统参数:生成元为g 和ω 的群G1和G2、有效映射e 和随机参数a,b,c,z ∈Zp。同时挑战者执 行 抛 币 值 u,若 u=1,则 挑 战 者 设 置(A,B,F,Z)=(ga,ωb,gc,e(g,ω)z);若u=0,则挑战者设置(A,B,F,Z)=(ga,ωb,gc,e(g,ω)abc)。
(1)初始阶段:攻击者ℜ选择挑战的访问结构T*,并将其提交给挑战者ℑ。
(2)建立阶段:选择随机数λ,设置e(g,ω)α=e(A,B),使α=ab计算Y=e(g,ω)α;对于每个属性Aj∈U,则有:
(4)挑战阶段:攻击者ℜ 提交两个挑战消息M1、M2,挑战者ℑ 执行掷币游戏选取μ ∈{0,1},并进行以 下 操 作 。 随 机 选 择 c ∈Zp计 算,同时 设置访问树T*的根节点值为待共享的值为c。对于每一个叶子节点Aj∈T*,计算。执行加密算法,返回加密数据Mμ,输出密文:
并将其返回给攻击者ℜ。
若u=0时,则有Z=e(g,ω)abc和C′=e(g,ω)yc·Z,所以是有效随机加密。
若u=1时,则有Z=e(g,ω)z和C′=Mμ·e(g,ω)cy+z,因为z的随机性,从攻击者的角度来看C′将是G2的随机元素,得不到Mμ。
(5)查询阶段2:重复查询阶段1。
(6)猜测阶段:攻击者ℜ 输出一个猜测的数μ′∈{0,1},若有μ′=u,则用u′=0 表示一个有效的BDH组,反之,则用u′=1表示一个随机组。
当u=1 时,攻击者不能获取信息μ,则有Pr[μ′≠μ|u=1]=1 。2那么挑战者在μ′≠μ时猜测u′=1,则有Pr[u′=u|u=1]=1 。2当u=0时能获取信息μ,那么攻击者的优势通过 κ 来定义,所以有Pr[μ′=μ|u=0]1= 2+κ,那 么 挑 战 者 在μ′=μ 时 猜 测u′=0, 则 有 Pr[u′=u|u=0]=1 2+。κ 因 此Pr[u′=u|u=0]-Pr[u′=u|u=1]2=1+κ-12≥κ 成立,即假定攻击者能够以优势κ 求解DBDH。
综上分析,假设DBDH 成立,则没有攻击者能够在多项式时间内选择访问策略T*下攻破方案,则方案是安全的。
5.2.2 抗攻击等特性分析
(1)抗合谋攻击
当多个用户试图将自己的属性私钥进行联合,组合属性私钥以实施对密文解密时,授权中心为用户分配属性私钥和中间参数时为每一个属性嵌入了一个与该用户ID对应的唯一随机数ϑ ∈Zp,这就说明只有嵌入相同随机数的属性私钥才可以进行组合使用,则加大了属性私钥组合的难度。例如,用户1 的私钥和中间参数分别为SK1u=g(α+ϑ1)/β和用户2 的私钥和中间参数分别为SK2u=g(α+ϑ2)/β和。那么它们联合之后则会在联合私钥和中间参数中出现两个随机数,不符合中心颁发的私钥和中间参数,即不可解密密文。同时密文与e(g,ω)ε(y+α)有关,若要获取明文则需通过计算e(ψ*,ωε先)解得G,因为SKu中嵌入了用户私有的随机数ϑ ∈Zp,所以用户之间无法通过组合解得G,以此实现了抗合谋攻击。
(2)抗中间人攻击
在通信过程中存在攻击者以中间人身份来实施对数据的破获。本文方案中若要破获数据则需要计算中间参数G,而计算中间参数则需要私钥SKu。如,存在中间人截获了解密中间参数Fu和ψ*后,想去破解密文则 需 要 通 过 计 算C′/G/Fu,而G则 通 过 计 算获取,但中间人无法获取私钥SKu则无法获取G即无法解密,同时在数据加解密的过程中都引入了随机参数,故中间人无法恢复云端发来的消息,即方案能够抗中间人攻击。
(3)抗云服务器端泄密
本应用场景中涉及到病历科、医护人员、用户和CSP 四类实体,其中病历科作为授权中心是完全可信的,但CSP 是半可信的。CSP 除了提供安全的密文存储和策略匹配之外,由于其能直接对密文进行访问和管理,故也存在试图获取私密性数据的可能。为防止CSP端泄密,在本文方案中设计的解密密钥由两部分参数通过公式(12)产生,除了由CSP 产生的中间解密参数Fu和ψ*之外,另外一部分参数SKu掌握在访问用户端。因而,即使CSP 获得了解密的中间参数,由于接触不到私钥,仍然不能对密文进行解密,故无法破坏数据的隐私性。同时用户想要获取到明文也需要满足数据者制定的访问策略,拥有权限才可解密。
(4)提供用户可追踪性
在访问控制过程中,针对可能出现的用户无意或是有意泄漏私钥的问题,方案定义了用户追踪验证算法。当用户访问时,TPA 对用户中间参数有效性进行验证,根据访问者的属性和公式(14)来计算公钥中对应属性的Ti连乘运算,然后根据公式(15)验证是否为有效私钥,只有当用户中间参数是根据其属性集合分配得到才能使得公式(15)成立,因而,根据参数ϑ 在列表W 中即可查找出对应的用户ID,实现了用户可追踪。
5.2.3 安全性比较
与文献[6]、[13]、[14]、[15]比较可知,本文方案除了和上述文献均满足IND-CPA 模型下证明安全性且支持抗合谋攻击和抗中间人攻击之外,与文献[6]和[13]相比,支持用户解密行为的追踪;与文献[6]、[13]和[15]相比,在访问策略上采用访问树的模式具备更高的灵活性;与文献[14]具备相同的特性。具体如表1所示。
5.3 效率分析
表1 特性分析
由于文献[7-12]在方案构造上使用了分层结构、联合编码方式或者是单调访问结构,与本文方案在构造上存在较大差异,无可比性,故以下仅将本文方案与文献[6]、[13]、[14]、[15]进行比较。表2、3 中n代表系统中属性域中属性的数目;k 表示用户属性集合中属性的数目;|w |表示访问结构中属性集合中属性的数目;ni代表文献[13]第i 个属性的取值个数;a、b 分别代表文献[13]、[14]中用户属性矩阵行和列的数目;|G |和 | GT|表示群G 和群GT中每个元素的长度;|Zp|代表Zp中每一个元素的长度;tb代表线性对运算时间;te代表一次指数运算时间;其余操作忽略不计。
表2 时间复杂度对比
表3 公私钥及密文长度对比
5.3.1 时间复杂度分析
从表2 对比结果可以看出,本文方案在解密时间和公钥生成时间上长于文献[6],但是在加密时间、私钥生成时间和密文生成时间上实现了缩短。其次,本文方案与文献[13]相比,私钥生成时间一致,另外虽然在加密时间、公钥和密文生成时间上都与属性数目线性相关,但也有所减少且解密时间更短。本文方案与文献[14]均实现了用户追踪,但是在加解密时间、公私钥和密文生成时间上本文方案更具有优势,文献[15]虽然在加密时间上更短,但是其加密时间与用户属性数目线性相关,同时在公私钥和密文生成时间上本文方案具有一定优势。
5.3.2 空间复杂度分析
从表3 对比结果可以看出,本文方案与文献[6]和[15]相比,在公钥长度方面有所增加,但是与私钥长度和密文长度相比略有缩短,一定程度上降低了空间开销和解密开销。方案与文献[13]和[14]相比虽然在公钥长度、私钥长度和密文长度方面均与属性有线性关系,但是相比于文献[13]和[14]在这些方面均对空间大小有所压缩。
综上所述,从总体来看,本文方案在加解密时间上实现了缩短且在私钥长度和密文长度方面也进行了缩短,同时实现了安全访问的灵活性,与其他方案相比在功能上实现了追踪和性能效率上有所提高。
6 结束语
当前外包数据的安全隐患依然制约着云服务的发展,如何提高云外包数据的安全性依然是一个好的研究方向。本文引入第三方可信机构在基于CP-ABE 的经典方案上做出改进,首先在私钥分配阶段和数据加密阶段对算法进行了改进,缩短了私钥长度和密文长度,降低了存储开销和通信时间成本;其次在为用户分配私钥时根据其ID 随机生成一个参数嵌入私钥中,当用户访问数据时只有用户属性满足访问策略才能获取中间参数从而解密密文,增强了抗合谋攻击和中间人攻击能力;然后对于用户私钥泄漏的问题定义了用户追踪验证,追踪用户的身份;最后方案是基于访问树结构,利用Shamir 秘密共享机制实现策略的与或、门限操作,提高了系统的灵活性。分析表明,方案在基于DBDH假设下证明是安全的,通过方案比较,本文方案在加解密时间、私钥长度和密文长度方面有所优化,实现了性能和功能的优化。由于在方案中对于泄密的合法用户未实施叛逃撤销,因而后续将针对追踪到的泄密用户的撤销做进一步的研究。