Zero-Knowledge-Proofs

為什麼說“zk-SNARKs 需要一個可信的設置”才能工作?

  • April 19, 2021

在這種情況下,“受信任的設置”是什麼意思?人們經常說 zk-STARKs 和 Bulletproofs 不需要可信設置。zk-STARKs 和 Bulletproofs 如何避免對可信設置的需求?

zk-Snarks 需要可信的設置是不正確的。只是所有依賴於配對的 zk-Snarks(據我所知)都依賴於一個“活板門”,它的知識使該方案不安全。而在 2019 年之前,這些是唯一已知的 zk-Snarks。

zk-Starks 不依賴配對。防彈衣也不行。Bulletproofs 可以說不是S narks,因為驗證時間並不簡潔。

DARK 方案為您提供了一個無需信任的 zk-Snark ( https://eprint.iacr.org/2019/1229 )。最近,在本文中發現了一個漏洞,但發現該漏洞的密碼學家能夠修改該方案,使其現在是安全的,並且取決於比以前更弱的密碼假設:https ://eprint.iacr.org/2021/358 .

零知識協議(非常粗略地)分三個步驟執行。

  1. 設置
  2. 證明
  3. 核實

(1) 需要執行一次,並且在此設置階段完成後,通常可以使用設置的輸出無限期地重複 (2) 和 (3)。

那些“可信設置”和“不可信設置”協議之間的區別在於步驟 1。在這第一​​個設置步驟中,證明者和驗證者就一些常見的“公共”參數達成一致,他們將需要這些參數來執行計算。“同意參數”通常意味著另一方強加了這組參數。

讓我們舉一個非常具體的例子,Schnorr 協議(它不是零知識,但這並不重要):

  1. 設置:證明者和驗證者在一個欄位上達成一致 $ \mathbb{F}_p $ 和組 $ \mathbb{G}_q $ 他們想要使用的。他們還同意一個共同的基礎 $ G\in \mathbb{G}_q $ 為他們的計算。
  2. 證明知識 $ x $ 英石 $ xG=Y $ . 隨機選擇 $ k\in \mathbb{F}_q $ , 發送 $ K=kG $ 驗證者,接受挑戰 $ e $ , 回复 $ s=k-xe $ .
  3. 核實 $ sG+eY=K $

要看到 Schnorr 協議沒有可信設置:所有公共參數都是隨機挑選的,它們之間沒有“秘密關係”。參數中需要“不信任”。


@Mathdropout已經解釋說 zkSNARK 不一定需要受信任的設置。它不在定義中(“簡潔的知識論證”不讀為“具有可信設置”),但最成熟的 SNARK 實例似乎直到最近才具有此屬性。

要了解 Bulletproofs(它不是​​ SNARK )如何不需要受信任的設置,您可以查看它的公共參數。它們看起來很像 Schnorr 協議的公共參數:它們有一個欄位 $ \mathbb{F}_p $ , 一組 $ \mathbb{G}_q $ ,以及幾組群生成器 $ G, H, G_1, \dots, G_n, H_1, \dots, H_n \in \mathbb{G}_q $ . 生成器之間不需要建立關係;它們可以隨機生成。例如,Dalek Bulletproofs 使用 Keccak 海綿生成“無限”數量的隨機基點

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