代理重加密原理與實踐

warm3snow發表於2024-04-15

目錄
  • 主頁
  • 引言
  • 代理重加密
  • 代理重加密關鍵流程
  • 實踐&應用
  • 總結
  • 參考資料

主頁

  • 個人微信公眾號:密碼應用技術實戰
  • 個人部落格園首頁:https://www.cnblogs.com/informatics/

引言

2022年12月,人工智慧迎來了一件大事,OpenAI的ChatGPT橫空誕生,成為了現象級產品。如果說算力是人工智慧的發動機,那麼資料則是人工智慧的Gasoline

網際網路平臺的封閉導致了資訊孤島, 從而降低了資料公開流通,和資料要素價值,資料流通是實現資料社會化利用和實現資料資源價值的必然路徑。隨著國內資料二十條政策落地,支援依法依規在場內場外採取開放、共享、交換、交易等方式流通資料,為資料共享提供了法律和政策指導,推動了資料開放、流通和共享的發展。

資料二十條對資料安全提出了一定的要求:

  • 資料安全保護:在資料共享過程中,必須採取適當的安全措施,保護資料的機密性、完整性和可用性,防止未經授權的訪問、使用和洩露。
  • 資料訪問和使用許可權:資料共享應該建立明確的訪問和使用許可權,確保只有授權的使用者可以訪問和使用資料,並限制資料的濫用和不當使用。
  • 資料共享協議和契約:資料共享應該建立在明確的協議和契約基礎上,明確各方的權利和責任,確保資料共享的合法性和可持續性。

本文將要介紹的技術主要針對資料安全保護,在資料共享過程中保證資料的機密性

代理重加密

代理重加密(Proxy Re-encryption, 簡稱PRE)方案是一種密碼系統,允許第三方(代理)修改為某一方(資料提供方)加密的密文,以便其他方(資料使用方) 能夠解密該密文。

PRE方案主要有以下特點:

  • 委託(Delegation)- 允許訊息接收者(金鑰持有者)基於他的金鑰和被委託使用者的金鑰生成一個重加密金鑰。代理將使用這個重加密金鑰作為輸入,透過重加密函式將密文轉換為被委託使用者的金鑰。非對稱代理重加密方案有雙向和單向兩種型別。
  • 傳遞性(Transitivity)- 傳遞性代理重加密方案允許對密文進行無限次的重加密。例如,一個密文可以從Bob重新加密為Charlie,然後再從Charlie重新加密為David,依此類推。非傳遞性方案只允許對給定密文進行一次(或有限次數)的重加密。大多數已知的方案都是雙向和傳遞性的。目前,唯一已知的單向傳遞性代理重加密是透過同態加密實現的。

PRE方案常用於雲環境下的資料安全共享。

無PRE資料安全共享

在下圖中,Alice為資料提供方,Bob為資料使用方,Alice和Bob分別維護自己的加密公私鑰

image

  • Alice加密資料上傳到雲端儲存
  • 當Alice需要向Bob共享資料時,需要獲取Bob的加密公鑰
  • Alice使用Bob的加密公鑰對資料進行加密,並上傳到雲端儲存,如:密文資料 for Bob
  • Bob下載密文資料,並本地解密獲取明文資料

使用PRE進行資料共享

image

  • Alice將資料加密,並將加密後的資料上傳到雲端儲存
  • 當Alice需要向Bob共享資料時,需要獲取Bob的加密公鑰
  • Alice生成重加密金鑰,併傳送給代理重加密服務(Proxy Re-encryption Service)
  • 代理重加密服務基於重加密金鑰和步驟1中的加密資料,生成重加密密文資料
  • Bob下載密文資料,並使用本地私鑰進行解密,獲取明文
對比 \ 資料共享 不使用PRE 使用PRE
效能 低,需要資料提供者進行本地加密,
效能依賴於本地算力
高,代理重加密服務部署在雲端,
可以藉助雲端計算能力
易用性 中,對於資料提供者和資料使用者來說,
難度與不適用PRE相差不大
複雜度 低,基於基礎密碼演算法,
複雜度相對較低
依賴於PRE方案和Proxy服務,
流程較為複雜,有一定的實現和運維難度
安全性 較高,雲廠商和資料使用方存在合謀風險,但攻擊有限

代理重加密關鍵流程

代理重加密方案涉及五元組<KeyGen, Encrypt, ReGenKey, ReEncrypt, Decrypt>

  • KeyGen:本地金鑰生成函式
  • Encrypt: 資料加密函式
  • ReGenKey:重加密金鑰生成函式
  • ReEncrypt:資料重加密函式
  • Decrypt:資料解密函式

image

  • 資料提供方Alice和資料使用方Bob使用KeyGen函式,分別生成本地公私鑰
  • Alice使用Encrypt函式對明文資訊M進行加密,並將密文資料C上傳到代理重加密服務Proxy
  • 資料使用方提供加密公鑰,併傳送給Alice
  • Alice使用ReGenKey函式,生成針對Bob的重加密金鑰,併傳送給Proxy
  • Proxy使用ReEncrypt,並基於密文資料C和重加密金鑰,生成新的密文資料:重加密密文資料
  • Bob獲取重加密密文資料,並使用本地私鑰進行解密

以上方案中資料加解密使用了非對稱演算法,眾所周知非對稱演算法效能較低,因此在實際應用中,一般會使用對稱演算法對資料進行加密,並使用代理重加密對對稱金鑰進行加密共享,由於對稱金鑰只有幾十位元組,所以效能會提升幾個數量級。方案和流程如下:

image

最佳化版代理重加密方案涉及8元組<SymKeyGen, SymEncrypt, SymDecrypt, KeyGen, Encrypt, ReGenKey, ReEncrypt, Decrypt>

  • KeyGen, Encrypt, ReGenKey, ReEncrypt, Decrypt與前文同,不再贅述

  • SymKeyGen:對稱演算法金鑰生成函式

  • SymEncrypt:對稱加密函式

  • SymDecrypt:對稱機密函式

  • 資料提供方和資料使用方使用KeyGen函式,分別生成本地公私鑰。同時Alice生成對稱金鑰(隨機數)

  • Alice使用Encrypt函式對明文資訊M進行加密,並將密文資料C上傳到代理重加密服務Proxy

  • 資料使用方提供加密公鑰,併傳送給Alice

  • Alice使用ReGenKey函式,生成針對Bob的重加密金鑰,併傳送給Proxy

  • Proxy使用ReEncrypt,並基於密文資料C和重加密金鑰,生成新的密文資料:重加密密文資料

  • Bob獲取重加密密文資料,並使用本地私鑰進行解密

實踐&應用

這裡主要介紹demo以及相關應用

總結

在這裡總結本文的主要內容和結論,強調解決問題的重要性和意義。
在這裡展望未來的發展方向和可能的研究方向,讓讀者瞭解本文的研究價值和意義。

參考資料

在這裡列出本文所引用的參考文獻,讓讀者瞭解本文的來源和參考資料。

  • 參考資料1
  • 參考資料2

相關文章