隐私计算--代理重加密
目錄
代理重加密
傳統公鑰PRE算法流程
?代理重加密的應用
參考:
https://blog.csdn.net/qq_38232598/article/details/108929661?
https://blog.csdn.net/Black_BearB/article/details/81228030?-密文云數據動態共享
https://blog.csdn.net/guoyihaoguoyihao/article/details/103447089?-NuCypher
https://blog.csdn.net/zhuiyunzhugang/article/details/107719357?-算法步驟
https://blog.csdn.net/qq_32938957/article/details/95731383?-算法步驟
https://blog.csdn.net/WXblockchain1/article/details/110240032?-PlatONE
https://blog.csdn.net/jingzi123456789/article/details/104851189?-動圖、流程
https://blog.csdn.net/ffhyy/article/details/105255591?-golang源碼
https://blog.csdn.net/shangsongwww/article/details/90210210?-Umbral
https://blog.csdn.net/qq_26816591/article/details/83656988?
代理重加密
代理重加密 ( PRE,Proxy Re-Encryption)技術就是委托可信第三方或是半誠實代理商將自己公鑰加密的密文轉化為可用另一方私鑰解開的密文從而實現密碼共享。半誠實代理商是指提供云計算服務的公司,一定會執行我們的指定操作,不會篡改內容。
PRE 是一種對密文進行安全轉換的加密技術,在1998 年歐密會上,Blaze 等首次提出了代理重加密的概念 。在代理重加密中,基于授權人(delegator)公鑰加密的密文可以被轉換為另一種密文,且保持對應明文不變,被轉換后的密文可以由被授權人(delegate)的私鑰進行解密。該密文轉換過程由一個半可信的代理者(proxy)執行,在執行該過程前,代理者需要持有一個由授權人到被授權人的轉換密鑰,該轉換密鑰一般由授權人事先生成并交給代理者。同時在密文轉換的整個過程中,代理者無法獲取關于該密文對應明文的任何信息。
現實世界中絕大多數提供云計算服務的公司沒有什么誠信可言,你不能保證它會用你的數據做什么,或是會不會出賣給其他公司,這樣,唯一的解決辦法是加密后放到云上,讓其獲得密文形式,而我們又想讓我們愿意共享秘密的對方獲得密文的明文內容,也就是原本我們公鑰加密后的密文,只有我們的私鑰才能解開,轉化為對方私鑰也能夠解開。這個過程就是代理重加密。
1、概念補充
- 雙向代理重加密(A的密文發給B解密,B的密文發給A解密)
- 單向代理重加密(只能完成A的密文發給B解密)
- 單跳密文轉換(密文只允許轉換一次)
- 多跳密文轉換(可多次密文轉換)
2、業務需求
由于大部分的云服務供應商并不能完全值得信任,云服務供應商可能會在未經用戶允許的情況下,擅自泄露用戶的隱私數據或重要文件。
解決這個問題最直接的方法是數據加密,對于涉及用戶隱私或含有敏感信息的數據文件,將數據加密后上傳是一種普遍的保證數據機密性的方法 ,這樣數據上傳者只需保管好解密密鑰即可。但是云計算服務中存在大量的需要共享數據的應用需求,對于這種簡單的數據加密上傳方式,由于加密文件只能被用戶自行解密,這樣的數據加密文件并不能通過云服務器來分享給他人,為此這便需要一種密碼方案,使得能對存儲在云服務器上的密文進行安全有效的轉換。
顯然,傳統的加密或數字簽名方案并不具有密文轉換功能,而代理重加密技術是一種可以對密文進行安全轉換的加密方法,PRE 技術可以將用戶 A 用自己公鑰加密上傳的密文轉換成另一種形式的密文,使得用戶 B 可以用自己私鑰對轉換后的密文進行解密,并且在整個轉換過程中不會泄露任何對應的明文信息,因此 PRE 對于云計算是天然的應用,可以保證云端數據的安全訪問與共享。
基于數據分享場景,用戶B想獲取用戶A在云上的加密數據,A不能與B直接通信,只能通過中間商云平臺;A不能將加密數據的秘鑰發給云平臺,由云平臺再轉發給B,這樣云平臺就知道A的保密數據;要求不能像CP-ABE那樣,而是要求通過“請求+確認”方式獲取A的數據,即B在每次想獲取A的數據時,要想A申請,只有A同意了以后B才能獲取并查看數據。
3、代理重加密的具體過程:
- A將明文M用自己的公鑰加密;
- A將加密后的密文C1發給半誠實代理商Proxy,并為其生成轉化密鑰K,密鑰K是由A為Proxy計算生成的密鑰;
- Proxy用A生成的密鑰K將密文C1轉化為B的私鑰能夠解密的密文C2;(Proxy只提供計算轉化服務,無法獲得明文)
- Proxy將生成好的密文C2發給B;
- B使用自己的私鑰解密C2,獲得A想要秘密共享的明文M。
在這個過程中,主要解放了A,A只需生成代理密鑰并將密文C1發送給Proxy;其余的步驟都是半誠實代理商完成的:具體文件的傳輸、文件的轉化、文件的存放。
具體演示(點擊下圖進入全屏):
傳統公鑰PRE算法流程
在介紹之前,先解釋一個概念多跳性 (Multi?hop):多跳性是指一個密文可以被不同的轉換密鑰連續進行多次轉換,并且對應的明文保持不變。與其相對的是單跳性,即原始密文只能被轉換一次。
一個傳統 PKI 環境下的單向多跳代理重加密方案包含下列算法:
具體流程如下:
1)系統初始化
2)請求公私鑰對
- Alice向KGC請求生成自己的公私鑰對。
- KGC生成Alice的公私鑰對并返回給Alice。
- Bob向KGC請求生成自己的公私鑰對。
- KGC生成Bob的公私鑰對并返回給Bob。
3)Alice生成密文文件
- Alice利用AES算法加密數據M生成密文C1。
- Alice根據第二層加密算法并利用自己的公鑰加密AES的密鑰生成密文C2
- Alice把加密后的數據密文C1和C2,上傳到服務器Server上
4)構建重加密密鑰
- Alice向KGC請求Bob的公鑰。
- KGC把Bob的公鑰返回給Alice。
- Alice利用Bob的公鑰和自己的私鑰生成重加密密鑰K。
- Alice把生成的重加密密鑰K上傳到服務器Server上。
5)代理重加密
服務器Server利用重加密密鑰K和之前Alice上傳的密文C2做代理重加密運算生成新的密文C3。重加密算法:給定針對公鑰PKi和第二層密文CTi,該算法利用重加密密鑰K生成一個針對公鑰PKj的第一層密文CTj。
6)Bob請求數據
- Bob向服務器Server請求解密數據M對應的密文G。
- 服務器Server把重加密后生成的密文C3和C1發送給Bob。.
- Bob用自己的私鑰解密密文C3得到AES對稱密鑰,并用該對稱密鑰解密C1,得到原始的的明文數據M。
代理重加密的應用
由于 PRE 能對密文進行安全轉換這一特性,PRE 技術被深入地研究以及在云環境中充分發揮著其實用價值。目前 PRE 技術已廣泛應用于云計算環境下的眾多領域之中,如訪問控制 、分布式文件系統 、加密郵件轉發系統 、垃圾郵件過濾系統等 。
注:僅作資料整理!
如有錯誤、侵權,請聯系筆者更改刪除!!!
總結
以上是生活随笔為你收集整理的隐私计算--代理重加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HASH函数
- 下一篇: Kerberos协议