Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fiat-Shamir変換と注意点

 Fiat-Shamir変換と注意点

GBECの解説動画の資料です。
https://goblockchain.network/2025/08/fiat-shamir/

Avatar for shigeyuki azuchi

shigeyuki azuchi

August 06, 2025
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. 1 Fiat-Shamir変換
 対話型証明プロトコルをハッシュ関数を使って非対話型の証明プロトコルに変換する手法 
 
 【対話型証明】
 
 
 
 


    
 
 
 
 
 例:Schnorrの非対話型ゼロ知識証明(RFC8235) 
 https://techmedia-think.hatenablog.com/entry/2018/06/16/182735 
 コミットメントを送信
 チャレンジを送信
 チャレンジを加味した 
 レスポンスを返信
 証明者
 検証者
 チャレンジの値を検証者が提供するのではなく、
 証明するステートメントの公開情報から計算した
 ハッシュ値に置き換えることで非対話型に変換する

  2. 2 Fiat-Shamir変換の注意点
 【RFC8235の証明プロセス】 
 証明者のアリスは、P = aGとなるaの知識があることをボブに証明する場合 
 
 1.

    アリスはランダムな値vを選択し、V = vGを計算する 
 2. アリスは、c = H(G || V || P || UserID || OtherInfo)を計算しチャレンジとし、 
 3. r = v - c * aを計算し、 
 4. (P, V, r)をボブに送る 
 5. ボブは、(P, V, r, UserID, OtherInfo)からcを計算してV = rG + cPが成立するかを検証する 
 
 チャレンジの計算にVが含まれない場合 
 1. アリスは、c = H(G || P || UserID || OtherInfo)を計算しチャレンジとし、 
 2. rをランダムな値とし、 
 3. V = rG + cPを計算し、 
 4. (P, V, r)をボブに送る 
 5. ボブは、(P, V, r, UserID, OtherInfo)からcを計算してV = rG + cPが成立するかを検証する 
 ※ rはaを使用することなく計算され、aの知識の証明にはならない。 
 

  3. 3 Fiat-Shamir変換の注意点
 
 証明時に公開する情報すべてをチャレンジの計算に含めること!
 
 【脆弱性Frozen Heart 】
  Fiat-Shamir変換の誤った実装により証明システムの健全性が損なわれ、証明の偽造が可能に 


    
 • Bulletproofs
 • Plonk
 • SnarkJS
 • grark
 • ckb-zkp
 • zk-paillier
 
 https://blog.trailofbits.com/2022/04/13/part-1-coordinated-disclosure-of-vulnerabilities-affecting-girault-bull etproofs-and-plonk/