代理重加密(英语:Proxy re-encryption)是由等人提出的一种密码体制。其目标是安全地将密文从一个密钥重新加密到另一个密钥,而无需依赖可信任的第三方。
具体来说,其允许半可信第三方(代理服务器),将委托者公钥加密的密文转换为受委托者公钥加密的另一密文,使其可以被受委托者解密。同时不会向代理服务器泄露加密消息或委托者/受委托者的私钥。
历史
1998年:等人提出了首个双向、多跳代理重加密方案。然而,该方案只能实现CPA安全,无法满足实际应用需求。
2008年:提出了首个在标准模型下证明RCCA安全的一向代理重加密方案。同年,一个独立于双线性对且CCA安全的双向代理重加密方案被提出,解决了提出的公开问题 。
2010年:提出了无证书环境下的代理重加密概念,并构造了相应方案。
2013年:首次在标准模型下基于(LWE)构造了K-PRE方案,能够应对量子计算威胁。
2018年:首次提出了PRE+概念,并构造了具体方案。该方案通过主体生成重加密密钥的操作,实现了基于消息级别的细粒度委托和不可转移属性。
组成
代理重加密方案一般划分为五个算法部分,分别为密钥生成算法、重加密密钥生成算法、重加密算法、加密算法、解密算法。在双向代理重加密中,代理服务器利用重加密代理钥可以将委托者的密文转换成针对受委托者的密文,也可以将受委托者的密文转换成针对委托者的密文, 但这需要委托者和受委托者的私钥;在单向代理重加密中,代理服务器利用重加密密钥只能将委托者的密文转换成针对受委托者的密文,只需委托者的私钥,但无法进行反向转换。多跳代理重加密允许密文被多次转换,而单跳代理重加密只允许密文被转换一次。
使用场景
代理重加密可以用于多种场景,如数据内容共享、加密电子邮件转发、分布式文件系统、云计算等。
云端数据内容共享
假设数据所有者(如爱丽丝)打算将存储在云中的敏感数据共享给另一个授权用户(如鲍勃)。理想情况下,除了鲍勃之外,任何人都无法访问请求的数据。
爱丽丝可以在上传共享数据到半信任的云服务器之前,用她自己的公钥加密敏感数据。在收到鲍勃的数据共享请求后,爱丽丝使用自己的私钥和鲍勃的公钥生成一个代理重加密密钥,并将该密钥发送给半信任的云服务器。有了这个代理重加密密钥,云服务器可以将用爱丽丝公钥加密的密文转换成用鲍勃公钥加密的密文。转换后的密文只能由鲍勃解密,而云服务器无法得知明文或爱丽丝和鲍勃的私钥。最终,鲍勃可以使用自己的私钥下载并解密请求的数据。
加密电子邮件系统
在一般的邮件加密中,发送给用户的电子邮件都会用用户的公钥加密,要阅读邮件必须先用用户的私钥解密。假设用户爱丽丝要出差一段时间,她希望秘书鲍勃在此期间帮助处理解密邮件。直接将爱丽丝的私钥交给鲍勃显然不是一个好的办法。
通过使用代理重加密技术,爱丽丝可以将代理重加密密钥交给邮件服务器。这样,邮件服务器在无法获知爱丽丝邮件内容的情况下,可以将这些邮件转换为针对鲍勃加密的邮件。鲍勃收到这些邮件后,只需使用他自己的私钥即可解密,从而帮助爱丽丝处理邮件。
运算实例
爱丽丝想将消息M通过代理重加密方式传递给鲍勃,如下是一个基于ElGamal加密算法的代理重加密方案:
初始设置
根据公钥(pk)和私钥(sk)生成规则:
sk \leftarrow \mathbb{Z}_p, \quad pk = g^{sk}。
假设爱丽丝和鲍勃已经生成了他们自己的密钥对,g 是该椭圆曲线G的生成元;p 是一个大质数,同时也是 G 的阶。
- 爱丽丝创建其私钥与公钥:sk_A, pk_A
- 鲍勃创建其其私钥与公钥:sk_B, pk_B
创建重加密密钥
爱丽丝使用鲍勃的公钥创建重加密密钥 \text{rk} :
\text{rk} = \frac{a}{H((\text{pk}_B)^{\text{sk}_A})} = \frac{a}{H(g^{ab})}
其中,H 是一个哈希函数,\text{pk}_B = g^b 是鲍勃的公钥,\text{sk}_A = a 是爱丽丝的私钥。
因此,我们有:
H((\text{pk}_B)^{\text{sk}_A}) = H((g^b)^a) = H(g^{ab})
爱丽丝加密消息
爱丽丝将消息 M进行加密的得到密文,密文是:
C_A = (g^r, M \cdot g^{ar})
其中 r 是一个随机数。
代理进行重加密
代理使用重加密密钥 \text{rk} 对 C_A 进行重加密:
C_B = ((g^r)^{\text{rk}}, M \cdot g^{ar}) = \left( g^{\frac{ar}{H(g^{ab})}}, M \cdot g^{ar} \right)
鲍勃解密过程
- 鲍勃使用他的私钥 b 解密:
计算
x = (C_{B,1})^{H((\text{pk}_A)^{\text{sk}_B})} = \left( g^{\frac{ar}{H(g^{ab})}} \right)^{H((g^a)^b)} = \left( g^{\frac{ar}{H(g^{ab})}} \right)^{H(g^{ab})} = g^{ar}
- 提取消息:
M = \frac{C_{A,2}}{x} = \frac{M \cdot g^{ar}}{g^{ar}} = M
由此,鲍勃成功解密了原始消息 M。
注释
参考
综合参考
*
*
*
评论 (0)