著者: オマー・シュロモヴィッツ、ZenGo。
しきい値署名スキーム (TSS) は、分散キーを生成して署名するための基本的な暗号化スキームです。ブロックチェーンの計算で TSS を使用することは、特にセキュリティの面でさまざまな利点を提供できる新しいパラダイムです。つまり、TSS は鍵管理システム (デジタル ウォレットなど) の設計に影響を与え、DeFi ユースケースにおけるローカル サポートの分野をリードすることができます。とはいえ、この TSS はまだ新しいテクノロジーであるため、使用する場合はリスクと制限も考慮する必要があります。
この記事では、TSS とは何か、TSS がブロックチェーン分野にどのような潜在的な利点をもたらす可能性があるか、クライアント ブロックチェーンに TSS を実装する方法、Shamir 秘密共有やマルチシグとの比較、TSS のさまざまな使用方法について説明します。分散キー管理について説明し、最後にその潜在的なリスクと制限について説明します。
暗号化の役割
TSS を理解するには、まず暗号化に関する基本的な知識が必要です。 1970 年代以降、インターネット システムでは、公開キー暗号化 (PKC) としても知られる非対称暗号化 (TLS や PGP など) がますます使用されるようになりました。 PKC は 2 つのキー (公開キーと秘密キー) を使用します。公開キーは秘密ではないため、誰でも共有して使用できますが、秘密キーはシステムのセキュリティを表す機密情報であり、共有することはできません。
暗号化とデジタル署名は、PKC の最も一般的な用途です。暗号化スキームとデジタル署名スキームは両方とも 3 つのアルゴリズムのセットに基づいています。 1 つ目は秘密鍵と公開鍵のペアの生成、2 つ目は暗号文/署名の生成、3 つ目は復号化/検証プロセスです。デジタル署名について: 署名アルゴリズムでは、所有者のみが知っている秘密キーで一意の署名を作成する必要があります。署名は、公開キーを保持している人がその信頼性と信頼性を検証できる方法で、特定のメッセージに添付されます。
ブロックチェーン
ブロックチェーンが非常に強力なテクノロジーであることは疑いの余地がありません。イベントを整理して記録するコンセンサス層を提供します。このようなインフラストラクチャは、私たちユーザーだけでなく政府にも、分散型経済を構築する潜在的な力を与えてくれます。驚くべきことに、単純なブロックチェーンを実行するために必要な暗号化はデジタル署名にのみ依存できます。ブロックチェーンでは、秘密キーはアイデンティティを表し、署名はアイデンティティによって行われる公的声明または主張です。ブロックチェーンは、署名が偽造不可能で有効であることを保証する一連のルールに従ってデータを要求および検証します。
最新の暗号化ツールボックスには、ブロックチェーンで使用される古典的な暗号化とは異なり、いくつかのクールな魔法のトリックが含まれています。これらのトリックの例には、ゼロ知識証明、準同型暗号、マルチパーティ計算などがあります。過去 10 年間に見てきたように、ブロックチェーンの研究は、上記のすべてやその他多くの知識における驚くべき最近の進歩により、応用暗号化を劇的に推進してきました。
この記事では、ブレークスルーの 1 つである効果的なセキュアしきい値署名 (TSS) に焦点を当てます。
MPC と閾値署名方式 (TSS)
マルチパーティ コンピューテーション (MPC) は、約 40 年前に Andrew C. Yao の独創的な研究から始まった暗号化の一分野です。 MPC では、お互いを信頼していない当事者のグループが、入力をプライベートに保ちながら、入力に対して関数を計算しようとします。
たとえば、何人かの会社員が、実際の給与をお互いに明かさずに、誰がより多くの給料をもらっているのか知りたいと考えているとします。ここでの特別な入力は給与であり、恥ずかしさは最も高い給与を持つ従業員の名前になります。この計算を MPC を使用して実行すると、計算中に給与が 1 つも漏れることはありません。
MPC の 2 つの主な機能は、信頼性とプライバシーです。
正確さ: アルゴリズムによって生成された出力は (期待どおりに) 正しいです。
プライバシー: 一方の当事者が保持する機密入力データが他の当事者に漏洩されることはありません。
MPC を使用して、分散方式でデジタル署名を計算します。上記のプロパティを署名にどのように適用できるかを見てみましょう。署名には次の 3 つの手順があります。
キーの生成: 最初のステップも最も複雑です。公開され、将来の署名の検証に使用されるキーを作成する必要があります。ただし、参加者ごとに個別のシークレットを作成する必要もあります。これをシークレットシェアと呼びます。正確性とプライバシーの文脈では、この関数はすべての当事者に同じ公開鍵を出力し、次の両方に異なる秘密共有を出力すると言います。 (1) プライバシー: 秘密共有に関するデータは 2 つの当事者間で漏洩されません。 2) 正確さ: 公開鍵は秘密共有の関数です。
署名: このステップには、署名を作成する機能が含まれています。各当事者の貢献は秘密共有であり、前のステップ (分散キー生成) の出力として生成されます。誰もが知っている、署名されるメッセージである一般的な入力もあります。出力はデジタル署名であり、プライバシー機能により、計算中に秘密共有の漏洩が発生しないことが保証されます。
検証: 検証アルゴリズムは従来の設定と同じです。個々の鍵署名と互換性を持たせるには、公開鍵の知識を持つすべての人が署名を検証および認証できなければなりません。これはまさにブロックチェーン検証ノードが行うことです。
しきい値署名スキーム (TSS) は、分散キー生成 (DKG) としきい値署名スキームを介した署名配布の組み合わせに与えられた名前です。
TSSとブロックチェーンの組み合わせ
ブロックチェーンで TSS を使用する自然な方法は、TSS を使用してキーと署名を生成するようにブロックチェーン クライアントを変更することです。ここでは、完全なノードによって実行される一連のコマンドを指すためにクライアントという用語を使用します。実際の応用では、TSS テクノロジーを使用すると、秘密キーに関連するすべてのコマンドを分散計算に置き換えることができます。
これをさらに詳しく説明するために、古典的なブロックチェーン構造上に新しいアドレスを作成する方法の簡単な説明から始めます。 簡単に言うと、秘密鍵を生成し、その秘密鍵から公開鍵を計算することで、新しいアドレスを作成できます。最後に、ブロックチェーン アドレスが公開キーから導出されます。
ここで TSS を使用して、当事者のグループが共同で公開鍵を計算します。各参加者は秘密鍵の秘密の共有を保持します (個々の共有は他の参加者には公開されません)。公開キーを使用すると、従来のシステムと同じ方法でアドレスを導出できるため、ブロックチェーンはアドレスの生成方法においてある程度中立的になります。ここでの利点は、各当事者が秘密キーの一部を保持するため、秘密キーが単一障害点ではなくなることです。
トランザクションに署名するときにも同じことができます。この場合、一方の当事者が秘密鍵で署名するのではなく、複数の当事者間で分散署名ジェネレーターを実行します。十分な数の参加者が誠実に行動する限り、各当事者でも有効な署名を作成できます。ローカル アカウント (単一障害点) から対話型アカウントに再び移行しました。
分散キーの生成は、それらへのさまざまなタイプのアクセスを許可する方法で実行できることに注意することが重要です。一般的な「n のうち t」設定は、分散キーに関連する操作における任意の失敗に最大 t まで耐えることができます。セキュリティを損なうことなく秘密キーを取得できます。
TSS 対 マルチシグ
一部のブロックチェーン ネットワークは、TSS 機能をソフトウェアの組み込み部分またはプログラム可能な部分として提供します。この関数をマルチシグまたはマルチシグネチャと呼びます。違いをよりよく理解するために、ブロックチェーンの実装段階における TSS としてマルチシグを見てみましょう。
言い換えれば、マルチシグと TSS は基本的に同様の目標を達成しようとしますが、TSS はオフチェーン暗号化を使用し、マルチシグはオンチェーンを使用します。ただし、ブロックチェーンにはマルチシグ暗号化の方法が必要ですが、アクセス構造 (署名者の数) がブロックチェーン上で公開されるため、プライバシーが侵害される可能性があります。 2 つの異なるサイトの情報もブロックチェーン上で通信する必要があるため、マルチシグ トランザクションのコストは高くなります。
TSS では、署名者の詳細が通常のトランザクションに組み込まれるため、コストが削減され、プライバシーが維持されます。一方、マルチシグは非対話型にすることができるため、異なるサイト間で複雑な通信層を実行するという問題が回避されます。
主な違いは、ブロックチェーン マルチシグは各ブロックチェーンで再実装する必要があり、場合によってはまったくサポートされないことです。対照的に、TSS は純粋な暗号化に基づいているため、常にサポート可能です。違いを説明した素晴らしい記事がここにあります。
TSS 対 シャミア秘密分散法
Shamir 秘密共有スキーム (SSSS) は、秘密キーを保存する分散方法を提供します。秘密キーはストレージ内にある間、複数の場所に保管されます。 SSSS と TSS には 2 つの違いがあります。
キーの生成: SSSS には、キーの秘密共有の作成を担当する「ディーラー」と呼ばれる当事者が 1 つあります。これは、キーの生成時に秘密キーが 1 か所で生成され、その後ディストリビューターによってさまざまな場所に配布されることを意味します。しかし、TSS にはディストリビュータがありません。これは、完全な秘密鍵が 1 か所に存在しないようにその役割が分散されているためです。
署名: SSSS では、当事者は署名するために完全な秘密キーを再構築する必要がありますが、これにより、署名が必要になるたびに単一障害点が発生します。一方、TSS では、署名は秘密共有を再作成せずに分散方式で行われます。
TSS でわかるように、秘密キー (システムのセキュリティを表す) は、その存続期間を通じて 1 か所に存在することはありません。
しきい値ガバナー
TSS テクノロジーに基づいて構築されたウォレットは、従来の暗号通貨ウォレットとは少し異なります。従来のウォレットは通常、シード フレーズを作成し、それを使用してアドレスを決定的に導き出します。ユーザーは後で決定論的階層構造 (HD) を使用して、1) ウォレット アドレスに対応する秘密キーにアクセスし、それらのアドレスでトランザクションに署名できます。 2) シードフレーズを使用してすべてのウォレットキーを回復します。
しきい値ウォレットでは、状況はさらに複雑になります。決定論的階層 (HD) アーキテクチャを作成することは可能ですが、その構築は別の MPC プロトコルと同様に分散方式で計算する必要があります。関係者は、次にどのキーを使用するかについて共同で決定する必要があります。言い換えれば、各政党は独自の最初の声明を発表することになります。シード ステートメントは個別に生成され、結合されないため、どちらの当事者も単独でシード ステートメントから秘密キーを推定することはできません。
TSS ベースのウォレットには、対応する公開鍵とブロックチェーン アドレスを変更せずに秘密鍵をローテーションできる優れたセキュリティ機能もあります。プロアクティブ秘密共有としても知られる秘密キーのローテーションは、秘密共有を入力として受け取り、新しい秘密共有のセットを出力するもう 1 つの MPC プロトコルです。古い秘密共有は削除でき、新しい共有も同様に使用できます。
このアーキテクチャにより、セキュリティに時間的側面が追加されます。これは、攻撃者がしきい値ウォレットのハッキングを試みるには、同時に複数の場所にいる必要があることを意味します。攻撃者が署名を偽造したい場合、回転前と回転後の秘密共有を組み合わせても追加の権限は得られません。
このタイプのウォレットの欠点は、シードフレーズがないため、シングルキーウォレットシステムと互換性がないことです。したがって、どの当事者が機密共有を維持するかを決定することが重要です。
次のようないくつかの方法が考えられます。
TSS アウトソーシング: ユーザーは、「n」台のサーバーが自分に代わって計算を実行することを許可します。キーの作成、管理、署名を、資産の所有者ではないが、何らかのインセンティブと引き換えにセキュリティ層を提供するサービスプロバイダーに効果的にアウトソーシングします。
複数のデバイスの使用: ユーザーは、自分が所有するデバイス上で TSS を実行します。たとえば、一方のパーティは IoT デバイス、もう一方のパーティは携帯電話ユーザー、別のサードパーティはラップトップなどになります。
ハイブリッド システム: TSS は、一部のパーティが外部サービス プロバイダーによって制御され、一部のパーティが独自のハードウェアで実行されるように運用されます。
最初の方法では、ユーザーのクライアント側で負荷の高い TSS 計算をオフロードします。一方で、サービスプロバイダーは共謀して(多数のプロバイダーが同時に攻撃されていないと想定していますが、実際には同時に攻撃される可能性があります)、ユーザーの資産を盗む可能性があります。
2 番目の方法では、ユーザーが完全に制御できますが、インターネットに接続して TSS アカウントに参加するには複数のデバイスが必要になるため、トランザクションを行うプロセスが煩雑になります。
3 番目のオプションは、ユーザーの許可なしにトランザクションを実行するという妥協をせずに、簡単かつ迅速にトランザクションを実行する方法をユーザーに提供するため、両方のオプションの中で最も優れたものです。
TSSとスマートコントラクト
長年にわたり、研究者はデジタル署名の多くの用途を発見してきましたが、中には驚くべきことではないものも含まれています。前述したように、TSS はセキュリティを大幅に向上できる原始的な暗号化です。ブロックチェーンの文脈では、多くの機能を TSS ベースの暗号化に置き換えることができると言えるでしょう。分散型アプリケーション、スケーリング、アトミックスワップ、シャッフル、継承などのためのレイヤー 2 ソリューションを TSS フレームワーク上に構築できます。これにより、最終的には、高価でリスクの高いスマートコントラクトの運用を、より安価で信頼性の高い代替手段に置き換えることが可能になります。
具体的な例をいくつか挙げると、マルチホップ ロックは二者間の署名を賢明な方法で使用し、ビットコインのライトニング ネットワークをより安全でプライベートな支払いチャネル ネットワークに交換するために使用できます。 ShareLock はおそらく、単一のしきい値署名を使用した検証に基づいて構築された最も安価な Ethereum ブロックチェーン スクランブル ソリューションです。
リスク
過去 2 年間で、TSS アプリケーションが大幅に増加しました。しかし、他の比較的新しいテクノロジーと同様に、依然としていくつかの制限と懸念事項があります。従来の公開キー暗号化と比較すると、TSS プロトコルは非常に複雑になる可能性があり、まだ「動作テスト」が行われていません。 TSS では通常、単純なデジタル署名と比較して、追加の弱い暗号化前提が必要です。その結果、従来の設定では存在しなかった暗号攻撃ベクトルが検出されるようになりました (Breaking Bitcoin Conference 2019 のプレゼンテーションを参照)。セキュリティ エンジニアとアプリケーション暗号化技術者は、TSS をシステムに安全に実装するのに役立ちます。
良い面としては、品質への貢献、ピアレビュー、クロスチェック、アルゴリズムを使用した計算パフォーマンスの向上の増加により、既存および新規のアプリケーションがより強力になっています。
まとめ
この記事では、ブロックチェーンの使用方法を劇的に変える可能性を秘めた驚くべき暗号化プリミティブである、しきい値署名スキーム (TSS) の基本を紹介します。
この記事ではBinance ChainとBitcoinで使用できるThreshold ECDSAについては触れていませんので、興味のある方は以下のリストの記事を読んでください。また、いくつかの TSS 実装を試してみたい場合は、ここで 2 パーティ Binance Chain ウォレットのコードを見つけるか、2 パーティ Binance Chain ウォレットを提供するハイブリッド方式を使用する ZenGo ウォレットを試すことができます。
詳細な読み方:
高速かつ安全な二者間ECDSA署名
実用的な分散鍵生成を備えた高速で安全なマルチパーティ ECDSA と暗号通貨保管への応用
ハッシュ証明システムと効率的なインスタンス化による2者間ECDSA
高速なトラストレスセットアップを備えた高速マルチパーティしきい値 ECDSA
ECDSA の仮定に基づく安全な 2 者間しきい値 ECDSA
ECDSA の仮定からの閾値 ECDSA: 複数当事者のケース

