Hash

使用 Schnorr 協議和僅比較雜湊函式以證明知道某事之間的區別?

  • February 4, 2021

我正在研究 Schnorr 協議,我只是想出了一個案例。

例如,我是 Prover 並且有一個秘密 $ x $ . 通過使用 Schnorr 協議,我創建 $ h=g^x \bmod p $ 並保存 $ h $ 到公共場所。

當 Verifier 需要向 Prover 證明時,

  1. 證明者向驗證者發送承諾 $ c = g^r \bmod p $ 在哪裡 $ r $ 是一個隨機值
  2. 驗證者向證明者發送挑戰 $ t $ 是一個隨機值
  3. 證明者向驗證者發送響應 $ s = r + t,x $
  4. 驗證者接受 iff $ g^s \bmod p= c,h^t\bmod p $

例如,如果我儲存雜湊值有什麼區別 $ h = \operatorname{sha512}(x) $ 到公共場所,如果證明者想證明他知道秘密 $ x $ ,他只需要發送 $ h’ $ 驗證者和驗證者比較 if $ h = h’ $ 站立。

我知道不誠實的證明者可以直接將雜湊發送給驗證者以欺騙驗證者。除此之外,還有什麼不同嗎?似乎使用雜湊仍然可以證明證明者知道秘密 $ x $ .

該問題沒有正確描述 Schnorr 協議。這是(限制為乘法子群 $ \Bbb Z_p^* $ ,因為這是問題)。

它選擇了一個大素數 $ q $ (例如 $ >\approx 2^{512} $ ) 和一個更大的素數 $ p $ (例如 $ >\approx 2^{8192} $ ) 和 $ p=2,a,q+1 $ 對於某個整數 $ a\ge1 $ (和 $ p $ 不是促進SNFS的特殊形式),以及一個整數 $ g $ 有秩序的 $ q $ ,即與 $ g^q\bmod p=1 $ 和 $ g\bmod p\ne1 $ (一個這樣的 $ g $ 是 $ 4^a\bmod p $ )。參數 $ p $ , $ q $ , $ g $ 是公開的。

一個隨機的秘密 $ x\in[0,q) $ 為證明者所知,他發布 $ h=g^x\bmod p $ . 以上參數選擇 $ p $ , $ q $ , $ g $ 是這樣的,找到的離散對數問題 $ x $ 給定 $ h $ 相信很難。

該協議的目標是驗證者正確地確信一方知道 $ x $ 和 $ h=g^x\bmod p $ 參與協議,不透露 $ x $ 對證明者或對手,包括主動(特別是,對手能夠冒充驗證者的證明者,反之亦然)。朝著這個方向:

  1. 證明者抽取一個隨機值 $ r\in[0,q) $ 並發送承諾 $ c=g^r\bmod p $
  2. 驗證者抽取隨機值 $ t\in[0,q) $ 並將該挑戰發送給證明者。
  3. 證明者計算並發送響應 $ s=r+t,x\bmod q $
  4. 驗證者是證明者知道的內容 $ x $ 當且當 $ g^s\bmod p=c,h^t\bmod p $

這種等式通常成立,因為 $ s=r+t,x\bmod q $ 暗示 $ \exists k,\ s+k,q=r+t,x $ 所以 $ g^s\equiv g^{r+t,x-k,q}\equiv g^r,g^{t,x},g^{-k,q}\equiv c,(g^x)^t,(g^q)^{-k}\equiv c,h^t,1^{-k}\equiv c,h^t\pmod p $ .

可以看出,打破這個協議就相當於解決了DLP。


例如,如果我儲存雜湊值有什麼區別 $ h=\operatorname{SHA-512}(x) $ 到公共場所,如果證明者想證明他知道秘密 $ x $ ,他只需要發送 $ h’ $ 驗證者和驗證者比較 if $ h=h’ $ 站立。

提議的協議未能向驗證者證明另一方知道 $ x $ 參與協議。論據:因為 $ h $ 在公共場所,對手不知道 $ x $ 可以得到 $ h $ ,發送為 $ h’ $ 就像證明者知道 $ x $ 應該這樣做,從而通過驗證者的測試。

如果證明者和驗證者都知道 $ x $ , 一個解決方案可以使用 $ \operatorname{SHA-512} $ 在質詢-響應協議中:驗證者隨機抽取並發送 $ t $ ,證明者計算並發送 $ s=\operatorname{SHA-512}(t\mathbin|x) $ , 驗證者檢查 $ s=\operatorname{SHA-512}(t\mathbin|x) $ .

Schnorr 協議的優點是無需驗證者知道即可實現相同的目標 $ x $ . 特別是在基於 MAC 的協議中,驗證者必須保持 $ x $ 秘密,即使對於誠實的驗證者來說也很難,而且對於 Schnorr 的協議來說不是必需的。

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