1引言 云存储是一种从云计算衍生和发展起来的数据外包存储服务技术,能够使用户远程存储并按需随时随地访问云存储中的数据。云存储依靠其成本低、易于使用的接口和高扩展性的商业优势得到了业内的广泛关注。然而,云用户在享受云存储带来多种便利的同时,也面临着数据脱离自身控制域而担心数据的安全和隐私问题。Google、Docs、TheLinkup等多家著名云服务提供商曾多次出现过各种安全问题,导致了严重的后果,安全隐患已成为云存储大规模发展亟需解决的关键问题。 访问控制是实现用户数据机密性和进行隐私保护的主要工具之一,然而云存储的外包存储服务模式导致特权用户的存在,其具有非授权访问用户数据的权利,导致用户数据信息和隐私泄露等内部攻击问题。针对上述安全问题,引入基于模糊身份加密的ABE(AttributebasedEncryption)加密访问控制技术。 基于属性的加密技术一般分为密钥策略属性基加密(KeypolicyAttributebasedEncryption,KPABE)和密文策略属性基加密(CiphertextpolicyAttributebasedEncryption,CPABE)。Goyal等人将用户私钥关联到访问控制结构树,密文关联到属性集,若用户的属性集满足访问控制树,则该用户可以解密数据,否则,该用户无法解密数据。Bethencourt等人将用户私钥关联到属性集,密文关联到访问控制树,属性集满足该访问控制树的用户具有解密数据的能力。KPABE方案中的加密者不能直接控制哪些用户能访问密文数据,而CPABE方案中的用户可以直接决定哪些用户能够访问密文数据,显然CPABE方案更适用于云存储服务。基于CPABE的云存储访问控制方案也存在一定的不足,即面临单一信任授权机构、属性和用户撤销等困难问题。文献为云用户的私钥嵌入失效时间属性,失效时间到期,用户将不能访问密文。这种周期性访问控制方法要求所有用户周期性更新私钥,从而导致整个云系统效率低下。王鹏翩等人提出基于CPABE直接撤销模式下支持完全细粒度属性的撤销方案,而该撤销方案利用用户撤销列表实现细粒度属性的撤销。 文献在个人健康记录云计算环境中划分公共领域和私人领域,根据两种领域不同的属性特质,采用不同的密钥管理和分配方式。比如私人领域为数据属主的亲人、朋友等,公共领域为各个医生、护士和保险公司的工作人员等。针对上述问题,本文提出一种基于CPABE与XACML相结合的安全云存储访问控制方案。该方案采用CPABE加密机制保护云存储用户数据的机密性,通过XACML框架实现高效、细粒度、动态和可扩展的访问控制,并实现高效的用户撤销。 2预备知识 2。1密文策略属性基加密(CPABE) 1。双线性对 双线性对是ABE加密方案设计中非常关键的工具之一。设G和GT是阶为素数p的群,存在一个可有效计算的双线性映射e:GGGT,该映射具有以下性质:a)双线性:对于所有的a,bZp和所有的g,hG,满足e(ga,hb)e(g,h)ab。b)非退化性:存在g,hG,使得e(g,h)1。即不能将所有GG的元素都映射到GT中的某个相同的元素。c)可计算性:对于所有的g,hG,e(g,h)都是可以有效计算的。 2。访问结构 设P{P1,P2,,Pn}为所有属性的集合,某个用户u的属性集A是P的一个非空子集,A{P1,P2,,Pn},则N个属性可用于鉴别2N个用户。访问结构T是集合{P1,P2,,Pn}的一个非空子集,T2{P1,P2,,Pn}{}。T代表一个属性判断条件:在T中的属性集合称为授权集,不在T中的属性集合称为非授权集。 3。困难假设设G是素数阶p的双线性群,g是G的生成元,随机指数a,b,sZp。若将一个元组(g,ga,gb,gs)G4和一个元素zGT作为输入,则将决定ze(g,g)abs的输出。如果下式成立:Pr〔(g,ga,gb,gs,e(g,g)abs)0〕Pr〔(g,ga,gb,gs,z)0表明存在一个算法输出b{0,1},在G上具有优势解决DBDH难题。如果没有多项式时间算法具有不可忽略的优势解决DBDH难题,可以说DBDH假设在G上成立。 4。CPABE算法 CPABE主要包含有4个算法,各算法描述如下: 1)初始化算法Setup:生成主密钥MK和公共参数PK。 2)密钥生成算法SKKeyGen(MK,A):使用MK和用户属性集A生成用户的私钥SK。 3)加密算法CTEncrypt(PK,M,T):使用公共参数PK、需加密的数据明文M和访问结构T进行加密,得到密文CT。 4)解密算法MDecrypt(CT,SK):用户使用私钥SK解密密文CT,得到明文数据M。 2。2可扩展的访问控制标识语言(XACML) 可扩展访问控制标识语言(eXtensibleAccessControlMarkupLanguage,XACML)是用于决定请求响应的通用访问控制策略语言和执行授权策略的框架,它在传统的分布式环境中被广泛用于访问控制策略的执行。XACML访问控制架构主要由策略执行点(PolicyEnforcementPoint,PEP)、策略决策点(PolicyDecisionPoint,PDP)、策略管理点(PolicyAdministrationPoint,PAP)、策略信息点(PolicyInformationPoint,PIP)和上下文处理器组成。XACML访问控制流程如下:首先PEP接受原始的访问请求(origiNalAccessRequest,NAR),并转发给上下文处理器,由其解析为XACML规范的请求并传递给PDP,PDP根据从PAP所获得的策略以及从PIP获取的实体属性对XACML规范请求进行判定,并将判定结果发给PEP,最后由PEP执行访问判定结果。 3CPABE和XACML多权限安全云存储访问控制方案 3。1总体方案 CPABE和XACML结合实现多权限安全云存储访问控制方案的总体架构。 可以看出,该架构与XACML架构的主要区别是策略集中的规则可以由CPABE加密算法中的访问控制结构树转换而来。通过将CPABE加密过程中采用的访问控制结构树转换为XACML的策略规则,应用XACML框架实现细粒度多权限访问控制机制。为保护用户敏感数据的机密性,首先,系统采用AES对称加密算法对数据明文进行加密,得到数据密文;其次,对称密钥采用CPABE算法进行加密,得到密钥密文;最后,将数据密文和密钥密文按照系统设计格式保存至云存储系统中。当某用户请求访问数据时,采用XACML机制控制用户的多种权限,若访问用户的主体属性通过XACML的策略规则,就可以访问密钥密文,通过解密密钥密文得到对称密钥,从而解密数据密文得到数据明文。XACML策略规则不仅可以从CPABE访问控制结构树转换而来,也可以单独进行添加修改。 3。2方案实现 本文方案基于开源项目SunsXACML和cpabeToolkit在OpenStack子项目Swift对象存储项目上实现。 3。2。1系统初始化 方案中采用属性权威(AttributeAuthority,AA)管理和分配实体(包括资源、主体和环境)的属性。主体属性包括用户姓名、用户ID、部门、职务和入职时间等;资源属性包括名称、主题、资源大小、创建者和创建日期等;环境属性包括有时间、网络状况、资源使用率等。运行cpabeToolkit初始化算法Setup生成主密钥MK和公共参数PK。PK{G0,g,hg,e(g,g)}MK(,g)其中,G0为生成元为g、阶为p的双线性群,随机参数,Zp。 3。2。2新文件创建 数据所有者上传机密数据到云存储服务器时,需要对数据进行如下处理: 1)DO为文件F选择唯一标识号IDF,随机选择对称密钥KeyF加密F得到CF。 2)DO指定访问控制结构树T并调用CPABE加密算法Encrypt(PK,M,T)加密对称密钥KeyF得到CT。假设Y是访问结构树T所有叶子节点的集合,记访问结构树T的根节点为r,设节点t的门限值为kt,为节点t生成一个kt1次的随机多项式qt,qt(0)代表该节点的秘密。定义函数ind(x)返回节点x的索引编号,函数par(x)返回节点x的父节点,函数att(y)返回叶子节点y对应的属性。随机选择参数sZp,令qr(0)s,对于其他节点x,qx(0)qpar(x)(ind(x))。Encrypt(PK,M,T)加密算法加密对称密钥KeyF得到的的密钥密文CT如下:CT(T,珟CKeyFe(g,g)s,Cgs,yY:C(1)ygqy(0),C(2)yH(attr(y))qy(0)) 3)文件在云存储服务器中的存储格式为(IDF,CF,CT)。 4)云服务提供商根据DO上传数据中的访问控制树T,解析并生成XACML使用的策略规则文件并存储于策略数据库中。云用户还可以根据资源属性和环境属性定义策略规则。 3。2。3文件访问 当有云用户申请访问云存储数据时,需要进行以下处理。 1)云服务器首先验证云用户的有效性。 2)XACML访问控制对用户的数据访问请求按照访问策略进行决策。若实体属性与访问控制策略匹配,则XACML决策为接受访问;否则拒绝访问请求。3)若用户u通过XACML验证,根据用户的主体属性集A生成对应的私钥SKu。SKu(Dg(),jA:DjgH(j)j,Djg)其中随机参数Zp,属性jA。4)执行解密算法Decrypt(CT,SK)得到对称密钥KeyF,使用该密钥解密数据密文得到明文,解密过程如下:首先定义递归运算DecryptNode(CT,SK,x),令iattr(y),每个叶子节点x计算:当iA时,DecryptNode(CT,SK,x)当iA时,DecryptNode(CT,SK,x)e(D(1)i,C(1)x)e(D(2)i,C(2)x)e(g,g)q(0)x。对于非叶子节点z,需要利用kx个叶节点的DecryptNode(CT,SK,x)作为拉格朗日插值定理的插值点,计算得到e(g,g)q(0)z。设访问控制树T的根节点为R,令e(g,g)q(0)Re(g,g)sB,则解密明文M珟C(e(C,DB)珟C(e(hs,g())e(g,g)s)。 3。2。4权限撤销和策略更新数据所有者要撤销某用户u对文件F的访问权限时,需要通过如下两种方式实现处理: 1)更新文件F对应的XACML访问控制策略,添加拒绝访问规则。 2)修改CPABE访问控制结构树T,生成新的对称密钥进行加密,重加密方案采用云服务器端代理重加密机制。 4安全性分析 4。1数据机密性 为保证用户数据的机密性和隐私,首先,用户数据通过AES对称加密算法加密;然后,应用CPABE算法加密其对称密钥;最后,对于CPABE加密得到的密钥密文采用XACML框架进行访问控制。Bethencourt等人在文献中已经证明CPABE的安全性是基于DBDH困难假设之上的,从而保证对称密钥的安全性,因此整个访问控制方案保证了用户数据的安全性和隐私。应用XACML细粒度授权架构保证只有合法用户在权限范围内才能访问、操作资源。 4。2抗合谋攻击 假设云服务器是诚实但好奇的。假设进行合谋攻击的用户的联合属性集满足访问控制结构树,但其各自的属性集都不能完全满足访问结构树,由用户属性产生的私钥组件DjgH(j)j,显然合谋用户的属性不同,使得他们无法解密对称密钥,当然无法访问数据;即使用户合谋进行攻击,也不能恢复e(g,g)s,因此无法解密密钥文件。Goyal等学者在文献中已经证明ABE对于合谋攻击是安全的,本文方案是基于CPABE加密算法构建的访问控制机制,所以本文方案对于合谋攻击也是安全的。 4。3后向前向安全 本方案无论对于新加入的用户还是已经撤销的用户,都保证外包云存储数据的后向和前向安全性。当某个用户在某时刻获得满足密文访问策略的属性集时,与该属性相关的属性组密钥需要进行更新,并用更新的新属性组密钥进行重加密。用户即使保存以前系统中的密文,也不能准确解密得到明文,因为即使能够从密文中计算得到e(g,g)(ss)的值,由于s是随机值,不能获得,因此也不能准确计算出e(g,g)s。所以,该访问控制方案具有后向安全性。同理,当某用户被撤销权限时,系统采用新的密钥进行重加密,因此该算法同样具有前向安全性。 5仿真及性能分析 实验机器:Inter(R)Core(TM)i74720HQ、16GBDRR3内存,操作系统为Windows8。1。实验环境:VMwareWorkstation11。1。2上安装Ubuntu14。04,采用开源云OpenStack构建云计算环境,Keystone作为认证服务,Swift作为云存储服务。实验代码基于sunxacml1。2和cpabe0。11库编写,对称加密算法采用基于openssl1。0。1j库的128bitAES加密算法。实验中,对基于CPABE和XACML结合访问控制方案的加密和解密时间开销进行评估。方案中,用户数据首先通过对称加密算法AES128加密,CPABE加密的仅仅是128bits的对称密钥,整个方案中对于CPABE加密不同数据大小实验并没有真正的意义,本文实验采用不同的访问控制结构树与加解密时间之间的关系。访问控制结构树的叶子表示用户属性,所以节点的数目就是用户属性复杂度的体现。实验一测试了用户私钥产生时间与用户属性数量之间的关系。 不妨假设用户属性为a1和a2,该用户的密钥生成时间为57当用户属性数量为6时,设用户属性为a1,a2,,a6,该用户私钥产生时间为204ms。用户私钥产生时间与用户属性数量的关系成正比。方案中应用CPABE加密对称密钥,所以假设加密文件大小为1kB固定不变。分别对不同属性数量的访问控制结构树进行加密解密实验。展示了基于CPABE算法的加密与解密时间开销与用户主体属性数目(访问控制结构树中叶子节点数目)之间的关系。用户属性数目越多,加密、解密所用时间亦越多,所以在实际系统中,需要根据实际系统制定合适数目的用户属性。结束语本文提出基于属性加密结合XACML多权限安全云存储访问控制方案,保证云用户机密数据的安全和用户隐私不被泄漏;通过将CPABE访问控制结构树转换为适用于XACML应用的策略规则,将两者有机结合,构造具有细粒度、多权限、可扩展的访问控制方案;充分考虑了CPABE加密解密算法的效率,云存储中大量数据的重加密运算移交于云服务器端实现。下一步工作将对方案中的属性撤销效率进行研究。