如何為承諾價值做非會員證明?
假設給驗證者三個承諾 $ C_i=g^{m_i}h^{r_i}, i=1,2,3 $ . 現在證明者知道 $ m_i, r_i, i=1,2,3 $ 想證明 $ m_3\neq m_1\wedge m_3\neq m_2 $ . 具體來說,關係如下: $ {(m_i,r_i), i=1,2,3|C_i=g^{m_i}h^{r_i}\wedge m_3\neq m_1\wedge m_3\neq m_2)} $ . 一般關係可以寫成如下: $ {(m_i,r_i), i=1,2,..,n|C_i=g^{m_i}h^{r_i}, i=1,2,…,n\wedge m_n\notin{m_1,m_2,…,m_{n-1}})} $ . 有沒有可以證明這種一般關係的證明系統?一個微不足道的解決方案可能只是在做 $ n-1 $ 次不等式證明。有沒有更簡單的方法?有參考文獻嗎?謝謝。
如果您只關心致盲承諾(以防止暴力破解),並且不需要加法同態承諾,您可以執行以下操作:
證明者有一個密鑰對 $ (x, X=xG) $ , 並發佈公鑰 $ X $ .
對於集合的每個成員,證明者發布:
- $ C_i=H_p(m_i) + r_iG $ , 在哪裡 $ H_p(m_i) $ 意味著散列 $ m_i $ 並將結果解釋為有效的 EC 點。
- $ D_i=xH_p(m_i) $
- $ E_i=xC_i $
- DLEQ 證明 $ X $ 和 $ E_i $ 共享相同的私鑰 $ x $ 論點 $ G $ 和 $ C_i $
- 公鑰的簽名 $ (E_i-D_i) $ 在發電機上 $ G $ .
注意 $ E_i-D_i==xH_p(m_i)+xr_iG-xH_p(m_i)==xr_iG $ .
DLEQ 證明(第 4 項)將證明 $ E_i $ 計算得當。我們在這裡所做的是使用一個可驗證的偽隨機函式(VPRF),只有證明者可以查詢,但任何觀察者都可以驗證。
只有在以下情況下才能簽名(第 5 項) $ D_i $ 也已正確計算,因為簽名只能在生成器上進行 $ G $ 如果沒有 $ H_p() $ 剩餘的分量(因為 EC 離散對數 wrt $ G $ 對於任何輸出都不可知 $ H_p() $ ).
最終結果是我們創建了一個 VPRF 輸出 $ D_i $ 對於每條消息 $ m_i $ ,並證明每個 VPRF 輸出都已正確聲明。
現在很明顯,如果對同一消息有任何承諾,因為它們將共享相同的資訊 $ D_i $ 價值觀。