Elliptic-Curves

基於 Schnorr 的 ZK 方案

  • May 21, 2022

**TL;DR:**這絕對行不通,並帶來巨大的安全風險。無論如何都要發布它,以防我錯過了其他威脅或勸阻任何其他提出這個想法的人。

你好!我對密碼學有點陌生。我開始涉足零知識計劃。對於我的一個小項目,我打算將到目前為止所學的知識付諸實踐,我提出了一個協議,我很想知道它是否好(即安全、真正非互動式和 ZK 等)。它幾乎是在重用 Schnorr 簽名構造和驗證協議。

設置

  • 玩家是AliceBobCrowd
  • 所有參與者都同意使用某個橢圓曲線的加密安全循環子群,生成器 $ G $ .
  • Bob 有一個公鑰/私鑰對 ( $ b $ , $ B=bG $ ).

客觀的

愛麗絲有一個秘密 $ s $ ,她通過宣佈公開承諾 $ S $ (構造為 $ S=sG $ ).

Bob 想向 Crowd 中的任何成員證明他知道 $ s $ ,但沒有透露任何關於 $ s $ (ZK)。另外,他希望他的證明是非互動式的,並且可以被 Crowd 中的任何懷疑者重複使用。

協議

  1. 愛麗絲公開宣布 $ S $ .
  2. 鮑勃聲稱知道 $ s $ 並送出證明 $ p=s-b $ .
  3. 人群將其視為有效證明 $ pG+B=S $ .

基本原理

  1. 為了讓 Bob 能夠構造一個有效的 $ p=s-b $ 隨意,他必須知道 $ s $ . 他知道驗證涉及刪除 $ -b $ 部分,所以不知道 $ s $ 意味著無法結束 $ S $ 到底。
  2. Bob 沒有透露任何關於 $ s $ 因為它被加法掩蓋了 $ -b $ . 因為沒有人知道 $ b $ ,它基本上均勻地隨機化這些值。
  3. 人群知道 Bob 實際上知道,因為生成證明涉及知道 $ b $ 也 $ s $ 對於與第一點類似的原理。如果有人知道 $ s $ 但不是 $ b $ ,他們無法減去正確的金額 $ -b $ 這是在驗證過程中恢復的,它的最終結果不會是 $ S $ .

問題

  • 這是一個有效的非智能 ZK 方案嗎?
  • 如果是這樣,它是一個好人嗎?
  • 與這種方案相比,使用 zkSNARKs 是否有任何優勢,例如,使用者知道單詞的雜湊值以及與自己的公鑰連接的單詞的雜湊值?

警告

這絕對行不通。這是非常危險的,因為任何證明者(在這種情況下是鮑勃)都可能洩露他們的私鑰:任何其他知道的玩家 $ s $ (在這種情況下,愛麗絲,以及任何其他獲得 $ s $ 無論如何)可以做 $ b = s - p $ . 在 Schnorr 簽名方案中,有一個因素伴隨著 $ b $ . 但是這個因素是眾所周知的,因為它被用於驗證協議,因此無法保護 $ b $ 在這種情況下。我很高興我能從中吸取教訓的關鍵要點是,在 Schnorr 協議中,保持這一點至關重要 $ k $ 安全的。

考慮一個對消息進行簽名的正常 Schnorr 簽名的等效變體 $ m $ . 我假設 $ s $ 是一個足夠高熵的秘密,因此 $ S $ 不能被蠻力強迫。

簽名將是對 $ (B=bG,\ p=c\cdot s-b) $ . 它將通過檢查來驗證 $ B\overset{?}{=}cS-pG $ , 在哪裡 $ c = H(B \mathbin| m) $ .

你正在消除挑戰 $ c $ ,所以第一個缺點是您不再能夠簽署消息。你只能證明你知道 $ s $ .

因此你有這對 $ (B=bG,\ p=s-b) $ , 驗證是 $ pG\overset{?}{=}S-B $ .

該挑戰也是 Fiat-Shamir 啟發式的一部分,該啟發式阻止了 $ B $ 從挑戰後計算 $ c $ 被選中。因此,如果 Bob 能夠聲明他的公鑰,就會出現問題 $ B $ 後 $ S $ 已宣布。Bob 可以簡單地隨機選擇一個 $ p $ 值,確定 $ B=S-pG $ ,並聲稱他的公鑰是 $ B $ . 這可以通過兩種方式解決: 1. Bob 需要聲明 $ B $ 之前 $ S $ 被宣布。2. Bob 需要提供簽名證明知識 $ b $ 這樣 $ B\overset{?}{=}bG $ .

假設 Bob 的公鑰是在之前聲明的 $ S $ 被宣布,因此您確實有一種有效的方式來證明 $ s $ . 正如您所指出的,愛麗絲可以輕鬆地了解鮑勃的私鑰 $ b $ . 因此這不符合零知識的定義,即要求“不透露資訊本身或任何附加資訊”。

因此,您的構造在定義上類似於“適配器簽名”,因為“適配器簽名方案可以驗證消息,但同時會向某些方洩露秘密”。您的方案不簽署消息,但它確實證明了 $ s $ 在可驗證的洩漏時 $ b $ 給愛麗絲。

請注意,您的方案也可能存在第二個秘密的問題 $ s’ $ ,並且出於某種原因 $ s’-s $ 變得眾所周知。

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