查看“︁代理重加密”︁的源代码
←
代理重加密
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[File:代理重加密示意图.png|thumb|right|350px|爱丽丝(委托者)通过第三方代理向鲍勃(受委托者)传递消息。]] '''代理重加密'''(英语:Proxy re-encryption)是由{{tsl|en|Matt Blaze|馬特·布拉澤}}等人提出的一种[[密码体制]]<ref name='start_m'>{{cite conference |author=Matt Blaze |coauthors=Gerrit Bleumer & Martin Strauss |title=Divertible protocols and atomic proxy cryptography |conference=Advances in Cryptology – EUROCRYPT '98 |year=1998 |isbn=978-3-540-64518-4 |doi=10.1007/BFb0054122 |url=https://link.springer.com/chapter/10.1007/BFb0054122 |access-date=2024-06-10 |archive-date=2024-03-02 |archive-url=https://web.archive.org/web/20240302101448/https://link.springer.com/chapter/10.1007/BFb0054122 |dead-url=no }}</ref>。其目标是安全地将[[密文]]从一个[[密钥]]重新加密到另一个密钥,而无需依赖可信任的第三方。 具体来说,其允许半可信第三方([[代理服务器]]),将委托者[[公钥]]加密的密文转换为受委托者公钥加密的另一[[密文]],使其可以被受委托者解密。同时不会向代理服务器泄露加密消息或委托者/受委托者的[[私钥]]。 ==历史== 1998年:{{tsl|en|Matt Blaze|馬特·布拉澤}}等人提出了首个双向、多跳代理重加密方案<ref name='start_m'/>。该方案基于[[ElGamal加密算法|ElGamal算法]],并在[[离散对数|离散对数困难]]假设下证明其[[选择明文攻击]](CPA)安全性。然而,该方案无法抵抗{{tsl|en|Collision attack|合谋攻击}},即代理和重加密后的密文接收者可以联合获取原始密文拥有者的[[私钥]]。 2003年:提出了一种基于密钥共享机制的单向代理重加密方案<ref name='second_i'/>,将用户的私钥分成两部分,一部分交给代理,另一部分交给重加密后的密文接收者。尽管解决了代理独立分配解密授权的问题,但该方案未能实现密钥优化和抗{{tsl|en|Collision attack|合谋攻击}}。 2005年:首次形式化了代理重加密及其安全模型,并使用[[双线性映射|双线性对]]构造了一个单向代理重加密方案,实现了主密钥安全并能够抵抗{{tsl|en|Collision attack|合谋攻击}}<ref>{{cite journal |title=Improved proxy re-encryption schemes with applications to secure distributed storage |journal=ACM Transactions on Information and System Security |date=2006-02 |volume=9 |issue=1 |pages=1–30 |doi=10.1145/1127345.1127346 |accessdate=2024-06-17}}</ref>。然而,该方案只能实现CPA安全,无法满足实际应用需求。 2008年:提出了首个在标准模型下证明RCCA安全的一向代理重加密方案<ref>{{cite journal |title=Unidirectional Chosen-Ciphertext Secure Proxy Re-Encryption |journal=IEEE Transactions on Information Theory |date=2011-03 |volume=57 |issue=3 |pages=1786–1802 |doi=10.1109/TIT.2011.2104470 |url=https://ieeexplore.ieee.org/document/5714278 |accessdate=2024-06-17 |archive-date=2024-06-15 |archive-url=https://web.archive.org/web/20240615030717/https://ieeexplore.ieee.org/document/5714278/ |dead-url=no }}</ref>。同年,一个独立于[[双线性映射|双线性对]]且CCA安全的双向代理重加密方案被提出<ref>{{cite journal |title=Chosen-Ciphertext Secure Proxy Re-encryption without Pairings |journal=Cryptology and Network Security |date=2008 |volume=5339 |pages=1–17 |doi=10.1007/978-3-540-89641-8_1 |accessdate=2024-06-17}}</ref>,解决了{{tsl|en|Ran Canetti|冉·卡内蒂}}提出的公开问题 <ref group="note"> Ran Canetti 在ACM CCS 2007 上提出了一个重要的公开性问题:如何构建一个无需双线性配对的 CCA 安全代理重加密方案?</ref>。 2010年:提出了无证书环境下的代理重加密概念,并构造了相应方案<ref>{{cite journal |author1=Chul Sur |title=Chosen-Ciphertext Secure Certificateless Proxy Re-Encryption |journal=Communications and Multimedia Security |date=2010 |volume=6109 |pages=214–232 |doi=10.1007/978-3-642-13241-4_20 |url=https://link.springer.com/chapter/10.1007/978-3-642-13241-4_20 |accessdate=2024-06-17 |archive-date=2024-06-17 |archive-url=https://web.archive.org/web/20240617111225/https://link.springer.com/chapter/10.1007/978-3-642-13241-4_20 |dead-url=no }}</ref>。 2013年:首次在标准模型下基于{{tsl|en|Lattice problem|格问题}}(LWE)构造了K-PRE方案<ref>{{cite journal |title=Key-Private Proxy Re-encryption under LWE |journal=Progress in Cryptology – INDOCRYPT 2013 |date=2013 |volume=8250 |pages=1–18 |doi=10.1007/978-3-319-03515-4_1}}</ref>,能够应对[[量子计算机|量子计算]]威胁。 2018年:首次提出了PRE+概念<ref>{{cite journal |last1=Wang |first1=Xu An |last2=Xhafa |first2=Fatos |last3=Ma |first3=Jianfeng |last4=Barolli |first4=Leonard |last5=Ge |first5=Yunlong |title=PRE+: dual of proxy re-encryption for secure cloud data sharing service |journal=International Journal of Web and Grid Services |date=2018 |volume=14 |issue=1 |pages=44 |doi=10.1504/IJWGS.2018.088394}}</ref>,并构造了具体方案。该方案通过主体生成重加密密钥的操作,实现了基于消息级别的细粒度委托和不可转移属性。 ==组成== 代理重加密方案一般划分为五个算法部分,分别为[[密钥]]生成算法、重加密密钥生成算法、重加密算法、加密算法、解密算法<ref name=survey_qin_2016/>。 涉及三种对象,即委托者,第三方代理,受委托者<ref name='second_i'/>。 ==分类== 根据代理重加密密钥的性质,代理重加密分为双向和单向两种<ref name='second_i'>{{cite conference |author=Anca Ivan |coauthors=Yevgeniy Dodis |title=Proxy Cryptography Revisited |conference=10th Symposium on Network and Distributed System Security, NDSS 2003 |year=2003 |isbn=1891562169 |url=https://nyuscholars.nyu.edu/en/publications/proxy-cryptography-revisited |access-date=2024-06-10 |archive-date=2024-06-10 |archive-url=https://web.archive.org/web/20240610021718/https://nyuscholars.nyu.edu/en/publications/proxy-cryptography-revisited |dead-url=no }}</ref>。在双向代理重加密中,代理服务器利用重加密代理钥<ref group="note">即代理重加密密钥,意为第三方代理对委托者密文进行再次加密的密钥。</ref>可以将委托者的密文转换成针对受委托者的密文,也可以将受委托者的密文转换成针对委托者的密文, 但这需要委托者和受委托者的私钥;在单向代理重加密中,代理服务器利用重加密密钥只能将委托者的密文转换成针对受委托者的密文,只需委托者的私钥,但无法进行反向转换<ref name=survey_qin_2016/>。 根据密文是否可以被多次转换,代理重加密还分为多跳和单跳两种<ref name=tech_lecture>{{cite tech report |author1=Zachary Scott |title= Re-encryption |url=https://www.cs.jhu.edu/~susan/600.641/scribes/lecture17.pdf |website=Lecture 17: Re-encryption |publisher=[https://www.cs.jhu.edu/~susan/600.641/materials.html 600.641 Special Topics in Theoretical Cryptography] |accessdate=2024-06-13}}</ref>。多跳代理重加密允许密文被多次转换,而单跳代理重加密只允许密文被转换一次。 ==使用场景== 代理重加密可以用于多种场景,如数据内容共享、加密电子邮件转发、[[分布式文件系统]]、[[云计算]]等<ref>{{cite journal |author1=David Nuñez |coauthors=Isaac Agudo, Javier Lopez |title=Proxy Re-Encryption: Analysis of constructions and its application to secure access delegation |journal=Journal of Network and Computer Applications |date=2017 |doi=10.1016/j.jnca.2017.03.005 |url=https://doi.org/10.1016/j.jnca.2017.03.005 |accessdate=2024-06-10}}</ref>。 === 云端数据内容共享 === 假设数据所有者(如爱丽丝)打算将存储在云中的敏感数据共享给另一个授权用户(如鲍勃)。理想情况下,除了鲍勃之外,任何人都无法访问请求的数据。 爱丽丝可以在上传共享数据到半信任的[[雲端運算|云服务器]]之前,用她自己的公钥加密敏感数据。在收到鲍勃的数据共享请求后,爱丽丝使用自己的私钥和鲍勃的公钥生成一个代理重加密密钥,并将该密钥发送给半信任的[[雲端運算|云服务器]]。有了这个代理重加密密钥,云服务器可以将用爱丽丝公钥加密的密文转换成用鲍勃公钥加密的密文。转换后的密文只能由鲍勃解密,而云服务器无法得知明文或爱丽丝和鲍勃的私钥。最终,鲍勃可以使用自己的私钥下载并解密请求的数据。<ref name=survey_qin_2016>{{cite journal |author1=Zhiguang Qin |coauthors=Hu Xiong; Shikun Wu; Jennifer Batamuliza |title=A Survey of Proxy Re-Encryption for Secure Data Sharing in Cloud Computing |journal=IEEE Transactions on Services Computing |date=2016 |doi=10.1109/TSC.2016.2551238 |url=https://ieeexplore.ieee.org/abstract/document/7448446 |accessdate=2024-06-10 |archive-date=2024-04-18 |archive-url=https://web.archive.org/web/20240418042133/https://ieeexplore.ieee.org/abstract/document/7448446/ |dead-url=no }}</ref> === 加密电子邮件系统 === 在一般的邮件加密中,发送给用户的电子邮件都会用用户的公钥加密,要阅读邮件必须先用用户的私钥解密。假设用户爱丽丝要出差一段时间,她希望秘书鲍勃在此期间帮助处理解密邮件。直接将爱丽丝的私钥交给鲍勃显然不是一个好的办法。 通过使用代理重加密技术,爱丽丝可以将代理重加密密钥交给[[邮件服务器]]。这样,邮件服务器在无法获知爱丽丝邮件内容的情况下,可以将这些邮件转换为针对鲍勃加密的邮件。鲍勃收到这些邮件后,只需使用他自己的私钥即可解密,从而帮助爱丽丝处理邮件<ref>{{cite conference |author=Bharat S. Rawal |title=A proxy re-encryption-based webmail and file sharing system for collaboration in cloud computing environment |conference=2018 International Conference on Computational Techniques, Electronics and Mechanical Systems (CTEMS) |year=2019 |isbn=978-1-5386-7709-4 |doi=10.1109/CTEMS.2018.8769164 |url=https://ieeexplore.ieee.org/abstract/document/8769164 |access-date=2024-06-10 |archive-date=2024-05-08 |archive-url=https://web.archive.org/web/20240508014039/https://ieeexplore.ieee.org/abstract/document/8769164/ |dead-url=no }}</ref>。 ==运算实例== 爱丽丝想将消息<math>M</math>通过代理重加密方式传递给鲍勃,如下是一个基于[[ElGamal加密算法]]的代理重加密方案: [[File:Pre-v1.png|thumb|流程图|class=skin-invert-image]] '''初始设置''' 根据公钥(<math>pk</math>)和私钥(<math>sk</math>)生成规则: <math>sk \leftarrow \mathbb{Z}_p, \quad pk = g^{sk}</math>。 假设爱丽丝和鲍勃已经生成了他们自己的密钥对,<math>g</math> 是该[[椭圆曲线密码学|椭圆曲线]]<math>G</math>的生成元;<math>p</math> 是一个大质数,同时也是 <math>G</math> 的阶。 * 爱丽丝创建其私钥与公钥:<math>sk_A, pk_A</math> * 鲍勃创建其其私钥与公钥:<math>sk_B, pk_B</math> '''创建重加密密钥''' 爱丽丝使用鲍勃的公钥创建重加密密钥 <math>\text{rk}</math> : <math> \text{rk} = \frac{a}{H((\text{pk}_B)^{\text{sk}_A})} = \frac{a}{H(g^{ab})} </math> 其中,<math>H</math> 是一个[[哈希函数]],<math>\text{pk}_B = g^b</math> 是鲍勃的公钥,<math>\text{sk}_A = a</math> 是爱丽丝的私钥。 因此,我们有: <math> H((\text{pk}_B)^{\text{sk}_A}) = H((g^b)^a) = H(g^{ab}) </math> '''爱丽丝加密消息''' 爱丽丝将消息 <math>M</math>进行加密的得到密文,密文是: <math> C_A = (g^r, M \cdot g^{ar}) </math> 其中 <math>r</math> 是一个随机数。 '''代理进行重加密''' 代理使用重加密密钥 <math>\text{rk}</math> 对 <math>C_A</math> 进行重加密: <math> C_B = ((g^r)^{\text{rk}}, M \cdot g^{ar}) = \left( g^{\frac{ar}{H(g^{ab})}}, M \cdot g^{ar} \right) </math> '''鲍勃解密过程''' * 鲍勃使用他的私钥 <math>b</math> 解密: 计算 <math> 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} </math> * 提取消息: <math> M = \frac{C_{A,2}}{x} = \frac{M \cdot g^{ar}}{g^{ar}} = M </math> 由此,鲍勃成功解密了原始消息 <math>M</math>。 ==注释== <references group="note" /> ==参考== {{Reflist|2}} ==综合参考== * {{cite article |author1=周德华 |title=代理重加密体制的研究 |url=https://www.docin.com/p-1399354481.html |website=代理重加密体制的研究(博士论文) |publisher=上海交通大学 |accessdate=2024-06-13 |archive-date=2024-06-13 |archive-url=https://web.archive.org/web/20240613023607/https://www.docin.com/p-1399354481.html |dead-url=no }} *{{cite article |author1=David Nuñez |title=Umbral: a threshold proxy re-encryption scheme |date=2018 |url=https://raw.githubusercontent.com/nucypher/umbral-doc/master/umbral-doc.pdf |accessdate=2024-06-13 |archive-date=2024-03-31 |archive-url=https://web.archive.org/web/20240331154107/https://raw.githubusercontent.com/nucypher/umbral-doc/master/umbral-doc.pdf |dead-url=no }} * {{cite tech report |author1=Zachary Scott |title= Re-encryption |url=https://www.cs.jhu.edu/~susan/600.641/scribes/lecture17.pdf |website=Lecture 17: Re-encryption |publisher=[https://www.cs.jhu.edu/~susan/600.641/materials.html 600.641 Special Topics in Theoretical Cryptography] |accessdate=2024-06-13}} [[Category:密码学]]
该页面使用的模板:
Template:Cite article
(
查看源代码
)
Template:Cite conference
(
查看源代码
)
Template:Cite journal
(
查看源代码
)
Template:Cite tech report
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Tsl
(
查看源代码
)
返回
代理重加密
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息