Public-Key

如何將解密能力分享給加密過程中沒有使用公鑰的其他人?

  • March 30, 2022

正如標題所說,例如,A 使用 B 的公鑰加密一條消息並將其發送給 B。在後期階段,一個新成員 C 加入,B 想讓 C 能夠看到這條加密消息(即給C) 的解密能力。如何在不讓 A 使用 C 的公鑰再次加密消息的情況下實現這一點?

我現在能想到的一種方法是B首先解密消息並使用C的公鑰再次對其進行加密然後將其發送給C。但是有沒有任何方法需要更少的操作來將解密能力更多地自動分享給C ? 謝謝。

如果您希望 C 能夠解密發給 B 的任何內容,那麼最簡單的方法就是將 B 的解密密鑰提供給 C。

還有一種稱為代理重新加密的東西,它也本著“重新定址”密文的精神。在代理重加密中,有一個算法 $ \textsf{ProxyKey}(sk_B, pk_C) \to rk_{B\to C} $ :以B的私鑰和C的公鑰為輸入,生成重加密密鑰 $ rk_{B \to C} $ . 誰有這個重新加密密鑰就可以 $ \textsf{ReEncrypt}(rk_{B \to C}, ctxt) \to ctxt’ $ ,它需要一個密文 $ ctxt $ 寄給 $ B $ 並將其轉化為 $ ctxt’ $ , 對同一事物進行加密,但地址為 $ C $ .

(也有變種 $ \textsf{ProxyKey} $ 需要雙方的私鑰。)

這裡的重要區別是,“重新定址”密文(“代理”)的人可以是 B 或 C 以外的人。 $ rk_{B\to C} $ 但是誰不知道 B 或 C 的私鑰誰無法打開發給 B 或 C 的密文。他們只能將 B 的密文轉換為 C 的密文(反之亦然)而無需查看內部。假設代理和 C 是不同的參與方,那麼 C 只能讀取發往 B 且代理選擇轉換的消息。

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