Commitments

允許否定證明的承諾

  • January 24, 2019

我需要創建對值X的承諾,以便我可以提供證據證明該承諾是針對X的,或者證明該承諾不是針對某個其他給定值Y != X的證據。

如果我使用帶有致盲因子的簡單雜湊

C = H(BF | X)

我可以通過揭示BF,X來提供證據,並通過揭示 BF 來提供**X!=Y的“否定證明” ,但這會破壞致盲因子的目的,使 X 可以猜測,因為它的域很小。

有沒有其他方法可以創建這樣的承諾?

顯而易見的想法是使用 Pedersen 承諾。這裡的想法是,在某些 DLog 問題很困難的組中,我們有兩個未知關係的生成器 $ g, h $ ,並承諾 $ x $ 是價值 $ g^x h^r $ (對於一些隨機 $ r $ ).

透露承諾很容易;你只需給出值 $ x, r $ (驗證者可以檢查)。

證明一個值 $ x’ $ 不是承諾的承諾價值 $ g^x h^r $ ,證明者選擇隨機值 $ s, t $ ,並發布值 $ h^t $ ,以及他知道 dlog 的零知識證明 $ h^t $ 到基地 $ h $ (標準的選擇證明工作)。然後,雙方計算 $ g^{-x’} h^t (g^x h^r) = g^{x - x’} h^{r+t} $ , 我們稱之為 $ j $ . 現在,證明者計算 $ j^s = g^{s(x-x’)} h^{s(r+t)} $ ,並與值一起輸出 $ s(x-x’) $ , $ s(r+t) $ . 他還輸出了一個零知識證明,證明他知道 $ j^s $ 到基地 $ j $ .

驗證者可以檢查 $ s(x-x’) \ne 0 $ ,即值 $ s(x-x’) $ , $ s(r+t) $ 組成輸出值 $ j^s $ ,並且知識的證明 $ s, t $ 是有效的。

然後,驗證者知道證明者知道值 $ s(x - x’) $ 並且它不是零,因此 $ x - x’ \ne 0 $ 所以無論如何 $ x $ 是,它不是 $ x’ $

還有一些標準的範圍技術也可以使用;我相信這更直接……

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