0Pricing
Cryptology Academy · レッスン

ΣプロトコルとSchnorr識別

Σプロトコルを実装し、Schnorr証明の仕組みを追います。

「ΣプロトコルとSchnorr識別」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

Σプロトコルの構造

Σプロトコルは3つのメッセージで構成されます。(1) コミット:証明者がランダムな値へのコミットメントを送信します。(2) チャレンジ:検証者がランダムなチャレンジを送信します。(3) 応答:証明者がチャレンジと秘密から計算した応答を送信します。検証者は証明を受理または拒否します。

Schnorr識別

証明者は秘密x(秘密鍵)を知っており、公開鍵はg^x mod pです(楕円曲線上では点X = x*Gです)。目標は、xを明かさずにxを知っていることを証明することです。これは離散対数の知識証明です。

Schnorrプロトコルの手順

(1) 証明者がランダムなrを選び、コミットメントR = r*Gを送信します。(2) 検証者がチャレンジc(ランダムな整数)を送信します。(3) 証明者が応答s = r + c*xを送信します。(4) 検証者がs*G == R + c*Xを確認します。正しければ受理します。証明者はxを知っており、応答sはxがなければ計算できません。

安全性の分析

完全性:正直な証明者は常にs*G = r*G + c*x*G = R + c*Xを満たします。健全性:同じRに対して異なるチャレンジc、c'を使った2つのトランスクリプトからは、s、s'が得られ、x = (s-s')/(c-c')を復元できます。したがって、だます側は同じRに対して2つの有効な応答を生成できません。

Schnorrのゼロ知識性

シミュレーター(xを知らない):ランダムなsとcを選び、R = s*G - c*Xと設定します。この(R, c, s)は、有効なトランスクリプトと同じ分布になります。検証者は、実際のトランスクリプトとシミュレーションされたトランスクリプトを区別できません。Schnorrは正直な検証者に対するゼロ知識性を持ちます。

Fiat-Shamir変換

Schnorrを非対話型にするには、検証者のチャレンジをc = Hash(R || message)に置き換えます。証明者は自分でcを計算して応答します。その結果、誰でも検証できる2要素の証明(R, s)が得られます。これがSchnorr署名方式です。

Schnorr署名

Sign(x, m): r ← random; R = r*G; c = Hash(R||m); s = r + c*x. Signature = (R, s). Verify: s*G == R + Hash(R||m)*X. コンパクトで(P-256では64バイト)、バッチ検証が可能であり、ROMで安全性が証明されています。Bitcoin Taproot(BIP-340)で採用されています。

Pedersenコミットメント

C = r*G + v*Hです。ここでHは2つ目の独立な生成元です。乱数rを使って値vにコミットします。拘束性:異なるvに対して開示することはできません(離散対数の困難性によります)。秘匿性:Cは一様分布します。Schnorrベースの範囲証明やBulletproofsで使用されます。

合成:AND証明

x1 AND x2の知識を同時に証明するには、同じチャレンジを使って2つのSchnorrプロトコルを実行します(Fiat-Shamirによってチャレンジを共有します)。検証者は、両方のサブ証明が有効な場合にのみ受理します。これにより、1回の対話で複数の命題を証明できます。

合成:OR証明

どちらを知っているかを明かさずに、x1 OR x2の知識を証明します。一方の分岐ではシミュレーターを使って偽のトランスクリプトを計算し、両方の分岐にチャレンジを分割します。検証者には、実際のチャレンジの合計と一致する、どちらも有効に見える2つのトランスクリプトが示されます。これは「リング署名」と呼ばれます。

応用例

Schnorr ID:電子パスポート(PACEプロトコル)。Schnorr署名:Bitcoin Taproot、Monero(RingCTではSchnorr OR証明を使用)、Signal Protocol(X3DH鍵合意)。Pedersenコミットメント:Confidential Transactions、Bulletproofs、Zcash Saplingノート暗号化。

確認問題

Schnorr識別プロトコルでは、最後の手順で検証者は何を確認しますか?

まとめ

Σプロトコルは、コミット、チャレンジ、応答で構成されます。Schnorrは離散対数の知識を証明します。Fiat-Shamirにより非対話型になります(Schnorr署名)。次は、簡潔な非対話型証明を実現するzk-SNARKです。

よくある質問

「ΣプロトコルとSchnorr識別」レッスンは無料ですか?

はい。「ΣプロトコルとSchnorr識別」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「ΣプロトコルとSchnorr識別」で何を学びますか?

Σプロトコルを実装し、Schnorr証明の仕組みを追います。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ΣプロトコルとSchnorr識別」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ZKPの直観:アリババの洞窟
  2. ΣプロトコルとSchnorr識別
  3. zk-SNARKs:簡潔な非対話型証明
  4. ZKPの応用:ZKロールアップとプライバシーコイン
← Cryptology Academyに戻る