公钥直接加密法
我们先来看看如果直接进行数据分享,有没有什么简单的方法。下面以Alice(数据拥有者)向Bob(数据接收者)分享一份文件为例,说明公钥直接加密法。
1、Alice使用Bob的公钥对文件进行加密。
2、将数据分享给Bob。
3、Bob解密文件,获取信息。
这个过程简单而直接,这就是公钥直接加密法。但如果面对使用存储网络进行数据分享的情况公钥直接加密法有没有优势呢?
由于数据存储在存储网络中,且自己的私钥不能泄漏,所以Alice需要先下载文件,解密、重新使用Bob的公钥加密再上传到存储网络中,然后Bob可以从存储网络中获取文件。
还有一个问题,如果Alice有一天又想把数据分享给Julia,那么他需要再重新将上面的操作进行一遍。
分析上面的问题,我们其实只使用了存储网络的存储功能,而没有使用存储网络的计算功能。所以“直接公钥加密”是一种非常笨拙的方法。
代理重加密(Proxy Re-Encryption, 简称PRE)
代理重加密(Proxy Re-Encryption)是一种密码学技术,用于在保持数据的机密性的同时,允许一个代理将加密数据从一个密钥(发送者密钥)转换为另一个密钥(接收者密钥),而无需解密和重新加密数据。
代理重加密的工作方式如下:
- 发送者生成一对非对称密钥,包括公钥和私钥。发送者使用公钥将数据进行加密,并将加密后的数据发送给代理。
- 代理在接收到加密数据后,使用代理密钥对数据进行重加密。代理密钥是由代理生成的,与发送者和接收者的密钥相关联。重加密的过程允许代理将数据从发送者密钥转换为接收者密钥,而无需解密数据内容。
- 接收者使用自己的私钥解密代理重加密后的数据,以获取原始的明文数据。
代理重加密的主要优势在于,它允许数据所有者(发送者)委托一个代理来转发加密数据给接收者,而无需泄露自己的私钥或要求代理解密数据。这种委托可以在不破坏数据机密性的前提下进行,因为代理只是在加密域中进行转换操作,而不需要访问数据的明文内容。
代理重加密在很多场景中都有应用,如安全数据共享、云存储、跨域认证和密钥管理等。它提供了一种灵活且安全的方式,使得数据所有者能够控制数据的访问权限,并在需要时委托代理进行数据的转发和解密操作,同时确保数据的机密性得到保护。
代理重加密的特点
(1).单向性 (Unidirectional): 在代理重加密方案中,如果代理者仅仅能将授权者的密文转化成受理者的密文,而不能将受理者的密文转化成授权者的密文,则称该方案是单向的。反之如果代理者既能够将授权者的密文转换成受理者的密文,也能够将受理者的密文转化成授权者的密文,则该方案称为双向的(bidirectional)。显然在代理重加密方案中,单向代理重加密方案比双向代理重加密方案更优越。首先,在实际应用中,这种授权关系往往不是双向的。其次双向的代理重加密方案可以有两个单向的代理重加密方案构造,反之单向代理重加密则不能由双向单向代理重加密获得。
(2).多用性 (Multi-use): 在单向代理重加密方案中,如果已经被重加密的密文还能被代理者重加密,则称为多用代理重加密。反之,如果已经被加密的密文不能再被代理者重加密,则称为单用 (single-use) 单向代理重加密。
(3).非交互性(Non-interactive): 在单向代理重加密方案中,授权者在产生代理重加密密钥的过程中不需要受理者或者其他第三方的参与,则称为非交互性代理重加密。反之,如果授权者需要与受理者或者其他第三方交互来产生代理重加密密钥,则称为交互式 (Interavtive)代理重加密。
(4).透明性 (Transparent): 在代理重加密方案中,如果代理者是透明的,即发送者和受理者都不知道代理者的存在,则称该代理重加密方案是透明的。在透明代理重加密方案中,重加密后发送给受理者的密文与原本就发送给受理者的密文是不可区分的。
(5).密钥最优(Key optimal): 在代理重加密方案中,如果受理者所需要存储的私钥是固定的,并不因为该受理者可能是多个授权者的受理者而增加。则称该代理重加密方案是密钥最优的。
(6).非传递性(Non-transitive): 在代理重加密方案中,如果代理者拥有将 Alice 的密文转化成 Bob 的密文的代理重加密密钥rka-B和将 Bob 的密文转化成 Carlo 的密文的代理重加密钥rkB-C,但是代理者不能够自己计算出将 Alice 的密文转化成 Carlo 的密文的代理重加密密钥rkA-C,则该代理重加密方案是非传递性的。
(7).非转移性(Non-transferable): 在代理重加密方案中,如果代理者拥有将 Alice 的密文转化成 Bob 的密文的代理重加密密钥rkA-B,即使代理者和受理者合谋,也不能够获得将Alice 的密文转化成 Carlo 的密文的代理重加密密钥rkA-C,则该代理重加密方案是非转移性的注意,非传递性指代理者自己不能生成新的代理重加密密钥,而非转移性指,代理者不能和受理者合谋生成新的代理重加密密钥。
(8).临时性 (Temporary): 在代理重加密方案中,授权者授权代理者重加密自己的密钥,这种授权关系是只是在一定的时间范围内有效,或者授权者可以通过某种机制去撤销这种授权关系,则称该代理重加密方案是临时的。
(9).抗合谋 (Collusion resistant): 在代理重加密方案中,即使代理者和授权者合谋,也不能够获得授权者的私钥,则称该代理重加密方案是抗合谋的。显然如果一个代理重加密方案是非转移的,则该代理重加密方案是抗合谋的,反之则不然。
(10)源隐藏(Source hiding): 在代理重加密方案中,如果攻击者 (包括受理者) 无法确定某个原始密文是否是某个重加密密文的原密文,则称该代理重加密方案是源隐藏的。
代理重加密的一种方案
本文涉及的代理重加密,并不会对要加密的原文进行二次加密,而是对原文进行加密的密码进行加密。参与重加密的服务器无法得知加密密码,因此密文可以保存在服务器端存储,且不会泄露任何信息。服务器对加密后的密码重加密,授权一侧的用户通过自身的私钥进行密码解析,从而对密文进行反加密。
常用符号
G表示阶数为素数的有限域上的循环群,g表示群G的生成元。
算法逻辑
Alice 和Bob 分别有属于自己的公私钥对。
Alice (
Bob(
一、Alice 使用自己的公钥创造一个加密密码和加密密码胶囊(胶囊中有加密密码由本次执行所创造的证明)
h is a function that calculate hash on the curve
加密密码胶囊
计算S采用 Schnorr 签名方案
加密密码
二、Alice为Bob授权,生成授权公钥和提供给服务器侧的重加密密钥
由于authKey是授权时生成的授权密钥,d值也是映射到椭圆曲线上的点,当alice的私钥和d值进行乘法计算,得到的结果
给到服务器的输出是pubAuthKey。服务器无从知晓authKey或d也就无法知晓
三、服务器端进行重加密
检查胶囊中E,V,S是否能够通过验证
根据素数有限域群的交换律,分别计算$gs
四、Bob 获取加密密码,需要
五、Alice自己也可以根据胶囊信息恢复出加密密码。
根据第四步骤中推演的结果
参考
Proxy Re-Encryption — Allowing Alice To Share Her Protect Secret Key With Bob
Improved Proxy Re-Encryption Schemes with Applications to Secure Distributed Storage