0Pricing
Cryptology Academy · レッスン

分散鍵生成プロトコル

単一の参加者が秘密全体を知ることなく、参加者同士で共有鍵を生成できるDKGプロトコルを学びます。

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

DKG の目的と背景

分散鍵生成(DKG)は、閾値暗号における信頼されたディーラーの問題を解決します。DKG がなければ、中央の参加者が鍵ペアを生成してシェアを配布し、その過程で完全な秘密鍵を一時的に知る必要があります。DKG では、単一の参加者、さらにはプロトコルの調整役でさえ秘密鍵を知ることなく、プロトコルを通じて n 人の参加者が共同で公開鍵と秘密鍵のペアを生成できます。

Pedersen DKG(1991)

Pedersen DKG は、1991 年に発表された、初めて実用化された DKG プロトコルです。n 人の各参加者がランダムな秘密 s_i を生成し、それを共有するための可検証秘密分散(VSS)プロトコルを実行します。各参加者は、多項式の係数に対するコミットメントをブロードキャストします。全員が自分の寄与分を共有した後、結合された秘密はすべての s_i の値の和となり、各参加者はこの和のシェアを保持します。

構成要素としての Feldman VSS

Feldman VSS(Feldman による Verifiable Secret Sharing、1987 年)は、ほとんどの DKG プロトコルの中核となる構成要素です。ディーラーは、多項式の係数を群要素としてコミットします(C_j = g^{a_j} mod p)。シェア f(i) を受け取った各参加者は、g^{f(i)} が C_j^{i^j} の積と等しいことを確認することで、そのシェアをコミットメントと照合できます。これにより、ディーラーが誤ったシェアを送信した場合に検出できます。

Joint-Feldman DKG とその制限

Joint-Feldman DKG では、n 人の全参加者がそれぞれ自分の秘密のディーラーとなり、Feldman VSS を並行して実行します。その後、参加者は無効なシェアを受け取った場合に異議を申し立てます。最終的な鍵は、異議を申し立てられなかったディーラーの秘密の和です。しかし、Joint-Feldman DKG は、プロトコルのメッセージに基づいて参加者を適応的に侵害する攻撃者に対して安全ではありません。この弱点は Gennaro、Jarecki、Krawczyk、Rabin によって指摘されました。

GJKR セキュア DKG

GJKR DKG プロトコル(Gennaro、Jarecki、Krawczyk、Rabin、1999 年および 2007 年)は、Joint-Feldman の弱点に対処しました。GJKR は、Feldman VSS の代わりに Pedersen VSS(情報理論的に秘匿するコミットメント)を使用し、参加者が無効なシェアに異議を申し立てられる苦情ラウンドを追加しています。その結果得られる DKG は適応的な攻撃者に対して安全であり、安全な DKG の理論上の標準的な参照となりました。

DKG の通信ラウンド

GJKR DKG には 3 つのラウンドが必要です。コミットメントラウンド(各参加者が VSS コミットメントをブロードキャスト)、シェアラウンド(参加者同士がピアツーピアでシェアを送信)、苦情ラウンド(無効なシェアについて参加者が苦情をブロードキャスト)です。苦情を解決できなかった参加者は除外されます。4 つ目のラウンドでは、正当な参加者の寄与分を結合して、最終的な公開鍵と分散された秘密鍵シェアを生成します。

Ethereum バリデータ鍵における DKG

Ethereum のバリデータ鍵管理では、分散バリデータ技術(DVT)のために DKG が使用されます。EIP-4844 と DVT エコシステム(Obol Network、SSV Network)は、BLS12-381 上の閾値 BLS 署名を使用し、単一の運用者が完全なバリデータ鍵を知らなくても、バリデータ委員会がブロックに署名できるようにしています。これにより、バリデータの障害耐性が向上し、鍵の漏えいによるスラッシングのリスクが低減します。

DRAND 分散乱数ビーコン

DRAND は、予測不可能な乱数の生成に使われる分散乱数ビーコンで、Ethereum のビーコンチェーンでも使用されています。DRAND は、League of Entropy(Cloudflare、EPFL、Protocol Labs など)のノード群で DKG を実行し、閾値 BLS 鍵を生成します。各ラウンドで t-of-n のノードが部分署名を提供し、それらを組み合わせて予測不可能な乱数値を生成します。単一のノードが出力を意図的に偏らせたり予測したりすることはできません。

Schnorr と ECDSA における DKG

DKG は、ECDSA の閾値方式よりも Schnorr/EdDSA の閾値方式のほうがはるかに単純です。Schnorr の閾値方式では、分散された秘密鍵は単純に各参加者の秘密の和(x = x1 + x2 + ... + xn)であり、公開鍵は公開鍵シェアの和(X = X1 + X2 + ... + Xn)です。一方、ECDSA では非線形性があるため、DKG は乗法シェアを生成する必要があり、より複雑なプロトコルが必要になります。

鍵シェアのリフレッシュプロトコル

長期間使われる閾値鍵のシェアは、攻撃者が時間をかけて徐々に参加者を侵害すると、少しずつ危険にさらされる可能性があります。プロアクティブ秘密分散(リフレッシュプロトコル)は、基盤となる鍵を変更せずにシェアを定期的に再ランダム化します。リフレッシュ後は、リフレッシュ前のシェアは役に立たなくなるため、脆弱な期間を限定できます。GJKR とその派生プロトコルには、初回の DKG と同じ構成で実行されるリフレッシュプロトコルが含まれています。

実用的な DKG 実装

DKG は複数の実運用システムに実装されています。Ethereum DVT クライアントの Obol Charon は、BLS12-381 上の Pedersen VSS に基づく DKG セレモニーを使用します。Silence Laboratories の Silent Shard は、モバイル MPC ウォレットに DKG を使用します。dkg-go ライブラリは、Go アプリケーション向けに GJKR を実装しています。Threshold Network(旧 Keep Network)は、Bitcoin 上の tBTC を保護する閾値 ECDSA サービスに DKG を使用しています。

Pedersen DKG クイズ

単一の信頼されたディーラーによる構成と比べて、Pedersen DKG を優れたものにしている重要な性質は何でしょうか?

DKG プロトコルのまとめ

DKG では、n 人の全参加者が共同で閾値鍵ペアを生成し、誰も秘密鍵を知らないようにすることで、信頼されたディーラーを不要にします。Pedersen DKG では、各参加者が自分の寄与分に対して VSS を実行します。GJKR は苦情ラウンドを追加することで、適応的な攻撃者に対する安全性を実現します。DKG は、Ethereum DVT(Obol、SSV)、DRAND 乱数ビーコン、実運用の MPC ウォレットを支えています。リフレッシュプロトコルにより、シェアを定期的に再ランダム化して安全性を拡張できます。

よくある質問

「分散鍵生成プロトコル」レッスンは無料ですか?

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

「分散鍵生成プロトコル」で何を学びますか?

単一の参加者が秘密全体を知ることなく、参加者同士で共有鍵を生成できるDKGプロトコルを学びます。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「分散鍵生成プロトコル」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. しきい値署名方式:概念
  2. Threshold ECDSA:マルチパーティ署名
  3. 分散鍵生成プロトコル
  4. ブロックチェーンとHSMにおけるしきい値方式
← Cryptology Academyに戻る