云计算中的数据机密性风险极大地阻碍了云计算的应用,而在用户端加密的模式对于数据共享来说非常不便,用户频繁的获取和释放授权将使得用户增效据加解密工作繁重。因此代理重加密技术在云端进行数据的密文转换,减轻了用户端的负担,同时加强了云端数据的保密性。
一、代理重加密
代理重加密是密文间的一种密钥转换机制,是由Blaze等人在1998年的欧洲密码学年会上提出的,并由Ateniese等人在2005年的网络和分布式系统安全研讨会议和2007年的美国计算机学会计算机与通信安全会议上给出了规范的形式化定义。
在代理重加密中,一个半可信代理人通过代理授权人产生的转换密钥Rk把用授权人Alice的公钥Pa加密的密文转化为用被授权人(Delegatee)Bob的公钥Pb加密的密文,在这个过程中,代理人得不到数据的明文信息,从而降低了数据泄露风险。而这两个密文所对应的明文是一样的,使Alice和Bob之间实现了数据共享。所谓的半可信,指的是只需相信这个代理者Proxy -定会按方案来进行密文的转换。根据密文转换次数,代理重加密可以分为单跳代理重加密和多跳代理重加密,单跳代理重加密只允许密文被转换一次,多跳代理重加密则允许密文被转换多次。根据密文转换方向,代理重加密也可以分为双向代理重加密和单向代理重加密。双向代理重加密是指代理者既可以将Alice的密文转换成Bob的密文,也可以将Bob的密文转换成Alice的密文。单向代理重加密指代理者只能将Alice的密文转换成Bob的密文。当然,任何单向代理重加密方案都可以很容易地变成双向代理重加密方案。
而双向代理重加密,和个单向代理重加密方案只能满足选择明文攻击安全,而实际应用通常要求密码组件能够抵抗选择密文攻击安全。为此,Calletti等人在2007年的ACM CCS会议上提出了首个能在标准模型下证明的CCA安全双向代理重加密方案。在2008年的公钥密码学会议上,Libert等人提出了一个无需借助随机预言机的单向代理重加密方案,该方案可以在非自适应攻陷模型下达到选择密文安全。
二、云计算中代理重加密的应用
1、云计算中代理重加密的应用模式
在云计算中,云计算服务提供商作为代理人,用户A不能完全相信云计算服务提供商,因此将自己需要存储的数据在本地用自己的公钥Pa加密后再传送至云中存储,这样,云计算服务商就无法得到其数据的明文信息,而该数据只有用户A使用自己的私钥Sa才能解密口当用户A需要把该数据与用户B共享时,他可以根据自己的一些信息(如私钥)及用户B的公钥Pb计算一个转换密钥Rk,由云计算服务商使用转换密钥Rk,将针对用户A的密文重加密得到针对用户B的密文,这样,用户B可以容易地从云中下载该密文数据,使用自己的私钥Sb即可解密,过程如图1所示。
这样,数据在云中的整个生命周期完全以密文形式存储,而云计算服务商也无法得知用户A和用户B的私钥,因此,云计算服务商无法获得数据明文。用户A无需对云计算服务商有很大程度的信任,就可以放心地将自己的数据存储在云中。
这样一个代理重加密方案一般包含以下几个部分:
1) PRE.Setup。初始设定函数,根据安全参数设置工作环境。
2)PRE.KeyGen。密钥生成函数,为授权人和被授权人分别产生自己的公私钥对。
3)PRE.ReKeyGeno转换密钥生成函数,授权人利用自己的用户信息及被授权人的公钥产生一个代理重加密的转换密钥Rk,并将这个转换密钥通过安全的信道传递给云计算服务提供商。
4)PRE.Enco加密函数,授权人使用自己的公钥对数据进行加密,所得到的密文称为原始密文。
5)PRE.ReEnco重加密函数,云计算服务商利用转换密钥对原始密文进行再次加密,所得到的密文称为重加密密文。该密文实际上等同于用被授权人的公钥加密的明文。
6) PRE.Deco解密函数,被授权人使用自己的私钥对重加密密文进行解密,得到相应的明文;或授权人使用自己的私钥对原始密文进行解密,得到相应的明文。
这样的代理重加密算法应该具有以下几个特征:
1)透明性,代理人(云计算服务商)对于授权人A或被授权人B来说都是透明的。
2)单向性,一个从用户A到用户B的授权,不能用于构造一个从用户B到用户A的授权。
3)非交互性,授权人A生成从A到B的转换函数RkA_B.不需要被授权人B的参与。
4)安全性,该代理方案应该是CCA安全的,并能够抵抗合谋攻击,即用户A与代理人的合谋不能得到用户B的私钥,用户B与代理人合谋也不能得到A的私钥。
5)非传递性,通过用户A对B的授权和B对C的授权,代理人不能产生A对C的授权。
2、云计算中使用代理重加密实现数据共事
由于非对称加密算法的效率限制,不适合用来给大型的数据文件加密,因此在云计算中暂不考虑将代理重加密直接用于加密数据文件。可以先使用对称加密算法加密数据文件得到数据密文,然后使用代理重加密算法加密该对称密钥得到密钥密文,用户欲访问数据文件时,可以先解密该密钥密文得到对称密钥,然后再用该对称密钥解密数据密文,得到数据文件的明文。
3、云计算中使用代理重加密实现授权管理
当云计算的用户需要为其他用户授权时,需要取得对方的公钥,针对每个用户生成对应的转换密钥,并通过安全的信道传递给云端。这样,云端对于每一个被授权的用户都生成一份重加密密文,对于未被授权用户没有对应的重加密密文。即使未被授权用户得到针对其他用户的重加密密文,也无法解密出明文。也可以将基于属性的加密(ABE,Attribute-based Encryption)理念应用于代理重加密,使用这样的代理重加密算法,可以一次为多个具有同样一组属性的用户授权。
4、云计算中使用代理重加密实现访问控制
用户请求访问数据文件时,云端通过对该用户的身份认证及权限认证,判断用户是否可以读取该数据文件,如果用户拥有这一权限,云端将根据用户公钥向其返回数据密文和对应的密钥密文,用户可以通过依次解密这两个密文文件得到数据的明文。如果云端没有对应于用户公钥的密钥密文,则用户没有被文件所有者授予访问这一数据文件的权限。
中国对于信息安全的要求正在逐渐增长,而云计算已经对数据加密提出了更高的要求,可以说云计算安全技术的提高已经制约了云计算的发展。因此,越来越多的研究者从事这方面的研究,在代理重加密方面的研究也已经趋于成熟,很多研究者都已经设计了具有CCA安全的双向或单向代理重加密方案。但目前,代理重加密在云计算方面的应用还未得到很好的尝试和开展,在以后的工作中会迸一步地研究和深入。
小知识之云计算
云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。它意味着计算能力也可作为一种商品通过互联网进行流通。