我們可以使用同態加密方案進行代理重新加密嗎?
同態加密方案是具有附加特殊方法Evaluate的 PKE 方案。
Evaluate方法接受輸入任何函式(作為布爾電路)和函式的加密輸入並評估電路。這種函式的結果仍然在公鑰下加密 $ PK $ .
現在,如果使用者需要使用新的公鑰重新加密數據 $ PK^1 $ ,使用者應該用舊的私鑰解密數據 $ SK $ 首先,然後用 new 再次加密 $ PK^1 $ .
或者如何在不解密數據的情況下使用 FHE 方案有效地進行代理重新加密?
請注意,如果使用者執行重新加密電路作為Evaluate方法的輸入 $ PK^1 $ 作為參數,結果仍然是加密(原始數據的加密與新的 $ PK_1 $ ) 與年長者 $ PK $ .
是的。Gentry(在他的論文中)在考慮引導和重新加密時指出了這一點。
讓我們將舊密鑰對錶示為 $ (PK, SK) $ 和新的密鑰對 $ (PK^1, SK^1) $ .
使用者想要的是重新加密舊密文 $ C = \mathsf{Enc}(PK, M) $ 變成一個新的密文 $ C^1 $ 被解密為 $ M = \mathsf{Dec}(SK^1,C^1) $ .
為了做到這一點,無需直接解密,我們虛擬地解密 $ C $ 在由 $ PK^1 $ ,也就是說,我們評估一個解密電路 $ PK^1 $ . 正確地說,我們執行以下操作:
- 產生 $ \widetilde{SK}_i = \mathsf{Enc}(PK^1,SK_i) $ , 在哪裡 $ SK_i $ 表示第 i 位 $ SK $ .
- 計算 $ \widetilde{C}_i = \mathsf{Enc}(PK^1,C_i) $ , 在哪裡 $ C_i $ 表示第 i 位 $ C $ .
- 評估解密電路。那是, $ C^1 = \mathsf{Eval}(PK^1, \mathsf{Dec}, (\widetilde{SK}_1,\dots,\widetilde{SK}_n,\widetilde{C}_1,\dots,\widetilde{C}_m)) $ .
從評估的正確性來看,我們有
$$ \begin{align} \mathsf{Dec}(SK^1,C^1) &= \mathsf{Dec}(\mathsf{Dec}(SK^1,\widetilde{SK}_1),\dots,\mathsf{Dec}(SK^1,\widetilde{SK}_n),\mathsf{Dec}(SK^1,\widetilde{C}_1),\dots,\mathsf{Dec}(SK^1,\widetilde{C}_m))\ &= \mathsf{Dec}(SK_1,\dots,SK_n,C_1,\dots,C_m) \ &= \mathsf{Dec}(SK,C)\ &= M \end{align} $$ 如我們所願。 這只是 Gentry 在他的論文中建議的重新加密。