Corresponding author: ZHOU Fu-cai , E-mail: fczhou@mail.neu.edu.cn
随着云计算的发展,云存储被广泛应用.云存储将网络中大量不同类型的存储设备通过应用软件集合起来协同工作,对外提供数据存储和业务访问功能,以高可靠、低成本和免维护对存储服务实现了革命性变革.安全性保障是云存储应用的一个核心问题,也是云计算用户一直担忧的主要问题.文献[1]给出了云存储作为服务使用必须要解决的安全问题,其中最为突出的是访问控制问题.
对于安全性要求不高的数据,数据拥有者(data owner,DO)可以依赖于云服务提供商(cloud service provide,CSP)提供的基本访问控制功能,来实施对数据的保护.但对于敏感性数据,DO必须通过加密数据并控制用户的解密能力以实现访问控制,这一方法称为密文访问控制.在这种CSP不完全可信的情况下,引入密文机制的访问控制是必要的,是目前被广泛认可采用的云存储服务访问控制机制.但是利用传统的对称密钥机制和非对称密钥机制,缺乏对细粒度访问控制和授权灵活性.国内外学者针对云存储中访问控制存在的安全问题,进行了深入研究,并取得了一定的成果.Sahai等[2]提出了模糊的基于身份的加密方案,这是最早的基于属性加密(attribute based encryption,ABE)的雏形.Goyal等[3]提出了密钥策略属性的加密方案(key-policy attribute based encryption,KP-ABE).Bethencourt等[4]提出了更接近于现实访问控制系统的密文策略属性的加密方案(ciphertext policy attribute based encryption,CP-ABE).
CP-ABE算法最突出的优点是适用于分布式环境下解密方不固定的情况,加密方加密信息时不需知道具体是谁解密,而解密方只需要符合相应条件便可解密.由于CP-ABE算法的诸多优点,有很多学者对CP-ABE算法如何应用到密文访问控制中进行了深入的研究[5, 6],其研究内容主要集中在属性撤销、属性授权管理、访问结构等方面,但没有涉及存储空间利用率低的问题.本文结合云存储的应用环境,构造了一种基于CP-ABE加密和收敛加密技术的混合加密数据访问控制方案.方案中所使用的收敛加密技术[7],即用数据的属性加密数据,相同数据的加密结果也是相同的,保证数据机密性,同时云存储服务器具有检测密文冗余功能,提高访问控制系统的存储空间利用率.并使用数字签名技术以支持数据源认证和数据完整性认证,具有高效率、细粒度及高灵活性等性能,以及广阔的应用前景和发展空间.
1 基础知识在CP-ABE方案中,访问控制策略由加密方制定,采用秘密共享[8]方式,密文与访问控制策略相关,解密密钥与属性集合相关.在给出CP-ABE各算法之前,首先介绍算法中用到的访问树.
访问树T 是一个表示访问结构的树.树的每个叶子节点由属性描述,每个非叶子节点代表一个阈门,由它的子节点和阈值描述.numx是节点x的子节点数量,kx是其阈值,则有0 < kx≤numx.当kx=1时,阈门是“或”门;当kx=numx时,阈门是“与”门,每个叶子节点x的阈值kx=1.令T是一个根节点为R的访问树,Tx表示树根为x的树T的子树,则T也可以看作Tr.如果属性集合γ满足访问树Tx,则有Tx(γ)=1.Tx(γ)可以递归计算得到:如果x是非叶子节点,计算x所有子节点x′的Tx′(γ)值,当且仅当至少kx个子节点返回1时,Tx(γ)返回1;如果x是叶子节点,则只有当att(x)∈γ(att(x)表示与叶子节点相关的属性)时,Tx(γ)返回1.
CP-ABE方案具体相关变量和定义如下:
G0是一个素数p阶生成元为g的双线性群;
e表示双线性映射e:G0×G0→G1;
Δi,s为拉格朗日系数;
H 为一个哈希函数,且有H:{0,1}*→G0;
parent(x)表示T中节点x的父节点;
att(x)表示与叶子节点相关的属性;
index(x)表示节点x的子节点的索引.
CP-ABE各个算法分别为初始建立算法Setup,密钥生成算法KeyGen,加密算法Encrypt和解密算法Decrypt.
1.1 初始建立算法Setup(g,G0,α,β)→(PK,MK),其中α,β∈Zp是两个随机选择的指数.公钥PK由双线性群G0,生成元g,构造系数h=gβ和双线性配对e(g,g)α组成,即PK=(G0,g,h,e(g,g)α). 主密钥MK 由随机指数β和生成数据gα组成,即MK=(β,gα).
1.2 密钥生成算法为KeyGen(MK,S)→SK.该算法首先选择随机数r∈Zp,为每个属性j∈S选择随机数rj∈Zp后,计算Dy=gr·H(j)rj和Dj′ = grj .密钥SK由D=g(α+β)/β,∀j∈S:Dy=gr·H(j)rj和 Dj ′=grj组成,即SK = (D,Dy,Dj ′).
1.3 加密算法算法为Encrypt(PK,M,T)→CT.该算法首先为树T中的节点x选择一个多项式qx.对于每个节点x,设多项式qx的次数dx比节点的阈值kx少1,即dx=kx-1.从根节点R开始,选择随机数s∈Zp并设qR(0)=s.然后,随机选择多项式qR的其他点dR,将其定义完整.对于其他节点x,设qx(0)=qparent(x)(index(x))并随机选择其他点dx来完整定义qx.
密文CT通过给定树形访问结构T进行构建.令Y是树T中的叶子节点集合,对于每个叶子节点y∈Y,计算Cy=gqy(0)和Cy′=H(att(y))qy(0).密文由T,C′=Me(g,g)αs,C=hs,∀y∈Y:Cy=gqy(0)和Cy′=H(att(y))qy(0)组成,即CT=(T,C′,C,Cy,Cy′).
1.4 解密算法算法为Decrypt(CT,SK)→M.指定解密过程是一个递归算法,且定义递归算法DecryptNode(CT,SK,x),执行过程如下:
1)如果节点x是叶子节点,设i=att(x),若i∈S,则定义 DecryptNode(CT,SK,x)= =e(g,g)rqx(0), 否则定义DecryptNode(CT,SK,x)=⊥.
2)如果x是非叶子节点,调用DecryptNode(CT,SK,z)并存储输出为Fz.设Sx是任意kx大小的子节点z的集合,子节点z满足Fz≠⊥.如果没有这样的集合存在,函数返回⊥.否则,计算
其中i =index(z).
由递归算法DecryptNode,可以定义解密算法.算法从树T根节点R处简单调用函数DecryptNode开始,如果属性集合S满足访问树T,则设 A=DecryptNode(CT,SK,r)=e(g,g)rs, 由此,通过下列方法解密得到明文消息M :
C′/(e(C,D)/A)=C′/(e(hs,g(α+r)/β)/e(g,g)rs)=M.
2 云环境中CP-ABE 访问控制方案为设计一个基于CP-ABE算法的密文访问控制方案,能够灵活、高效、安全地进行访问控制,本方案支持数据认证(包括完整性认证和数据源认证),数据认证采用基于身份的签名技术,减少了PKI的公钥证书的验证过程,提高了效率.同时支持密文数据冗余检测,提高了存储空间利用率.
为了实现对文件数据的认证,包括完整性认证和数据源认证,需要用私钥对文件的摘要进行签名,这样既保证了数据的完整性又可以验证数据源,通过验证摘要值验证完整性,通过验证签名验证数据源的真伪.
为了实现密文数据冗余检测,这里采用收敛加密技术.收敛加密技术即数据加密的密钥为数据明文属性派生来的,相同明文经过加密后,生成的密文也相同.收敛加密的优势有两点:一是减少存储空间,因为密钥既可以解密,又可以验证数据完整性;二是提高存储空间利用率,可以检测加密冗余数据,因为相同明文加密的结果也相同,所以可以进行检测.这里用了一个数据自加密的方式,如图 1所示.自加密的思想主要参考收敛加密,文件块的摘要和偏移量连接作为密钥,对文件块本身进行加密.
因此本方案对称密钥加密采用收敛加密,用文件的Hash值加密文件,相同文件加密的结构相同,从而云端可以对密文冗余数据进行检测.
整个方案实现了在不完全可信环境(云服务提供商)下的文件安全共享系统.本方案有一个可信第三方和两个角色.密钥发布中心PKG作为可信第三方,负责整个系统的初始化,管理用户属性和系统全体属性,根据用户提供的属性集发放对应私钥.角色一是用户,包括了加密上传用户和解密下载用户.角色二是Hadoop云端数据中心,作为云存储服务器提供商,云端并不完全可信.
为了保障云存储中的数据安全,本方案对数据的访问控制权限进行设定,采用基于访问树设置访问控制结构.总体方案分为四个模块:系统初始化、私钥申请、文件上传及文件下载.系统总体架构如图 2所示.
为了便于描述实体间的交互过程,本方案将采用表 1的标识进行表述.
系统初始化主要包括三部分内容:PKG生成属性公钥PKA和属性主密钥MKA、身份公钥PKI和身份主密钥MKI;构建属性集合整体;PKG为每个用户产生属性证书.
1) 生成公共参数PKc={p,G0,GT,e,g,H},其中G0,GT为素数p阶的循环群,e为双线性映射e:G1×G1→GT,g为群G0的生成元,H为哈希函数H:{0,1}*→G0.然后随机选择三个伪随机数α,β,s∈Zp,获得属性公钥PKA=(PKc,e(g,g)α,gβ),属性私钥MKA=(β,gα),身份公钥PKI=(PKc,gs),身份私钥MKI=(s).
2) PKG负责为申请私钥的用户生成与其属性相关的私钥,因此PKG需要具备一个包含所有用户属性的全体属性集合.系统初始化时,PKG创建属性列表,向其添加不同的属性.
3) 在系统初始化阶段,PKG需要为每个用户生成一个属性证书,将其身份与具有的属性进行绑定,防止用户申请自己不具有的属性所对应的私钥,产生安全隐患.
2.2 私钥申请当数据使用者从云分享系统中下载完文件后,由于该文件是以密文形式存在的,为了得到最终的文件,需要向密钥发布中心申请其私钥.当密钥发布中心接收到用户的申请时,会生成对应的私钥,返回给用户.该过程包括两部分:属性私钥的申请及身份私钥的申请.
1) 属性私钥的申请.方案中的属性私钥申请/颁发是整个系统的关键部分,是DU与PKG交互.其中属性私钥分发过程有两方面的难点:一是PKG生成的属性私钥如何安全发送到申请者;二是用户如何向PKG证明其申请属性集合的合法性.对应问题一,方案采用DH密钥交换解决.对于问题二,方案中引入属性证书,属性证书包含用户属性集合,属性证书由PKG授权机构进行颁发,PKG验证通过才为相应的属性集合颁发属性私钥.具体交互过程如图 3所示.
具体流程如下:
① 用户将DH公钥PKDH-A发送给PKG,PKG用自己的DH私钥SKDH-B生成会话密钥key.
② PKG将DH公钥PKDH-B发送给用户,用户用自己的DH私钥SKDH-A生成会话密钥key.
③ 用户用会话密钥key加密属性证书certγ生成enccertγ,发送给PKG.
④ PKG用会话密钥key解密enccertγ,获取属性证书enccertγ.
⑤ PKG验证属性证书的有效性,如果有效继续,否则结束.
⑥ PKG提取属性证书中的属性集合S.
⑦ PKG用属性集合S和主密钥MKA生成属性私钥SKA.
⑧ PKG用会话密钥key加密SKA生成encSKA.
⑨ 用户用密钥key解密encSKA获属性私钥SKA.
2) 身份私钥的申请.身份私钥的申请过程同属性私钥的申请,身份的验证是通过用户持有的验证数据进行验证,例如用户身份标识为邮件,用户持有的验证数据即为邮件的口令,PKG将身份私钥发送到对应的邮箱中,只有有邮件口令的用户才可以获取身份私钥.
2.3 文件上传由数据拥有者执行文件上传.数据拥有者通过制定文件的访问控制规则,将文件用访问控制规则加密上传到云端,并对文件摘要进行签名,来验证文件的完整性和数据源真实性.
本方案采用128位ECB模式的AES算法加密欲上传文件.DO与HDPS的交互过程如图 4所示.
具体流程如下:
1) 发布者计算文件F摘要为h.
2) 发布者用私钥对摘要进行签名生成signh.
3) 发布者用h加密文件F生成encF.
4) 发布者制定访问控制规则filter,用filter加密文件摘要signh和文件的摘要值h生成加密头部enchead.
5) 将加密后的文件encF,封装的头部enchead,加密规则filter,用户身份id发送到云端.
2.4 文件下载由数据使用者执行.当文件的访问者属性私钥对应的属性集合满足文件的访问控制规则,文件访问者可以对文件进行解密,同时还可以进行文件完整性和数据源正确性的判断,防止文件篡改.
具体的系统用户与Hadoop云端服务器的交互过程如图 5所示.
具体流程如下:
1) 访问者向云端请求文件.
2) 云端将加密后的文件encF,封装的头部enchead,加密规则filter,用户身份id返回给访问者.
3) 如果访问者的属性私钥对应的属性集合不满足加密规则filter,结束,否则解密封装的头部enchead获取文件摘要signh和文件的摘要值h′.
4) 访问者用对称密钥h′解密加密文件encF获取文件F.
5) 计算文件F的摘要值h′,判断h′与解密获取的摘要值h是否相等,不相等表示完整性被破坏,结束,否则继续.
6) 验证摘要的签名是否有效,如果有效表示数据源真实,否则为伪造.
3 方案分析 3.1 数据访问控制机制数据的访问控制机制主要基于CP-ABE方案,在文献[4]中基于判定性BDHE假设对CP-ABE方案的安全性进行了证明,充分证明的CP-ABE方案在应对密文破解和共谋攻击上是非常有效的;CP-ABE方案中加密数据与访问控制规则绑定,解密秘钥与用户属性绑定,当用户属性满足访问控制规则的解密秘钥才可以进行解密,其中的访问控制规则支持属性的“与”、“或”、“门限”操作,满足多数访问控制规则的设定并且支持较好的细粒度.综上,本方案能够安全、灵活、细粒度地进行访问控制.
3.2 数据的认证性访问控制的数据支持认证,认证包括完整性认证和数据源认证.方案利用Hash对数据作摘要,数据发布者用私钥对摘要进行签名,从而保证云端数据的篡改和伪造都能被识别出来,保证数据的完整性和数据源的真实性.
3.3 数据存储空间利用率本方案利用收敛加密技术对数据进行加密后存储在云端,收敛加密技术使相同数据对应的密文也相同,云端即使接收到的是密文也能够识别出冗余数据,从而提高了数据存储空间的利用率.
整个方案在Hadoop集群一台Name节点(即Master),两台Node节点(即Slaves),Linux平台操作系统为Ubuntu,函数库OpenSSL,TinyXML,HDFS环境下,进行了仿真实验,将生成的私钥存放于合法用户的安全物理存储介质USB-KEY里,验证了整个方案的有效性.
4 结语本方案设计了密钥发布中心、用户和云服务器三方实体,并使其能够通过Socket正常通信.密钥发布中心负责为用户产生上传和下载文件所需的公私密钥,用户用从密钥发布中心申请的公私密钥向云服务器上传或下载文件.设计的访问控制方案能高效、灵活、细粒度地进行数据的访问控制,同时方案支持数据认证,包括完整性认证和数据源认证.方案结合收敛加密技术对文件进行加密,从而使云存储端支持密文冗余检查,增加了存储空间的利用率.方案不仅能够提供海量的存储空间和计算资源,使互联网服务更加便捷,还能够防止非法用户进入窃取机密数据,保证机密性,保障了云存储环境中数据的安全.
[1] | Cachin C, Keidar I, Shraer A.Trusting the cloud[J].ACM SIGACT News, 2009, 40(2):81-86.(1) |
[2] | Sahai A, Waters B.Fuzzy identity-based encryption[M].Heidelberg:Springer, 2005:457-473.(1) |
[3] | Goyal V, Pandey O, Sahai A, et al.Attribute-based encryption for fine-grained access control of encrypted data[C]// The 13th ACM Conference on Computer and Communications Security.New York:ACM, 2006:89-98.(1) |
[4] | Bethencourt J, Sahai A, Waters B.Ciphertext-policy attribute-based encryption[C]//IEEE Symposium on Security and Privacy.Piscataway:IEEE, 2007:321-334.(1) |
[5] | 王鹏翩, 冯登国, 张立武.一种支持完全细粒度属性撤销的CP-ABE方案[J].软件学报, 2012, 23(10):2805-2816.(1) |
[6] | Hohenberger S, Waters B.Attribute-based encryption with fast decryption[M].Berlin:Springer, 2013:162-179.(1) |
[7] | Douceur J R, Adya A, Bolosky W J, et al.Reclaiming space from duplicate files in a serverless distributed file system[C]// The 22nd International Conference on Distributed Computing Systems.Piscataway:IEEE, 2002:617-624.(1) |
[8] | Shamir A.How to share a secret[J].Communications of the ACM, 1979, 24(11):612-613.(1) |