Authentication
零知識證明應用
假設我有一個秘密“X”。它可以用作確定性隨機數生成器的種子以生成數字“Y”。有什麼方法可以向其他人證明,我有秘密“X”,它生成了這個數字“Y”,而沒有使用零知識證明(例如 Schnorr 的協議)洩露秘密“X”。
所以讓我們假設你有這個功能 $ f $ ,這是公知的,並且您發布該值 $ y = f(x) $ . 然後你想證明你知道 $ x $ . 你說 $ f $ 是一個確定性隨機數生成器(我猜你的意思是一個 CSPRNG) - 但從給定的資訊我猜它是單向的很重要?
無論如何,有兩種情況 $ f $ :
- $ f $ 在代數結構中定義,如有限群/環/域,可以表示為多項式,具有結構保持屬性(如雙射)等。然後可能為該特定函式創建一個優雅的知識證明,類似施諾爾的協議。但是對於所有可能的功能沒有包羅萬象的方法 $ f $ ,並且您可能無法在不透露的情況下找到適當的知識證明 $ x $ - 這一切都取決於功能。
- $ f $ 實際上是非代數的,例如二進制輸入和二進制運算,並且它很可能不保留任何類型的結構,例如實際的散列函式和 CSPRNG。那麼下面的論文可能會告訴您如何實現這一點:使用亂碼電路的零知識:如何有效地證明非代數語句,作者 Jawurek、Kerschbaum 和 Orlandi(2013 年)。SHA256 是其中的一個例子——然而,這是一種與 Schnorr 的辨識協議截然不同的知識證明。當然,在這種情況下,它也將完全取決於 $ f $ ,如果這行得通 - 如果你願意接受它的成本。論文中的範例大約需要 5 秒來證明 SHA256 原像的知識。