著者: オマー・シュロモヴィッツ、ZenGo。

しきい値署名スキーム (TSS) は、分散キー生成と署名のための暗号プリミティブです。ブロックチェーン クライアントでの TSS の使用は、特にセキュリティの面で多くの利点を提供できる新しいパラダイムです。より広い意味では、TSS はキー管理システム (暗号ウォレットなど) の設計に影響を与え、DeFi ユースケースでのネイティブ サポートの先駆けとなる可能性があります。とはいえ、TSS はまだ新しいテクノロジーであるため、リスクと制限も考慮する必要があります。

この記事では、TSS とは何か、それがブロックチェーン分野にもたらす潜在的な利点は何か、それをブロックチェーン クライアントに実装する方法、シャミア秘密共有やマルチシグとの比較、分散キー管理に TSS を使用するさまざまな方法について説明し、最後にリスクと制限について説明します。


暗号の力

TSS を理解するには、まず暗号化の基礎知識が必要です。1970 年代以降、ますます多くのインターネット システム (TLS や PGP など) が非対称暗号化 (公開鍵暗号化 (PKC) とも呼ばれる) を採用するようになりました。PKC は、公開鍵と秘密鍵の 2 つの鍵を使用します。公開鍵は秘密ではなく、誰でも公開して使用できますが、秘密鍵はシステムのセキュリティを表す秘密情報です。

暗号化とデジタル署名は、PKC の最も一般的な 2 つの用途です。暗号化とデジタル署名の両方のスキームは、3 つのアルゴリズムのセットに依存しています。1 つ目は秘密鍵と公開鍵のペアの生成、2 つ目は暗号文/署名の生成、3 つ目は復号化/検証のプロセスです。デジタル署名に関しては、署名アルゴリズムは、所有者のみが知っている秘密鍵を使用して一意の署名を生成します。署名は、公開鍵を持つ人なら誰でもその信憑性と正確性を検証できる方法で、特定のメッセージに添付されます。


ブロックチェーン

ブロックチェーンが非常に強力なテクノロジーであることは間違いありません。ブロックチェーンは、イベントを整理して記録するコンセンサス レイヤーを提供します。このようなインフラストラクチャは、ユーザーである私たちに、分散型経済、さらには政府を構築する潜在的な力を与えてくれます。驚くべきことに、基本的なブロックチェーンを実行するために必要な暗号化は、デジタル署名のみに基づいています。ブロックチェーンのコンテキストでは、秘密鍵は ID を表し、署名は ID によって行われた公開ステートメントまたは主張です。ブロックチェーンはステートメントを整理し、一連のルールに従って検証します。これにより、署名が偽造不可能で正しいことが保証されます。

ブロックチェーンで利用されているより古典的な暗号化とは対照的に、現代の暗号化ツールボックスには、ゼロ知識証明、準同型暗号化、マルチパーティ計算など、いくつかの素晴らしい魔法のトリックが含まれています。過去 10 年間で見てきたように、ブロックチェーンの研究は応用暗号化を大幅に推進し、最近では上記のすべてとその他多くの分野でブレークスルーが起こっています。

この記事では、そのような画期的な技術の 1 つである、効率的なセキュアしきい値署名 (TSS) に焦点を当てます。


MPC と閾値署名方式 (TSS)

マルチパーティ計算 (MPC) は、約 40 年前の Andrew C. Yao の独創的な研究から始まった暗号化の分野です。MPC では、互いに信頼していない一連のパーティが、入力を非公開にしたまま、入力に対して共同で関数を計算しようとします。

たとえば、ある会社の n 人の従業員が、実際の給与を互いに明かさずに、誰が最も高い給与をもらっているかを知りたいとします。ここで、プライベート入力は給与であり、出力は給与が最も高い従業員の名前になります。MPC を使用してこの計算を行うと、計算中に給与が 1 件も漏洩しないことがわかります。

