Algorithm-Design

謂詞加密算法是如何實現的?

  • July 7, 2013

在網際網路上大量閱讀之後,我似乎無法弄清楚如何Predicate Encryption工作。

正如我所讀到的,它由 4 個算法組成:

Setup()- (輸出MSK- 主密鑰和PK- 公鑰)

Encrypt(PK, text)- (輸出CT- 密文)

GenKey(MSK, predicate)- (輸出 a Token

Query(Token, CT)- 如果是0,如果false是1true

我不明白GenKey算法是如何工作的,你如何基於MSKand生成令牌predicate,當然,你如何ciphertext使用生成的token.

有人能指出我正確的方向嗎?也許是一些虛擬碼或非常詳細的解釋。

謝謝!

起初,您的語法 (Setup,GenKey,Encrypt,Query) 似乎是帶有關鍵字搜尋 (PKES) 的公鑰加密的語法。在基於謂詞的加密的情況下,我們使用 Decrypt 而不是 Query。

Sahai-Waters 模糊IBE

我推薦Sahai 和 Waters:基於身份的模糊加密 (EUROCRYPT 2005)作為第一步。我假設您了解基於配對的密碼學和秘密共享的基礎知識。

在 Fuzzy IBE 中,密文和密鑰與屬性集相關聯, $ X $ 和[Math Processing Error] $ Y $ , 分別。如果[Math Processing Error] $ X $ 和[Math Processing Error] $ Y $ 至少分享 $ t $ 元素,可以解密密文 $ c_X $ 使用 $ sk_Y $ . 語法如下:

  • $ \mathsf{Setup}(1^{\kappa},n,t) $ 輸出 $ msk $ 和 $ pk $ , 在哪裡 $ \kappa $ 是安全參數, $ n $ 是宇宙的大小,並且 $ t $ 是門檻值參數。
  • $ \mathsf{GenKey}(msk,Y) $ 輸出 $ sk_Y $ , 在哪裡 $ Y \subseteq {1,\dots,n} $ .
  • $ \mathsf{Encrypt}(pk,X,m) $ 輸出一個 ciphertxt $ c_X $ , 在哪裡 $ X \subseteq {1,\dots,n} $ .
  • $ \mathsf{Dec}(sk_Y,c_X) $ 輸出[Math Processing Error] $ m $ 如果[Math Processing Error] $ X $ 和[Math Processing Error] $ Y $ 至少分享[Math Processing Error] $ t $ 元素。

他們設計的方案如下(我省略了 enc 和 dec):

  • 設置:主密鑰是[Math Processing Error] $ \alpha,t_1,\dots,t_n \in \mathbb{Z}_q $ 主公鑰是[Math Processing Error] $ e(g,g)^{\alpha} $ 和[Math Processing Error] $ T_i = g^{t_i} $ .
  • GenKey:主生成共享 $ s_1,\dots,s_n $ 的[Math Processing Error] $ \alpha $ 通過使用 $ (n,t) $ 秘密共享方案,計算[Math Processing Error] $ D_i = g^{s_i/t_i} $ 對於每個[Math Processing Error] $ i $ , 並返回[Math Processing Error] $ D_i $ 為了 $ i \in Y $ .

其他方案

基於配對組的基於謂詞的加密方案通常採用這種結構。直覺地說,他們像 Sahai 和 Waters 一樣將主密鑰隱藏/共享到使用者密鑰中。

如果您需要實現範例,我們可以在密碼庫中找到更複雜的基於謂詞的加密方案的(概念驗證)實現:

引用自:https://crypto.stackexchange.com/questions/8926