Signature

申請證明F(×)F(X)f(x)不公開輸入XXx

  • October 13, 2019

我在網路中有三個節點: $ \mathcal{S} $ , $ \mathcal{T} $ , $ \mathcal{R} $ .

$ \mathcal{S} $ 供應數據 $ x $ 至 $ \mathcal{T} $ . $ x $ 如此簽署 $ \mathcal{T} $ 知道它實際上來自 $ \mathcal{S} $ . $ \mathcal{T} $ 計算 $ f(x)=y $ 並發送 $ y $ 至 $ \mathcal{R} $ . $ \mathcal{R} $ 使用結果 $ y $ 在一些計算中。 $ f $ 在程式碼中實現並且程式碼是公開的。

:有沒有辦法 $ \mathcal{R} $ 肯定知道 $ y $ 是正確應用的結果 $ f $ 由提供的數據 $ \mathcal{S} $ , 不透露 $ x $ ?

換句話說:可以 $ \mathcal{T} $ 證明它正確應用 $ f $ 計算時對可信數據 $ y $ , 不透露 $ x $ ?

使用zk-SNARK,證明以下陳述:

私人數據: $ x $ . 公開資料: $ y, pk, \sigma $

我知道一個 $ x $ 這樣 $ f(x) = y \land \textsf{Ver}(pk, x, \sigma) $

在哪裡 $ \textsf{Ver} $ 是安全簽名方案驗證者算法, $ x $ 是秘密輸入, $ y $ 是的輸出 $ f $ 應用於 $ x $ , $ \sigma $ 是簽名 $ \mathcal{S} $ 上 $ x $ , 和 $ pk $ 是的公鑰 $ \mathcal{S} $ .

只要您的簽名方案不會在簽名中洩露您的消息內容 $ \sigma $ ,您的方案將是零知識。如果是這樣,您可以在將其提供給協議之前對其進行雜湊處理:

私人數據: $ x, \sigma $ . 公開資料: $ y, pk, \sigma’ $

我知道一個 $ x $ 這樣 $ f(x) = y \land \textsf{Ver}(pk, x, \sigma) \land H(\sigma) = \sigma’ $

在哪裡 $ \sigma’ $ 是簽名的雜湊。

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