MPC の 2 つの主な特性は、正確性とプライバシーです。

  • 正確性: アルゴリズムによって生成された出力は正しい (期待どおり)。

  • プライバシー: 当事者が保持する秘密の入力データは、他の当事者に漏洩しません。

MPC を使用して、分散方式でデジタル署名を計算します。上記のプロパティを署名にどのように適用できるかを見てみましょう。署名には 3 つのステップがあることを思い出してください。

  • 鍵生成: 最初のステップは最も複雑です。公開され、将来の署名を検証するために使用される鍵を生成する必要があります。ただし、各当事者ごとに個別の秘密も生成する必要があります。これを秘密共有と呼びます。正確性とプライバシーの観点から、関数はすべての当事者に同じ公開鍵を出力し、それぞれに異なる秘密共有を出力します。つまり、(1) プライバシー: 当事者間で秘密共有データが漏洩しない、(2) 正確性: 公開鍵は秘密共有の関数である、となります。

  • 署名: このステップには署名生成関数が含まれます。各当事者の入力は、前のステップ (分散キー生成) の出力として作成された秘密共有になります。また、署名するメッセージである、全員に知られている公開入力もあります。出力はデジタル署名であり、プライバシーの特性により、計算中に秘密共有が漏洩することはありません。

  • 検証: 検証アルゴリズムは従来の設定のままです。単一キー署名と互換性を持たせるには、公開キーを知っているすべての人が署名を検証および検証できる必要があります。これはまさにブロックチェーン検証ノードが行うことです。

しきい値署名方式 (TSS) は、分散キー生成 (DKG) と分散署名を組み合わせたしきい値署名方式に付けられた名前です。


TSSとブロックチェーンを組み合わせる

ブロックチェーンで TSS を使用する自然な方法は、ブロックチェーン クライアントを変更して、TSS を使用してキーと署名を生成することです。ここでは、ブロックチェーン クライアントという用語を使用して、フルノードによって実行される一連のコマンドを指します。実際には、TSS テクノロジにより、秘密キーに関連するすべてのコマンドを分散計算に置き換えることができます。

詳しく説明するために、まずは従来のブロックチェーン設計で新しいアドレスがどのように作成されるかを簡単に説明します。簡単に言うと、秘密鍵を生成し、秘密鍵から公開鍵を計算することで新しいアドレスを作成できます。最後に、公開鍵からブロックチェーン アドレスが導出されます。

ここで、TSS を使用すると、n 人の当事者が共同で公開鍵を計算し、それぞれが秘密鍵の秘密の共有を保持します (個々の共有は他の当事者には公開されません)。公開鍵から、従来のシステムと同じ方法でアドレスを導出できるため、ブロックチェーンはアドレスの生成方法に依存しません。利点は、各当事者が秘密鍵の一部だけを保持するため、秘密鍵が単一障害点ではなくなることです。

トランザクションに署名する場合も同様です。この場合、単一の当事者が秘密鍵で署名するのではなく、複数の当事者間で分散署名生成を実行します。したがって、十分な数の当事者が誠実に行動している限り、各当事者は有効な署名を作成できます。ここでも、ローカル計算 (単一障害点) からインタラクティブ計算に移行しました。

分散キー生成は、さまざまな種類のアクセス構造を可能にする方法で実行できることを言及することが重要です。一般的な「t out of n」設定では、セキュリティを損なうことなく、秘密キー関連の操作で最大 t 回の任意の失敗に耐えることができます。


TSS 対 マルチシグ

一部のブロックチェーンでは、TSS 機能がソフトウェアに組み込まれているか、またはプログラム可能な部分として提供されています。この機能は、マルチシグまたはマルチ署名と呼ばれます。違いをよりよく理解するために、マルチシグをブロックチェーンのアプリケーション層の TSS として考えてみましょう。

