Elgamal-Encryption

分佈式密碼學中私鑰正確構造的證明

  • September 12, 2013

指數 ElGamal 加密方案中,密鑰生成以分佈式方式在 $ n $ 受託人 我們擁有每個受託人 $ i $ (在哪裡 $ 1 \leq i \leq n $ ):

  1. 選擇一個私鑰共享 $ x_i \in \mathbb{Z}_q^{\star} $ .
  2. 計算公鑰共享 $ h_i = g^{x_i} \mbox{ mod } p $ , 在哪裡 $ g $ 是群的生成器。

然後,密碼系統的公鑰計算為 $ h=h_1 \cdot \ldots \cdot h_n \mbox{ mod } p $ ,而密碼系統的密鑰可以被認為是 $ x=\sum_{i=1}^n x_i $ . 顯然,使用此設置所有共享 $ x_i $ 解密任何密文都需要密鑰,因此任何受託人都無法自行解密密文。

在與我的問題無關的其他一些事情中,我們通常有每個受託人 $ i $ 被要求證明 $ h_i $ 構造正確(也就是說, $ x_i= \log_g h_i $ )。這通常通過 Schnorr 知識證明來證明。正如我在文獻中所讀到的那樣,要求受託人證明這樣的事情的目的是防止受託人建構他的公鑰份額 $ h_i $ 作為其他受託人的公鑰的函式。

**我的問題是:**這樣做有什麼危險?也就是說,受託人可以通過建構 $ h_i $ 作為其他受託人的公鑰的函式,如果他仍然不知道可以讓他自己解密密文的私鑰?

如果您不進行此驗證,可能會發生以下情況:

假設 Alice、Bob 和公司誠實地生成他們的公鑰份額, $ h_2, h_3, …, h_n $

現在,Snidely Whiplash(也是受託人)是最後一個貢獻他的份額的人,他選擇了一個私鑰 $ x_{evil} $ 併計算 $ h_{evil} = g^{x_{evil}} $ . 然而,與其分享 $ h_{evil} $ 作為他的份額,他計算 $ h_1 = h_{evil} \cdot ( h_2 \cdot h_3 \cdot … \cdot h_n)^{-1} $ , 並提供 $ h_1 $ 作為他的份額。

然後,當我們計算公鑰時,我們得到 $ h = h_{evil} \cdot ( h_2 \cdot h_3 \cdot … \cdot h_n)^{-1} \cdot h_2 \cdot h_3 \cdot … \cdot h_n = h_{evil} $

因此,Snidely 能夠解密使用此公鑰加密的任何消息,而無需其他任何人的幫助。

要求 Snidely(和其他所有人)證明他們知道他們份額的離散對數可以防止這種情況發生,因為 Snidely 不知道 $ log_g h_1 $

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