Homomorphic-Encryption

如何在 benaloh 的方案下添加加密數字?

  • September 3, 2020

是否可以使用同態加密來減/乘數字的答案中?它說:

要添加兩個加密數字,可以使用 Benaloh、Damgård-Jurik 或其他幾種已知的部分同態密碼系統。(許多這些“僅加法”密碼系統也可以調整以支持減法。

但是我無法用 Benaloh 的方案寫下將兩個加密數字相加的方法,也無法在論壇上找到這方面的數學。

那麼,如何在不解密的情況下對在 benaloh 方案下加密的數字求和呢?

這裡,它說 Benaloh 方案中的加密採用以下形式:

$$ E_r(m) = y^mu^r\bmod n $$ 我實際上會把它寫成: $$ E_r(m;u) = y^mu^r\bmod n $$ 在哪裡 $ m $ 是消息(在 $ \mathbb{Z}_r $ ) 被加密,並且 $ u\in\mathbb{Z}_n^* $ 應該是均勻隨機的。其他參數 $ y, r, n $ 當然對於該方案很重要,但對於討論該方案的加性同態性質並不重要。

這裡的訣竅是要注意消息是“在指數中”的。因此,如果我們想添加消息,我們將不得不乘以密文。如果我們這樣做,我們會看到: $$ E_r(m_0)E_r(m_1) = (y^{m_0}u_0^r)(y^{m_1}u_1^r) = y^{m_0+m_1}(u_0u_1)^r\bmod n = E_r(m_0+m_1;u_0u_1) $$ 這將是一個有效的 Benaloh 密文 $ m_0+m_1 $ (我們在技術上應該驗證 $ u_0u_1 $ 是均勻隨機分佈在 $ \mathbb{Z}_n^* $ ,但這並不難)。

請注意,此同態屬性與(未填充的)RSA 的同態屬性非常相似,其中密文采用以下形式 $ E(m) = m^e\bmod N $ . 當然,這裡的區別在於必須對 RSA 進行填充以確保安全,並且這種填充通常會刪除同態屬性。

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