代理重加密
为什么需要代理重加密
在云计算中,由于大部分的云服务供应商并不能完全值得信任,他们可能会在未经用户许可的情况下,擅自泄露用户的隐私数据或重要文件,因此需要将自己的数据在本地利用自己的公钥加密以后上传到服务器。
但是,由于现在的云计算服务中存在大量的需要共享数据的应用需求,这种由自己加密且只能由自己解密的数据文件,不能通过云服务分享给他人,为此我们需要一种密码方案,使得能对云服务器上的密文进行安全有效的转换,使得被授权方可以通过某种解密手段来获得数据文件,而云服务器方不能获得数据文件。
传统的加密或者数字签方案并不具有密文转换的功能,而代理重加密PRE技术可以实现密文进行安全转换的加密
PRE 代理重加密
代理重加密从字面意思上可以看出,是由半可信的代理者代理用户对云端的数据进行重新加密,这样加密后的结果是,允许被授权方B可以通过自己的私钥对被重新加密后的数据进行解密,得到授权方A的明文数据,在这个过程中代理者得不到任何明文信息
所以,代理重加密就是委托半可信的代理者将自己通过公钥加密后的密文转化为可用另一方私钥解开的密文,从而实现数据共享
具体流程如下:
假设目前有一个半可信的代理者proxy,以及用户A和B,要实现A到B的数据共享
- A和B会先使用密钥生成算法,产生各自对应的密钥对<pkA, skA>, <pkB,skB>
- A使用自己的公钥pkA将数据进行加密,得到加密数据ciphertext,后上传到云端服务器
- 此时B申请看A上传到云端的数据,B就将自己的pkB发给A
- A根据pkB和自己的私钥skA,生成一个delkey,上传到云端服务器
- 云端服务器根据delkey,重新加密ciphertext,得到一个新的密文new_ciphertext,并将这个密文下放给B
- B利用自己的私钥skB对new_ciphertext进行解密即可,就能得到明文
PRE流程优化
由于非对称公私钥加密的效率低下,对于较大文件的数据共享是不合适,所以我们可以对PRE流程进行一些优化。
即可以使用对称加密来保护数据,而使用PRE来保护对称加密的密钥K。