欢迎关注公众号:区块链之美, 致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。
1. 代理重加秘的应用介绍
由于大部分的云服务供应商并不能完全值得信任,云服务供应商可能会在未经用户允许的情况下,擅自泄露用户的隐私数据或重要文件。
解决这个问题最直接的方法是数据加密,对于涉及用户隐私或含有敏感信息的数据文件,将数据加密后上传是一种普遍的保证数据机密性的方法 ,这样数据上传者只需保管好解密密钥即可。但是云计算服务中存在大量的需要共享数据的应用需求,对于这种简单的数据加密上传方式,由于加密文件只能被用户自行解密,这样的数据加密文件并不能通过云服务器来分享给他人,为此这便需要一种密码方案,使得能对存储在云服务器上的密文进行安全有效的转换。
显然,传统的加密或数字签名方案并不具有密文转换功能,而代理重加密 ( P r o x y R e − E n c r y p t i o n , P R E ) (Proxy Re-Encryption,PRE) (ProxyRe−Encryption,PRE)技术是一种可以对密文进行安全转换的加密方法,PRE 技术可以将用户 A 用自己公钥加密上传的密文转换成另一种形式的密文,使得用户 B 可以用自己私钥对转换后的密文进行解密,并且在整个转换过程中不会泄露任何对应的明文信息,因此 PRE 对于云计算是天然的应用,可以保证云端数据的安全访问与共享。
由于 PRE 能对密文进行安全转换这一特性,PRE 技术被深入地研究以及在云环境中充分发挥着其实用价值。目前 PRE 技术已广泛应用于云计算环境下的众多领域之中,如访问控制 、分布式文件系统 、加密邮件转发系统 、垃圾邮件过滤系统等 。
2. 业务需求分析
基于数据分享场景,用户B想获取用户A在云上的加密数据,A不能与B直接通信,只能通过中间商云平台;A不能将加密数据的秘钥发给云平台,由云平台再转发给B,这样云平台就知道A的保密数据;要求不能像CP-ABE那样,而是要求通过“请求+确认”方式获取A的数据,即B在每次想获取A的数据时,要想A申请,只有A同意了以后B才能获取并查看数据。
3. PRE概念
PRE 是一种对密文进行安全转换的加密技术,在 1998 1998 1998 年欧密会上,Blaze 等首次提出了代理重加密的概念 。在代理重加密中,基于授权人(delegator)公钥加密的密文可以被转换为另一种密文,且保持对应明文不变,被转换后的密文可以由被授权人(delegate)的私钥进行解密。该密文转换过程由一个半可信的代理者(proxy)执行,在执行该过程前,代理者需要持有一个由授权人到被授权人的转换密钥,该转换密钥一般由授权人事先生成并交给代理者。同时在密文转换的整个过程中,代理者无法获取关于该密文对应明文的任何信息。
4.传统公钥PRE算法流程
在介绍之前,先解释一个概念多跳性 ( M u l t i − h o p ) (Multi-hop) (Multi−hop):多跳性是指一个密文可以被不同的转换密钥连续进行多次转换,并且对应的明文保持不变。与其相对的是单跳性,即原始密文只能被转换一次。
一个传统 PKI 环境下的单向多跳代理重加密方案包含下列算法 [ 1 ] ^{[1]} [1]:
-
(1) 钥生成算法 K e y G e n ( p a r ) → ( p k ; s k ) KeyGen(par) \to (pk;sk) KeyGen(par)→(pk;sk):输入系统公开参数 par,该算法输出 ( p k , s k ) (pk,sk) (pk,sk)作为一个用户的公私钥对。
-
(2) 加密算法 E n c ( p a r , M , p k ) → C ( 0 ) Enc(par, M , pk ) \to C _{(0)} Enc(par,M,pk)→C(0) :输入系统公开参数 par,消息空间中的明文 M ,某一用户的公钥 pk ,该算法输出由公钥 pk 加密的密文 C ( 0 ) C_{ (0)} C(0) ,其中0 表示密文 C 未被重加密过, C ( 0 ) C_{ (0)} C