申請證明F(×)F(X)f(x)不公開輸入XXx
我在網路中有三個節點: $ \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’ $ 是簽名的雜湊。