卢宏才
(甘肃工业职业技术学院,甘肃 天水741025)
随着现代通信的快速发展,云计算技术(Cloud Computing)发展较为迅速,很多用户已经使用云计算,从概念上把云计算变成了实际的应用,得到了极大的推广。
云存储是在云计算技术上的分支领域,是一个让网络中的存储设备提供数据共享存储和协同工作,并且提供业务访问的系统。云存储在解决传统技术性能瓶颈问题的同时,又为用户节省了投资,降低了成本[1]。但是,云存储快速发展的同时,在实际应用中还存在很多安全问题[2],比如云存储环境下的数据共享安全等问题,阻碍了云服务的发展与推广[3-4]。
为解决云存储环境下的数据安全共享问题,很多学者提出了相应的密钥管理方案:一是以解决密钥托管问题多授权机构的层次型CP-ABE属性密钥管理方案[5],该方案将单个密钥管理中心的信任和工作量分散到多个密钥管理中心。但是,在多机构CP-ABE方案中,每个授权机构使用相同的主密钥为用户生成私钥。当联合足够多属性后,用户将能够重构主密钥,从而访问非授权数据。二是基于CP-ABE算法的相应的安全共享方案[6],以解决主密钥重构问题,当新増加授权机构时,需要重新进行初始化计算及系统公钥的生成,动态开销随用户数量呈线性増长。以上2种方案中均缺乏对用户的身份认证过程,无法抵抗来自非法用户的伪装攻击。有学者提出了一种云存储环境下的数据安全共享算法SAPDS[7],该算法结合属性加密和门限算法进行数据的机密性保护,在不依赖可信第三方的条件下完成了共享密钥的管理,但是其密钥分发的通信开销较大[6-7]。
针对云存储环境下的信任依赖问题,本文提出了无可信中心的属性密钥分发算法,并使用仿真软件对算法性能进行了仿真。
设G1和G2是p阶的循环群,p是素数。如果有映射e:G1×G1→G2有以下性质:
① 双线性(Bilinear):对任意a,b∈Z,任意的P,Q∈G1,e(aP,bQ)=e(P,Q)ab;
② 非退化性(Non-Degenerate):对于任意a,b∈G1,使e(a,b)≠1,其中1是G2的单位元;
③ 可计算性(Computable):对任意P,Q∈G1,都存在有效算法来计算e(P,Q)。
属性组:P={P1,P2,...,Pn}为系统中的属性集合,则每个用户的属性集合A是P的一个非空子集。
访问结构:访问结构T是{P1,P2,...,Pn}全集的一个非空子集。T是属性判断条件,在T中的称为授权集,不在T中的称为非授权集。
访问树:访问树用来描述访问结构,属性由叶子节点来表示,每一个内部节点都表示一个关系函数。关系函数是子节点和逻辑运算符组成的门限。子节点从1~n编码并且非叶子节点的门限值kx小于子节点的总数nx,即0 CP-ABE算法具体描述如下[8-9]: ① 系统初始化。生成主密钥MK,生成系统公开参数PK。 ②CT=Encrypt(PK,M,T)。该算法使用PK,访问T,对明文M加密,最后生成密文CT。 ③SK=KeyGen(MK,A)。该算法使用主密钥MK和用户属性集合A,生成私钥SK。 ④M=Decrypt(CT,SK)。该算法使用生成的私钥SK,解密密文CT,得到明文M。 首先有云存储服务商(CSC)和用户之间通过密钥属性分发算法属性分发和完成认证[10-11],属性公钥的生成在密钥产生过程中生成,属性私钥参数由密钥授权中心(KAC)根据属性生成[12]。 用户得到属性密钥生成算法计算的属性密钥。属性密钥分发模型如图1所示。 图1 属性密钥分发模型 属性分发算法由4个子算法构成:初始化算法、用户属性切分算法、属性还原算法和用户属性验证算法。初始化算法主要功能是由云存储服务商(CSC)为注册用户分发一对公私密钥对{PK,SK},同时生成用户的共同属性[13];然后使用秘密共享算法将共同属性分发成若干个属性块S,并生成属性块的验证参数v;将生成的属性块、验证参数分别用公钥加密后在公共信道上分发,共同属性由用户的属性块和其他交互属性块来还原。 1.4.1 初始化算法 在初始化算法中,相同属性的用户{U1,U2,...,Un}由CSC为其发一对公私密钥{PKi,SKi},并创建一个二进制属性代码att给分发属性。 1.4.2 用户属性切分算法 给具有相同属性的用户分发att,CSC把att分成多个属性块s1,s2,...,sn。然后将si使用用户Ui的公钥加密后发给Ui。 ① 定义参数a0,a0=att。生成与a0相同长度的参数a1,a2,...,an和一个n-1维的多项式F(x),F(x)=a0+a1x+a2x2+...+an-1xn-1。 ② 计算属性块s1,s2,...,sn:s1=F(1),s2=F(2),...sn=F(n)。 ③ 计算验证函数V和验证参数v:V=s1×s2×...×sn,v=Vmoda0。 ④ 加密属性块si:Cipher(si)=ENC(si,PKi,RSA)。 ⑤ 发送加密后的属性块Cipher(si)、验证函数V和验证参数v给相应的用户Ui。 1.4.3 属性还原算法 用户Ui接收到加密属性块Cipher(si)后,使用私钥SKi通过解密而获取自己的属性si。用户Ui把自己收到的属性si使用公钥PK(i+1)MODn加密后发给U(i+1)MODn。经过n-1次操作后,用户拥有n个属性块,用拉格朗日插值还原属性。 ① 用户先获取Cipher(si),v,V,使用私钥SKi和公式Cipher(si)=DEC(si,SKi,RSA)=si解密得到属性si。 ② 使用公钥PK(i+1)MODn和公式Cipher(si)=ENC(si,PKi,RSA)加密属性块si,将加密后数据发给用户U(i+1)MODn。 ③ 用户U(i+1)MODn获取Ui发送来的si,使用私钥SK(i+1)MODn解密属性si。让j+1满足j≤n,重复执行步骤②和步骤③。 1.4.4 用户属性验证算法 用户使用公式Vmodatti=vi来计算自己的验证参数副本vi。如果vi=v,则属性正确,否则属性分发过程失败。通过该算法,相同属性的合法注册用户能分发到正确的属性,从而完成了身份认证,对非法用户的伪装攻击起到了防御作用。 属性密钥生成算法由2个子算法构成:初始化算法和属性参数生成算法。KGC生成公开属性密钥,CSC为合法用户分发属性集合和属性标识,用户向KAC发出属性密钥申请。KAC接收到属性和标识后,计算生成参数后,分发给请求用户。 1.5.1 初始化算法 算法中由KGC产生公共参数。首先随机产生p阶,元为g的双线性群G和双线性映射e:G×G→G1,随后随机选择哈希函数H和β∈Zp,生成公钥为PK=(G,g,gβ),保存主密钥MK=β。用户接收到CSC为它分发的属性Si和标识i。 1.5.2 属性参数生成算法 用户KAC发送属性密钥生成请求,通过KAC完成得到对应属性的参数,具体过程如下: 用户联合接收到的来自各个属性中的属性参数计算得到自己的属性私钥,具体步骤如下: ② 同理可计算用户的分属性密钥,用户得到属性私钥。 属性分发算法中使用了RSA加密属性块,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究的最广泛的公钥算法,从提出到现今的30多年里,经历了各种攻击的考验,逐渐为人们接受,截止2017年被普遍认为是最优秀的公钥方案之一。根据对RSA分析,非授权用户无法获取用户属性,该算法保护了用户属性在分发过程中的机密性[14-15]。 假设一个恶意用户P准备对属性分发算法发动攻击。P伪装成合法用户向Pi发送篡改后的Cipheri-1(si)。经过算法计算以后,用户Pi通过计算得到不正确的用户属性atti。那么Pi通过验证算法验证时发现attimodV≠v,Pi告知属性分发过程失败。所以该算法可以有效保护合法用户属性在分发过程中的完整性。 CSC在属性密钥分发中仅对用户属性分发,不参与属性密钥的生成具体过程,无法获取到用户属性密钥,从而降低了CSC泄露用户信息的风险。 通过以上分析无可信中心的属性密钥分发算法大大降低了属性密钥分发对KAC的信任依赖问题,且有效地保护了密钥分发过程安全性。 为模拟无可信中心的属性密钥分发算法,由一台计算机模拟服务器模拟多个密钥授权中心,完成属性参数的生成与分发。另一台计算机模拟共享用户,接受多线程发送的属性参数,计算得到最终的属性密钥。实验通过对密钥授权中心、用户属性数量调整,来完成不同参变量条件下属性密钥生成时间测试。 实验分别从属性生成和属性分发2个阶段对所提算法使用的时间与SAPDS算法进行了统计分析。属性生成时间主要受属性生成数量和密钥长度的影响。在属性长度为64 bit情况下用户属性生成时间与用户数量间的变化关系如图2所示,在属性长度为128 bit情况下用户属性生成时间与用户数量间的变化关系如图3所示。从图2和图3可以看出,属性生成时间受用户数量影响较大,而属性长度对其影响稍弱。SAPDS算法大致需要15 s的时间完成1 400个用户的属性生成,而属性分发算法仅需要145 ms,大约节省了98%的生成时间。 图2 属性长度为64 bit时用户属性生成时间与用户数量间的变化关系 图3 属性长度为128 bit时用户属性生成时间与用户数量间的变化关系 图4对比了2个算法的属性分发时间,属性分发主要包括属性块的加密和属性的还原2个过程。在实验中,假设为用户分发的公有密钥长度为128 bit。如图4所示,属性分发算法的时间消耗要高于SAPDS。这是因为在公有信道中进行属性分发,需要对分发的属性进行解密操作,因此属性分发算法相对于SAPDS花费更多的时间。 图4 用户属性分发时间与用户数量间的变化关系 用户属性分发算法与SAPDS算法的总耗时如图5所示。由于用户属性分发算法中需要完成属性块的加密操作,故多消耗了43%的属性分发时间,但是仍比SAPDS算法节省了95%的总耗时。 图5 用户属性密钥分发总时间与用户数量间的变化关系 用户属性分发算法在公有信道中进行属性的分发,并且由云存储服务商完成了用户的身份认证操作。仿真实验结果数据表明属性分发算法在保护属性分发安全性的同时提高了属性分发效率。 针对云存储环境下的第三方信任依赖问题,在CP-ABE算法基础上提出了无可信中心的属性密钥分发算法。首先由云存储服务商CSC在公共信道完成身份认证和用户属性分发,保证了用户属性在分发过程中的保密性。该算法也解决了第三方信任依赖在密钥管理中存在的问题。安全性分析表明,该算法保护了密钥在分发过程中的安全性,解决了第三方信任依赖在密钥管理中存在的问题,提升了云存储环境的安全[16]。 [1] CACHIN C,KEIDAR I,SHRAER A.Trusting the Cloud[J].ACM SIGACT News,2009,40(2):81-86. [2] 刘玮,王丽宏.云计算应用及其安全问题研究[J].计算机研究与发展,2012,49(Suppl.):186-191. [3] 卢宏才,张军平.云计算环境下任务行为访问控制模型研究[J].无线电工程,2016,46(11):17-21. [4] 王小明,付红,张立臣.基于属性的访问控制研究的进展[J].电子学报,2010,38(7):1660-1667. [5] DONG X,YU J,LUO Y,et al.Achieving an Effective,Scalable and Privacy-preserving Data Sharing Service in Cloud Computing[J].Computer & Security,2014(42):151-164. [6] YANG K,JIA X H,REN K.DAC-MACS:Effective Data Access Control or Mutil-Authority Cloud Storage Systems[C]∥Security for Cloud Storage Systems,Springer New York,2014:59-83. [7] PERVEZ Z,KHATTAK A M,LEE S.SAPDS:Self-healing Attribute-based Privacy Aware Data Sharing in Cloud[J].The Journal of Supercomuting,2012,62(1):431-460. [8] 熊安萍,许春香,冯浩.云存储环境下支持策略变更的CP-ABE方案[J].计算机科学,2016,43(1):191-194. [9] 王鹏翩,冯登国,张立武.一种支持完全细粒度属性撤销的CP-ABE方案[J].软件学报,2012,23(10):2805-2816. [10] 赵明斌,姚志强.基于RBAC的云计算访问控制模型[J].计算机应用,2012,32(S2):267-270. [11] 霍成义.面向数据提供者的隐私保护访问控制模型[J].无线电工程,2014,44(2):5-8. [12] GOYAL V,PANDEY O,SAHAI A,et al.Attribute-based Encryption for Fine-grained Access Control of Encrypted Data[C]∥Proceedings of the 13th ACM Conference on Computer and Communications Security,ACM:89-98. [13] 苏金树,曹丹,王小峰,等.属性基加密机制[J].软件学报,2011,22(6):1299-1315. [14] 王建功,陈家松,王可人,等.基于云模型与模糊综合评判的系统效能评估研究[J].无线电工程,2015,45(12):77-80. [15] SHAMIR A.How to Share a Secret[J].Communications of the ACM,1979,24(11):612-613. [16] HOHENBERGER S,WATERS B.Attribute-based Encryption with Fast Decryption[M].Berlin:Springer,2013:162-179.1.3 属性密钥分发模型
1.4 属性分发算法
1.5 属性参数分发算法
1.6 属性密钥生成算法
2 安全性分析
3 仿真实验及性能分析
4 结束语