AI・機械学習
分散鍵生成(DKG)とは何か?
What is distributed Key Generation (DKG)? (stoffelmpc.com)
要約
分散鍵生成(DKG)は、マルチパーティ計算(MPC)の応用例として、単一の信頼できる第三者なしに共有秘密鍵を生成する手法です。各参加者が自身の乱数の一部を秘密分散し、それらを合計することで、誰も秘密鍵全体を保持することなく、秘密鍵の生成を分散して行うことができます。この技術は、仮想通貨ウォレットの生成や、MPCプロトコルにおけるディーラーの代替などに利用されます。
全文翻訳
過去の記事では、シェアを作成し、それらのシェアを使って算術演算を行う方法を説明してきました。具体的な例を通して、MPCの基本をニーズに合わせてどのように活用できるかの感覚を掴んでいただけたかと思います。しかし、まだ非常に抽象的に感じられるかもしれません。そこで、私たちがソリューションを持っている、MPCの実際のユースケースである分散鍵生成(DKG)を紹介するのに良い時期です。この記事では、非常にシンプルでナイーブなDKGプロトコルを解説します。
あなたとあなたの友人たちが、仮想通貨ウォレット(あるいはGitHubのSSHキーでも同じ考え方です)を共有したいとしましょう。しかし、仲間たちが集まって鍵を生成し、それをシェアに分割することができません。そこで、誰か一人が全体を保持することなく、共有鍵を生成する方法を求めているのです。友人グループの閾値(しきいち)があれば、鍵を再構築できる必要があります。
このシナリオは、現実世界の多くのユースケースを模倣しています。分散鍵生成は、以下のような用途に役立ちます。
* 完全な秘密鍵を一つの場所に置くことなく、新しい仮想通貨ウォレットを生成する
* 基盤となる秘密を変更することなく、秘密分散された秘密のシェアを変更する(シェアのリフレッシュとして知られています)
* MPCプロトコルにおけるディーラーを置き換える
この記事の目的のため、私たちは公開/秘密鍵暗号システムに見られるような鍵にのみ焦点を当てます。しかし、ここでの概念は、鍵ではないあらゆる基盤となる秘密に適用できます。
より形式的には、私たちは鍵 ← rG を計算することを目指しています。ここで、r は ℤ におけるランダムな整数であり、G は何らかのジェネレーターです。具体的には、MPCでは実際に [r]G を計算したいのです。もし私たちの以前の記事を読んだことがあるなら、それを実行するのに十分な知識があります。
根本的には、私たちは単に [r] を生成しているだけです。G は既知のスカラー要素であるため、[r]G は単に公開定数によるスカラー乗算です。したがって、[r] を取得する方法を示すだけで十分です。
具体的には、プロトコルは次のように機能します。
各パーティは、TRNGやローカルマシンの /dev/urandom を使用して、自身の乱数 rᵢ を生成します。
各パーティは、他のパーティに rᵢ を秘密分散して [rᵢ] を取得します。つまり、パーティ i は自身の rᵢ と、パーティ j(i と異なる)の他のパーティの [rⱼ] を持ちます。
[r] を取得するために、各パーティは Σ[rᵢ] を計算します。加算は秘密シェアに対して線形であるため、この合計にはパーティ間の通信は必要ありません。
その後、各パーティは自身で [r]G を計算できます。
これで、分散された方法で鍵が生成されました。
これを具体的に見てみましょう。3つのパーティと閾値2で ℤ₁₇ で作業します。つまり、全員が次数1の多項式でシェアします。
パーティ1は r₁ = 5 を選択し、多項式 f₁(x) = 5 + 3x を使用します。シェア: f₁(1) = 8, f₁(2) = 11, f₁(3) = 14
パーティ2は r₂ = 11 を選択し、多項式 f₂(x) = 11 + 7x を使用します。シェア: f₂(1) = 1, f₂(2) = 8, f₂(3) = 15
パーティ3は r₃ = 9 を選択し、多項式 f₃(x) = 9 + 2x を使用します。シェア: f₃(1) = 11, f₃(2) = 13, f₃(3) = 15
各パーティは受け取ったシェアを合計します。
パーティ1: 8 + 1 + 11 = 20 = 3 (mod 17)
パーティ2: 11 + 8 + 13 = 32 = 15 (mod 17)
パーティ3: 14 + 15 + 15 = 44 = 10 (mod 17)
これらは、定数項が r = 5 + 11 + 9 = 25 = 8 (mod 17) である f(x) = 8 + 12x のシェアと正確に一致します。任意の2つのパーティが補間して r = 8 を復元でき、各パーティは自身のシェアに G を掛けることで公開鍵 rG を共同で導出できます。誰も r を見ることはありませんでした。
このプロトコルについていくつかの点に注意してください。
* シェアの rᵢ の送信以外のパーティ間の通信は不要です
* 同期ネットワークを想定しています
* すべてのパーティが半誠実(semi-honest)であることを想定しています
実際には、ネットワークは複雑で予測不可能です。私たちの非同期DKGソリューションは、ネットワークが非同期であり、パーティが悪意を持つ可能性のある状況に対応します。今すぐデモをスケジュールして、秘密を分散させましょう。
責任を負うことなく機密データを計算する
生データは本来あるべき場所に留まります。計算はプライベートに行われます。責任はあなたの帳簿から外れます。
エンジニアに相談する
責任を負うことなく機密データを計算する
生データは本来あるべき場所に留まります。計算はプライベートに行われます。責任はあなたの帳簿から外れます。
エンジニアに相談する
責任を負うことなく機密データを計算する
生データは本来あるべき場所に留まります。計算はプライベートに行われます。責任はあなたの帳簿から外れます。
エンジニアに相談する
製品
Stoffel Lang
Stoffel VM
SDKs
ソリューション
連合学習アグリゲーター
鍵生成
リソース
ドキュメント
会社概要
ブログ
リサーチ
MPCとは?
プライバシーの専門家とつながりましょう
プライバシーポリシー
利用規約
© 2025 Stoffel Labs Inc. 全著作権所有。
製品
Stoffel Lang
Stoffel VM
SDKs
ソリューション
連合学習アグリゲーター
鍵生成
リソース
ドキュメント
会社概要
ブログ
リサーチ
MPCとは?
プライバシーの専門家とつながりましょう
プライバシーポリシー
利用規約
© 2025 Stoffel Labs Inc. 全著作権所有。
製品
Stoffel Lang
Stoffel VM
SDKs
ソリューション
連合学習アグリゲーター
鍵生成
リソース
ドキュメント
会社概要
ブログ
リサーチ
MPCとは?
プライバシーの専門家とつながりましょう
プライバシーポリシー
利用規約
© 2025 Stoffel Labs Inc. 全著作権所有。
ソリューション
AI/ML
データコラボレーション
データ分析
鍵管理
製品
Stoffel Lang
Stoffel VM
SDKs
リソース
会社概要
ブログ
ドキュメント
リサーチ