云存储中的代理重加密技术研究
2019-06-16杨珂
杨 珂
(西南民族大学计算机科学与技术学院,四川 成都 610041)
云存储是在云计算概念发展的基础上衍生出来的一种在线存储服务. 云存储因其弹性容量、按需付费、易于使用和管理等特点得到了广泛的支持与应用,另一方面,云存储在数据安全性方面还存在很多问题有待解决[1-2].2010 年中国云计算调查报告显示,数据安全性与隐私仍然是广受各类企业和用户关注的问题,有6 成受访者表示“十分担心”数据安全与隐私[3].在云存储的服务模式中,用户的敏感数据存储在不可信的第三方存储环境中,在允许已授权用户对云端数据的共享访问的同时如何使云端数据的机密性受到有效保障是云存储中安全问题的重要研究焦点.
一方面,云环境中的用户不能完全信任云存储服务提供商(Cloud Storage Provider,CSP),不愿对包括CSP 在内的任意未授权用户暴露自己的私密数据.通常的做法是,用户首先采用某种加密算法对自己的私密数据进行加密,然后再将加密后的密文上传至云端存储.这样,CSP 或其他未授权用户即使得到了加密数据也无法对密文解密以获取明文数据,从而有效保证了用户隐私数据的机密性.
另一方面,云存储中也普遍涉及到多个用户间需要共享特定数据的场景.由于在云端存储的是数据密文,因此数据在多用户间的共享必然涉及到数据解密的操作.由于CSP 处于半可信(Semi -Trust)状态,因此不可能将解密操作交给云服务器完成.为保证数据的机密性,可行的方案是由数据拥有者(Data Owner,DO)用事先与对方协商好的密钥(对称加密)或对方的公钥(非对称加密)对共享数据重新加密后再重新上传至云端,并由共享用户下载后解密. 但这样的方案加重了数据拥有者的计算负担和带宽压力,同时在数据大量共享的时候,也加大了数据拥有者的密钥管理难度.
针对分布式数据存储的代理重加密(Proxy Re -Encryption,PRE)技术能够在保证数据机密性的同时,使云端数据能够在多个合法用户之间提供安全共享.
1 代理重加密
代理重加密是1998 年由Blaze 等[4]在欧洲密码学年会上提出的密文间的一种密文转换机制,它允许一个半可信的第三方(Proxy)把使用用户A 的公钥加密得到的密文转换得到使用用户B 的公钥加密的密文.为了实现密文的转换,用户A 只需要用自己的私钥(例如使用自己的个人信息)结合用户B 的公钥采用一定的算法计算一个重加密秘钥并提供给Proxy,Proxy 就可以完成相当于解密用户A 的密文并用用户B 的公钥加密的操作,并且在整个过程中,Proxy 不能获取和推导出有关用户数据或私钥的任何信息.
因为能够把密文转换的复杂计算任务转移给半可信的代理执行,在保证私密数据机密性的前提下有效缓解客户端的性能瓶颈,代理重加密机制已经广泛应用在加密电子邮件转发、分布式文件系统等安全管理领域中,最近由于云存储的安全问题更是引起了业内的广泛关注.
2 云存储中的代理重加密应用
云存储因其自身的架构特点,安全已是核心问题,因此各种加密算法和框架成为了云存储研究中的热点.近年来,由于能够在保障数据安全的前提下有效降低数据拥有者的计算强度和密钥管理难度,代理重加密框架在云存储中得到了越来越广泛的应用.
2.1 安全假定
在云存储环境中,对云服务器有不同的考虑. 对于云服务器,用户不能给予完全的信任,一般说来,普遍假定云服务器是一个半信任模型(Honest but Curi-ous),即云服务器会忠实地执行协议的过程,同时,云服务器又会根据存储的加密数据以及用户的请求尽力获取文件数据和请求间的关联关系.这也是研究云存储模型的基本安全环境假设.因此,一方面,应该充分利用云服务器的Honest 特性为云用户客户端有效缓解压力,另一方面,出于对云服务器Curious 特性的考虑,必须保证云服务器不能获取任何数据内容.
2.2 基本应用模型
由于云服务器所具有的半可信特点,用户不能直接将数据明文上传至云服务器存储,必须首先在本地经过加密后,再把数据密文上传至云服务器. 在需要授权其他用户访问权限时,必须通过其它安全信道传输密钥,以使得被授权用户可以访问数据. 一个典型的密文访问控制系统如图1 所示.
但在这样的典型模型中,对授权用户的安全数据共享仅仅是通过数据拥有者(Data Owner,DO)对密钥的分发控制来实现的.当共享数据和共享用户不断增多时,数据拥有者生成、管理和维护秘钥的工作量不断增大,最终成为整个系统的瓶颈.
引入代理重加密技术后,密钥重新生成的一部分工作可以转移到云服务器执行,进而有效地缓解了数据拥有者客户端的性能压力.用户A 首先用自己的公钥Papub把要上传的文件F 加密得到数据密文Ca,然后上传至云服务器存储,这样,密文C 只能用Papriv才能解密,因此云存储服务提供商不能得到明文数据.当用户A 需要向用户B 共享数据时,他可以使用自己的私钥Papriv并结合用户B 的公钥Pbpub计算得到重加密密钥Rk,并将重加密密钥Rk上传至云端.云服务器在得到重加密密钥Rk后,利用Rk对原来的数据密文Ca进行代理重加密得到数据密文Cb. 用户B 从云端下载数据密文Cb,用自己的私钥Kbpriv即可解密恢复为共享文件F,进而实现了云存储中多用户间的数据共享.
图1 云存储的密文访问控制模型Fig.1 Cryptograpic access control model in cloud storage
在上述过程中,用户数据以加密后的密文的形式上传到云端存储,有效保证了云端数据的机密性. 同时,借助于代理重加密技术,又把对数据的重加密工作部分地转移到了云服务器,进而大大降低了数据拥有者的数据加密工作量.
由于非对称加密算法的效率较低,因此在云存储环境中一般才用对称加密算法加密数据文件,用非对称加密算法加密对称密钥,最后再把数据密文和密钥密文一起上传至云端存储.数据拥有者只对合法授权用户提供密钥密文的解密能力,进而在实现数据共享的同时保证了用户数据的私密性.
2.3 应用模型扩展
PRE 代理重加密技术可以直接运用在云存储环境中,用以调整现有加密框架的资源调配并适应更合理的用户信任模型;而且,它还可以与其他技术进一步组合或扩展,以产生更有靶向的精确安全控制. CP-ABE 和CL-PKC 正是组合扩展方面的两个典型应用.
2.3.1 基于CP-ABE 的扩展
由于云服务器是一个半可信模型,用户必须首先对自己的数据进行加密,之后上传至云端,然后再通过对密钥的分发管理控制其他用户对数据的访问权限.引入代理重加密后,数据拥有者可以针对特定用户对密钥密文生成重加密密钥并交由云服务器进行代理重加密以达到数据安全共享的目的. 然而,在一个实际的共享云存储系统中,大量用户的相关信息需要相互共享.如果让每一个数据拥有者针对共享文件的每一个共享用户都单独生成一个重加密密钥,这样的计算代价显然是难以承受的.为了有效降低密钥生成、管理和维护的难度,必须引入更加灵活的加密方案,以便为数据的隐私保护提供更为有效的细粒度访问控制.
基于属性的密码体制对传统的基于身份密码体制中关于身份的概念进行了扩展,将身份标志为若干属性的集合.Sahai 与Waters 首次提出基于模糊身份加密,将生物学特性应用于基于身份的加密方案中.2006 年,Goyal 等人在基于模糊身份加密方案的基础上提出了基于属性的加密方案(Attribute -Based En-cryption,ABE).2007 年,Bethencourt 等人[8]提出了密文策略的基于属性的加密方案(Ciphertext - policy ABE,CP-ABE).CP -ABE 提供了一种很好的描述密文和授权用户之间对应关系的模型,在引入CP -ABE 的系统中,每个用户都与一组特定的属性集合关联,数据拥有者可以为密文指定基于属性的访问控制结构,使得只有具有特定属性集合的用户才能访问对应的数据.
2009 年,Liang 等人把基于属性的加密方案与代理重加密技术相结合,提出了基于属性的代理重加密方案(Attribute - Based Proxy Re - Encryption,AB-PRE)[9].该方案使用属性来控制用户对数据的访问权限,如果用户的属性没有出现在访问结构中而是出现在系统属性集中,密文数据就可以通过代理重加密算法予以重新加密,进而使得对应用户可以解密以获取明文.Luo 等人[10]在2010 年提出了密文策略的基于属性的代理重加密,对AB -PRE 进行了进一步的扩展和丰富,允许属性可以有多个赞成值.同时,该方案中引入了重加密控制的概念,使得数据拥有者可以决定密文数据是否允许被重加密. 此外,该方案中的访问策略蕴含于密文数据中,并且支持AND 门限、多值属性、否定属性和通配符.考虑到CP-ABE 应用于实际环境中存在的一些问题,Yu 等人[11]把CP-ABE和PRE 结合在一起,减小了因权限撤销引起用户属性修改的性能负担,因此能够随时方便地根据权限的变化对用户属性进行调整.
为了实现更加灵活的访问控制,Wang 等人把基于层次身份加密(Hierarchical Identity-Based Encryp-tion,HIBE)和基于属性加密(CP -ABE)相结合,提出了基于层次属性的加密(Hierarchical Attribute -Based Encryption,HABE)模型[12].HABE 模型融合了HIBE 中基于层次结构的密钥生成方式的优点和CP-ABE 中灵活的访问控制的特点,同时支持基于属性和基于身份的加密,从而有效降低了加密/解密开销.并且通过结合代理重加密技术和懒惰重加密技术,不但有效降低了用户端的计算压力,而且缓解了云服务器的重加密开销,提供了一种适用于云计算环境的更加细粒度的数据安全访问控制方案.
文献设计了CP-ABE 的变种算法HCCP-ABE,结合密钥分割技术和代理重加密技术,在保证用户数据安全的前提下,将对称密钥的重加密以及新私钥组件的生成与分发任务移到云端执行,降低了数据拥有者的计算代价[13].
2.3.2 基于CL-PKC 的扩展
对于很多基于公有云的大型网络应用服务,例如社会性网络服务(Social Network Service,SNS),由于涉及到的用户数量众多,用户间关系复杂,还有海量涉及到个人隐私的数据需要根据用户的实际需求实现共享,传统的公钥基础设施管理机制因为缺乏灵活性和扩展性而难以胜任. Xu 等人把基于无证书公钥密码体制(Certificateless Public Key Cryptography,CL-PKC)的认证引入到代理重加密技术中,提出了针对公有云环境中实现数据安全共享的有效解决方案CL-PRE(Certificateless Proxy Re-Encryption)[14].
在CL-PRE 中,云不仅用来存储数据,也为在多个用户间共享数据行使安全分发密钥的职责. CL -PRE 使用数据用户的身份信息作为用户公钥的构成要素,消除了传统PKI 繁杂的证书管理和ID - PKC密钥托管的问题.用户只需要在生成自己的私钥时访问PKG 一次,生成公钥时已无需再与PKG 进行交互,即使用户今后需要更新自己的公私钥对,也不必再与PKG 进行通信,从而大大降低了PKG 的负担,提高了运行效率.用户可以自行管理自己的公钥,例如SNS用户可以把公钥发布在自己的主页上以方便其他用户获取;其他用户得到了该用户的公钥后就可以产生重加密密钥并发布到云端由云服务器进行代理重加密,这样就方便而安全地实现了用户间的数据共享.
考虑到CL -PRE 可能应用于公有云环境,为了增强云存储服务的安全性、健壮性并获得更好的性能,文献[7]中还提出了多重代理(Multi-Proxy)和随机会话重加密密钥(Randomized CL-PRE)的两套CL-PRE 扩展方案. 在Multi -Proxy CL -PRE 中,假定系统中共有n 个代理,数据拥有者可以指定整数k(1< k < n),只有当k 个以上的代理都能够正确重加密的时候,对应的数据用户才能得到有效数据. 在Randomized CL-PRE 中,数据拥有者A 自己保存针对其他共享用户例如用户B 的重加密密钥,当每次希望和用户B 共享新的数据时,用户A 都会根据到用户B 的重加密密钥计算产生一个跟此次会话相关的一次性随机重加密密钥.因为这个一次性重加密密钥是会话相关的,因此代理服务器得到这个密钥不会给数据带来任何威胁.
3 结论
云计算因其众多的优越性而飞速发展,已经在社会上引起了日益广泛的关注;与此同时,它的安全性问题也逐渐成为制约其健康发展的关键因素.与传统的本地存储相比,云存储环境有其自身的特殊性,例如其分布式特点及半可信模型,决定了很多目前已较为成熟的技术,包括代理重加密在内,并不能只是简单地移植到云存储环境中,还需要有针对性地做出调整和改进,才能更好地推动云计算的发展与进步. 因此,在云存储的数据共享领域中,代理重加密技术还有更多的发展空间,需要展开更进一步的深入研究.