Homomorphic-Encryption

在像 Paillier 這樣的方案中重用隨機致盲因子會有多糟糕?

  • January 14, 2015

一種“重新加密”(刷新?匿名?)Paillier 密文的安全且快速的方法,[Math Processing Error] $ c $ , 是將它乘以一個取冪的隨機值:

$ c \gets c \cdot r^n \mod n^2 $ (和 $ r \in \mathbb{Z}_n $ 隨機的)

然而,一個大的模冪 $ r $ 成本相當高(許多訂單比涉及的其他操作多)。因此,在需要多次連續重新加密的情況下,儲存和重用相同的內容似乎非常誘人 $ s = r^n \mod n^2 $ .

因此,在兩次重新加密之後,密碼將包含:

$ c \cdot s^2 \mod n^2 $

等等…

這種重新加密方法只會使用乘法,並且比普通方法便宜得多。

由於乘以[Math Processing Error] $ s $ “應該”足夠大以觸發模環繞,似乎是連續的[Math Processing Error] $ s^i $ values 不會給出任何關於之前的任何資訊 $ s^k, k < i $ (從而保護所有密文的安全性)。這個對嗎?

弱點似乎在於這樣的乘法不會觸發環繞的風險,但也許解決這個問題的方法是繼續乘法,直到我們保證發生了一次。

作為一種變體:我們可以為每次重新加密使用一個預先計算的取冪隨機值的小池,從而確保始終發生迴繞。

我在這裡錯過了一個明顯的安全漏洞嗎?

第一個明顯的反對意見是,它會在盲目價值觀方面做得很糟糕。如果您重用致盲因子,那麼將致盲值與其原始值相關聯將是切實可行的(並且致盲值的全部意義在於防止任何人這樣做)。

假設我們有兩個原始加密值[Math Processing Error] $ c $ ,[Math Processing Error] $ d $ ,以及相應的盲版本 $ x = c \cdot r_1^n $ 和 $ y = d \cdot r_2^n $ . 其他一無所知,無法決定是否[Math Processing Error] $ x $ 是一個盲目的副本 $ c $ , 或盲副本 $ d $ .

然而,如果 $ r_1 = r_2 = r $ ,我們可以檢查是否 $ c \cdot y = d \cdot x $ . 如果 $ x $ 是一個盲版本[Math Processing Error] $ c $ , 和[Math Processing Error] $ y $ 是一個盲版本[Math Processing Error] $ d $ ,那麼這個檢查給了我們 $ c \cdot d \cdot r^n = d \cdot c \cdot r^n $ ,或者換句話說,平等成立。

另外,你問:

由於乘以[數學處理錯誤] $ s $ “應該”足夠大以觸發模環繞,似乎是連續的 $ s^i $ values 不會給出任何關於之前的任何資訊 $ s^k,k<i $ (從而保護所有密文的安全性)。這個對嗎?

這也是不正確的。給定 $ c \cdot s^2 $ 和 $ c \cdot s $ , 攻擊者可以恢復 $ c $ 通過計算:

$$ (c \cdot s^2)^{-1} \cdot (c \cdot s)^2 = c $$ $ (c \cdot s^2)^{-1} $ 是的倒數 $ c \cdot s^2 $ 模組[Math Processing Error] $ n^2 $ ,它可以計算,只要 $ c \cdot s^2 $ 相對質數[Math Processing Error] $ n^2 $

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