Commitments

我是否可以在不透露 r 的情況下打開 pedersen 承諾?

  • April 12, 2020

有設置 $ p $ 和 $ q $ 在哪裡 $ p = 2q + 1 $ , 和 $ g $ 和 $ h $ 是有順序的生成器 $ q $ .

在 Pedersen 承諾中,我承諾價值 m $ c=g^m h^r \bmod p $ ,然後通過顯示解除送出 $ (m, r) $ . $ c’ = c $ ,則承諾成立。

我想知道我是否不需要透露 $ r $ 驗證者,而不是我可以透露 $ m $ 並建構知識證明 $ r $ 得到樣本結果。作為 $ s = h^r $ 如果 $ s = {{c}\over{g^m}} $ , 我可以用 Schnorr 協議來證明我知道 $ r $ 在 $ s = h^r $ 為了 $ s = {{c}\over{g^m}} $ .

如果驗證成立,意味著證明者知道 $ r $ 和 $ m $ 在一個(戀愛)關係中 $ c=g^m h^r $ . 我對嗎?


如果答案是肯定的,我想添加後續問題。

為了證明知識 $ r $ 在 $ s = h^r $ 為了 $ s = {{c}\over{g^m}} $ . 我可以使用 Schnorr 協議來建構證明。但是是否可以讓它只提供給指定的驗證者來驗證證明呢?

我讀過一篇關於指定驗證者簽名的論文,但它是關於在簽名上創建證明 $ s=m^x $ 在哪裡 $ m $ 是消息和 $ x $ 是簽名者的私鑰。

那麼是否有可能使 Schnorr 協議只能由具有已知公鑰的選定驗證者驗證?

那麼是否有可能使 Schnorr 協議只能由具有已知公鑰的選定驗證者驗證?

這是使用二維 Schnorr 證明的明顯方法;這是一個證明,給定 $ A^xB^y = C $ , 你知道 $ x, y $ . 這是正常 Schnorr 證明的直接擴展:

  • 證明者隨機選擇 $ r, s $ , 併計算 $ T = A^rB^s $ . 他還計算 $ t = \text{Hash}(T) $ 並發表 $ T $ , $ u = x + rt $ 和 $ v = y + st $ .
  • 驗證者檢查是否 $ A^uB^v = C T^t $

我們將表示 $ K $ 作為驗證者的公鑰,即她知道值 $ k $ 這樣 $ G^k = K $ .

然後,做一個 Selected Verifier Proof 來證明該承諾 $ C = G^m H^r $ 是價值 $ m $ ,證明者生成他知道值的二維 Schnorr 證明 $ x, y $ 這樣 $ H^x K^y = C G^{-m} $ . 有效的證明者可以生成這樣的證明,因為他知道這樣的一對 $ (x = r, y = 0) $ . 另一方面,驗證者無法說服其他任何人這證明了任何特定價值 $ m $ , 因為對於任何 $ m $ ,她可以構造一個 $ y $ 這使她能夠生成這樣的證明。


這是我想到的另一個想法;這似乎是一種指定驗證者 Schnorr 證明的方法:

  • 證明者想要證明一個值的知識 $ x $ 英石 $ A^x = B $ , 對於公眾 $ A, B $ . 我們將表示 $ K $ 作為驗證者的公鑰。
  • 證明者選擇兩個隨機值 $ r_1, r_2 $ , 併計算 $ T_1 = A^{r_1}, T_2 = K^{r_2} $ 和 $ U = G^{r_2} $ 併計算 $ t = T_1 + T_2 \bmod q $ (在哪裡 $ q $ 是子組的大小)。然後,他發布 $ T_1, U $ 和 $ u = x + r_1t $
  • 指定的驗證者使用她的私鑰 $ k $ 計算 $ T_2 = U^k $ , 和 $ t = T_1 + T_2 \bmod q $ . 然後,它像標準的 Schnorr 證明一樣進行,檢查是否 $ A^u = BT_1^t $

沒有人能在不知情的情況下驗證這個證明 $ k $ (因為他們無法計算 $ t $ )。指定的驗證者不知道其他人不知道 $ k $ ,因此證明者不能選擇 $ t $ 任意。並且,如果驗證者試圖轉發這個證明(可能通過轉發值 $ T $ ),這不起作用(即使她暴露了她的私鑰 $ k $ ),因為它是直接生成驗證 $ T_1, U, u $ 設置與知識 $ k $ (對於任意 $ A, B $ )

在你使用它之前,應該有人審查這個“指定的 Schnorr”證明;看起來它符合要求。這是“知識證明”部分的推理:假定的證明者可以設置任意 $ T_1 = A^c B^d $ (對於任意 $ c, d $ )。然而,在這種情況下,驗證方程是 $ A^{ckt-u}B^{dkt+1} = 1 $ ; 這只能滿足 $ dkt+1 \equiv 0 $ (但要設置值 $ d $ 適當地,證明者需要知道 $ k $ ); 否則,證明者會知道 $ x = (ckt-u)(dkt+1)^{-1} $ , 等知識 $ k $ (和 $ c, d $ ) 意味著知道離散對數。

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