coperlm

coperlm

github

零知識證明學習

241219 閱讀《Chameleon-Hashes with Ephemeral Trapdoors And Applications to Invisible Sanitizable Signatures》遇到了 NIZKPoK,故學習一下


NIZKPoK#

Non-Interactive Zero-Knowledge Proof 非互動零知識證明

论文中的体现#

Generate πNIZKPoK{(x):h=gx}if π is not valid,return\begin{align} &Generate\ \pi\leftarrow NIZKPoK\{(x):h=g^x\}\\ &if\ \pi\ is\ not\ valid, return\perp \end{align}

解释#

證明者想要證明自己知道某個值 $x$,而不透露 $x$ 本身

Fiat-Shamir 變換(簡化的非互動證明)#

  1. 初始化:$g$ 和 $h$ 是公開的參數,$x$ 是秘密(證明者知道它)
  2. 生成證明:隨機選擇一個隨機值 $r$,計算承諾值 $t=h*g^r$
  3. 計算挑戰:生成一個挑戰 $c$(通常通過哈希函數生成)
  4. 計算響應:計算 $z=r+c*x$
  5. 發送證明:發送三元組 $(t,c,z)$
  6. 驗證:驗證者檢查是否滿足 $g^z=t*h^c$

實驗代碼#

完整代碼

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。