使用代數 MAC 驗證 NIZK 證明
論文Algebraic MACs and Keyed-Verification Anonymous Credentials包括一種使用代數 MAC 實例化 NIZK 證明的方法。這在附錄 E 中給出,該 NIZK 是
Show
協議的一部分。我理解 中給出的證明生成,E.1
其中協議輸出證明P。雜湊 $ c $ 在P中給出為:$ c = H(param||{C_{m_i}}{i=1}^{n}||C{u^\prime}||{\tilde{C}{m_i}}{i=1}^{n}||\tilde{V}) $
但我不明白 . 中給出的證明驗證部分
E.2
。特別是,我不明白 $ c^\prime $ 給出為:$ c = H(param||{C_{m_i}}{i=1}^{n}||C{u^\prime}||{C_{m_i}g^{s_{m_i}}h^{s_{z_i}}}{i=1}^{n}||VX^{s{z_1}}…X^{s_{z_n}}g^{s_r}) $
驗證者檢查是否 $ c = c^\prime $ . 但是,即使一切都正確,我也看不出它們如何計算為相等。前3部分建設 $ c^\prime $ 具有相同的元素 $ c $ ,所以為了使它們相等,應該滿足下面的特定方程。
$ {\tilde{C}{m_i}}{i=1}^{n} = {C_{m_i}g^{s_{m_i}}h^{s_{z_i}}}_{i=1}^{n} $ , 和
$ \tilde{V} = VX^{s_{z_1}}…X^{s_{z_n}}g^{s_r} $
但是在展開任一方程的左側時,它們並不等同於它們對應的右側。我在哪裡錯了?
是的,你說得對,這是一個錯誤。幾個月前我自己發現了同樣的事情,並給作者發了電子郵件。Greg Zaverucha 回應並同意我的看法。更具體地說,這是他同意的:
" 你好,我一直在研究https://eprint.iacr.org/2013/516.pdf和附錄 E.2 第 3(b) 部分中的驗證算法,似乎有錯誤,想檢查一下與你:
為了讓驗證者重建挑戰雜湊 $ c $ ,您連接原像中的項目,第 4 個項目(或項目集)給出為:
$$ C_{m_{i}} . g^{s_{m_i}} . h^ {s_{z_i}} \quad \forall i $$
但這似乎不是建構項目的正確方法 $ C_{m_i} $ ~ 在證明者的挑戰雜湊原像中。據我所知重建的正確方法 $ C_{m_i} $ 〜條款將是:
$$ (C_{m_i})^c . u^{s_{m_i}} . h^{s_{z_i}} \quad \forall i $$
(在哪裡 $ c $ 小寫當然是證明者提供的挑戰雜湊)。"
我通常根據與 sigma 協議的類比來弄清楚它應該是什麼,但已經有一段時間了;希望你能看到這個版本是有意義的。
附加編輯:今天我再次研究了這個,並意識到你還說雜湊原像構造的最後一個元素也沒有驗證。仔細看我可以看到有一個非常相似的問題: $ V $ 應該替換為 $ V^c $ .