言い換えれば、マルチシグと TSS はどちらも本質的に同様の目標を達成しようとしていますが、TSS はオフチェーンで暗号化を使用するのに対し、マルチシグはオンチェーンで行われます。ただし、ブロックチェーンにはマルチシグをエンコードする方法が必要であり、アクセス構造 (署名者の数) がブロックチェーン上で公開されるため、プライバシーが侵害される可能性があります。マルチシグ トランザクションのコストは、異なる署名者の情報もブロックチェーン上で通信する必要があるため、高くなります。

TSS では、署名者の詳細が通常のトランザクションに組み込まれるため、コストが削減され、プライバシーが維持されます。一方、マルチシグは非対話型にできるため、異なる署名者間で複雑な通信レイヤーを実行する手間が省けます。

主な違いは、マルチシグはブロックチェーン固有であり、すべてのブロックチェーンに対して再実装する必要があり、場合によってはまったくサポートされていないことです。逆に、TSS は純粋な暗号化に依存しているため、常にサポートが可能です。違いに関する図解付きの優れた記事は、こちらにあります。


TSS 対 シャミア秘密分散法

シャミア秘密分散方式 (SSSS) は、秘密鍵を分散して保存する方法を提供します。つまり、秘密鍵は保存されている間、複数の場所に保存されます。SSSS と TSS には 2 つの違いがあります。

  • キー生成: SSSS では、秘密鍵の秘密共有の生成を担当する「ディーラー」と呼ばれる単一の当事者が存在します。つまり、キー生成時に、秘密鍵は 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 フレームワーク上に構築できます。これにより、最終的には、高価でリスクの高いオンチェーン スマート コントラクト操作を、より安価で信頼性の高い代替手段に置き換えることができます。

具体的な例をいくつか挙げると、マルチホップ ロックは 2 者署名を巧みに利用し、より安全でプライベートな支払いチャネル ネットワークを備えた Bitcoin ライトニング ネットワークの代替として使用できます。ShareLock は、単一のしきい値署名の検証に基づく、おそらく Ethereum の最も安価なオンチェーン ミキシング ソリューションです。


リスク

過去数年間で、TSS の実装が大幅に増加しました。ただし、比較的新しいテクノロジーであるため、依然としていくつかの制限と懸念事項があります。従来の公開鍵暗号化と比較すると、TSS プロトコルは非常に複雑になる可能性があり、まだ「実戦テスト」されていません。通常、TSS では、単純なデジタル署名と比較して、追加の弱い暗号化の仮定が必要です。その結果、従来の設定では存在しなかった暗号化攻撃ベクトルが発見されています (Breaking Bitcoin Conference 2019 のこのプレゼンテーションを参照)。セキュリティ エンジニアと応用暗号学者は、システムに TSS を安全に導入するお手伝いをすることができます。

良い面としては、品質貢献、ピアレビュー、監査、アルゴリズムのパフォーマンス向上の増加により、既存および新規の実装が強化されています。


最後に

この記事では、ブロックチェーンの使用方法を大きく変える可能性を秘めた魅力的な暗号プリミティブであるしきい値署名スキーム (TSS) の基本を紹介しました。

この記事では、Binance Chain と Bitcoin で使用できるしきい値 ECDSA については説明していません。興味のある方は、以下の最近の論文リストを参照してください。また、TSS 実装を試してみたい場合は、2 者間 Binance Chain ウォレットのコードをこちらで見つけるか、ハイブリッド方式を使用して非管理型の 2 者間 Binance Chain ウォレットを提供する ZenGo ウォレットを試してみてください。


参考文献:

  • 高速かつ安全な二者間ECDSA署名

  • 実用的な分散鍵生成を備えた高速で安全なマルチパーティ ECDSA と暗号通貨保管への応用

  • ハッシュ証明システムと効率的なインスタンス化による2者間ECDSA

  • 高速なトラストレスセットアップを備えた高速マルチパーティしきい値 ECDSA

  • ECDSA の仮定に基づく安全な 2 者間しきい値 ECDSA

  • ECDSA の仮定からの閾値 ECDSA: 複数当事者のケース