著者:Omer Shlomovits、ZenGo。

閾値署名スキーム(TSS)は、分散鍵生成と署名を実現する暗号原語です。ブロックチェーンクライアントにTSSを導入することは、新しいパラダイムであり、多くの利点をもたらします。特にセキュリティにおいて顕著なパフォーマンスを示します。一般的に、TSSは鍵管理システム(例:暗号通貨ウォレット)の設計を再定義し、DeFiユースケースにネイティブサポートを提供します。しかし、TSSは新興技術として、一定のリスクと限界も存在します。

本稿では、TSSの基本概念、ブロックチェーン分野にもたらす潜在的な利点、ブロックチェーンクライアントにおける実装方法、Shamir秘密共有およびマルチシグネチャとの違いについて詳しく説明します。また、TSSを利用した分散鍵管理の異なる方法を理解し、関連するリスクと限界を探ります。


暗号学の力

TSSの概念を理解するためには、まずいくつかの暗号学の基礎知識を把握する必要があります。1970年代以来、ますます多くのインターネットシステム(TLSやPGPなど)が非対称暗号技術、すなわち公開鍵暗号学(PKC)を採用し始めました。PKCは2つの鍵に基づいています:公開鍵と秘密鍵。公開鍵は公開され、誰でも発行および使用できますが、秘密鍵はシステムの安全を守るための核心的な機密です。

暗号化とデジタル署名はPKCの2つの主要な応用シナリオです。これらの技術はすべて3つのアルゴリズムに依存しています。まずは秘密鍵と公開鍵のペアを生成し、次に暗号文/署名を生成し、最後に復号/検証プロセスです。デジタル署名を例にとると、署名アルゴリズムは所有者のみに知られた秘密鍵を使用してユニークな署名を生成し、それをメッセージに添付します。その後、公開鍵を持つ人は誰でもその署名の真実性と正確性を検証できます。


ブロックチェーン

疑いなく、ブロックチェーンは非常に潜在的な強力な技術であり、イベントを整理し記録するためのコンセンサス層を提供します。このインフラは、ユーザーに分散型経済、さらには分散型政府を構築する可能性を与えます。驚くべきことに、基本的なブロックチェーンを運営するために必要な暗号学は、デジタル署名だけで実現できます。ブロックチェーンでは、秘密鍵がアイデンティティを表し、署名がそのアイデンティティによる公開の声明または主張です。ブロックチェーンは、これらの声明を順序付け、一定のルールに基づいて検証することで、署名の不可偽造性と正確性を確保します。

ブロックチェーンで採用されている従来の暗号技術と比較して、現代の暗号学は多くの興味深い新しい成果を導入しています。たとえば、ゼロ知識証明、同型暗号、多者計算などです。過去10年間にわたり、ブロックチェーンの研究は応用暗号学の発展を大いに推進し、上記の分野やその他の多くの分野で顕著な突破口を開いてきました。

本稿では、その中の一つの突破口である安全高効率な閾値署名スキーム(TSS)に焦点を当てます。


MPCと閾値署名スキーム(TSS)

多者計算(MPC)は暗号学の一分野であり、その起源は約40年前に遡るAndrew C. Yaoの先駆的な研究にあります。MPCの核心は、互いに信頼のない一群の参加者が、自分の入力情報を漏らさずに共同で関数の結果を計算することです。

たとえば、ある会社のn人の従業員が、誰の給料が最も高いかを知りたいが、自分の実際の給料を明らかにしたくないと仮定します。このシナリオでは、各従業員の入力は自分の給料であり、最終的な出力は給料が最も高い従業員の名前です。MPCを使用すると、この計算は従業員の給料情報を明らかにすることなく完了することができます。

MPCの2つの核心的特性は、正確性とプライバシーです:

  • 正確性:アルゴリズムの出力は予想される正しい結果です。

  • プライバシー:参加者の入力データは他の参加者に漏洩しません。

我々はMPC技術を用いて分散方式でデジタル署名を計算し、上記の特性を署名プロセスにどのように適用するかを探ります。前述のように、署名は通常3つのステップに分かれています:

  • 鍵生成:最初のステップは、全プロセスの中で最も複雑なステップです。このステップでは、後続の署名を検証するために使用される公開鍵を生成する必要があります。また、各参加者のために独立した「秘密分片」を生成する必要があります。正確性とプライバシーの観点から、この関数はすべての参加者に同じ公開鍵を出力し、各参加者には異なる秘密分片を生成することにより、次のことを保証します:(1) プライバシー:秘密分片データは各参加者間で漏洩せず、(2) 正確性:公開鍵はすべての秘密分片の関数計算結果です。

  • 署名:このステップは、署名生成関数を含みます。各参加者の入力は、前のステップ(分散鍵生成)からの出力である秘密分片です。さらに、署名が必要なメッセージという広く知られた公共入力もあります。出力はデジタル署名であり、プライバシーは計算の全過程にわたって秘密分片が漏洩しないことを保証します。

  • 検証:検証アルゴリズムは伝統的な方法と一致しています。単一署名スキームとの互換性を確保するために、公開鍵を持つ者は誰でも署名を検証し確認でき、これがブロックチェーン検証の核心的な任務です。

閾値署名スキーム(TSS)は、我々が分散鍵生成(DKG)と分散署名プロセスの組み合わせに与えた名称です。


TSSとブロックチェーンの統合

ブロックチェーンでTSSを採用する直感的な方法は、ブロックチェーンクライアントを変更し、TSS技術を通じて鍵と署名を生成することです。ここでの「ブロックチェーンクライアント」は、全ノードによって実行される一連のコマンドを指します。実際の応用では、TSSはすべての秘密鍵関連コマンドを分散計算に置き換えることができます。

詳細を説明するために、まず伝統的なブロックチェーン設計における新しいアドレスの作成方法を簡単に紹介します。簡単に言えば、まず秘密鍵を生成し、その後秘密鍵に基づいて公開鍵を計算し、最終的に公開鍵からブロックチェーンアドレスを導出します。

TSSモードでは、公開鍵はn人の参加者によって共同で計算され、各参加者は秘密鍵の一つの秘密分片のみを保持します(各分片は互いに漏洩しません)。我々は従来のシステムと同じ方法で、公開鍵からアドレスを導出することができるため、アドレスの生成方法はブロックチェーンに制約されません。この方法の利点は、各参加者が秘密鍵の一部しか持っていないため、秘密鍵が単一障害点の原因とはならないことです。

取引の署名も同様の方法で行うことができます。違いは、もはや秘密鍵を使用して単独署名を行わず、複数の参加者が協力して分散署名を生成することです。そのため、十分な数の参加者が誠実に行動すれば、有効な署名が生成され、ローカル計算(単一障害点)から対話型計算への移行が実現します。

注目すべきは、分散鍵生成が異なるタイプのアクセス構造をサポートできることです:一般的な「nのうちt」モードは、最大t回の任意の障害が発生しても、安全に鍵関連操作を実行できることを保証します。


TSSとマルチシグネチャ

一部のブロックチェーンは、TSS機能をソフトウェアのビルトインまたはプログラム可能な部分として提供しており、通常はマルチシグネチャと呼ばれます。両者の違いをより明確に理解するために、マルチシグネチャをブロックチェーンアプリケーション層のTSSと見なすことができます。

言い換えれば、マルチシグネチャとTSSは本質的に類似の目標を実現していますが、TSSはオフチェーン暗号技術を使用し、マルチシグネチャはオンチェーンで発生します。ただし、ブロックチェーンはマルチシグネチャを符号化するための特定の方法を必要とし、これがプライバシーに影響を与える可能性があります。なぜなら、アクセス構造(署名者の数)がブロックチェーン上で露出するからです。また、マルチシグネチャ取引のコストは高く、各署名者の情報がブロックチェーン上に伝送される必要があります。

TSSでは、署名者の詳細が通常の取引に埋め込まれるため、コストが削減され、プライバシーが保護されます。一方、マルチシグネチャは非対話的な方法で実現できるため、異なる署名者間で複雑な通信レイヤーを実行する手間が省かれます。

両者の主な違いは、マルチシグネチャがブロックチェーンに特有であり、各ブロックチェーンごとに個別に実装する必要があり、一部のブロックチェーンではそもそもサポートされていない可能性があることです。それに対して、TSSは完全に暗号学に基づいており、常にサポートされます。両者の違いについて詳しくは、こちらを参照してください。


TSSとShamir秘密共有スキーム

Shamir秘密共有スキーム(SSSS)は、秘密鍵を分散ストレージする方法を提供し、秘密鍵が静止しているときにそれを複数の場所に分散して保存します。SSSSとTSSの主な違いは2つあります:

  • 鍵生成:SSSSでは、「配布者」と呼ばれる役割が秘密鍵の秘密分片を生成する責任を持ちます。配布者は単一の場所で完全な秘密鍵を生成し、それを複数の秘密分片に分割して異なる場所に配布します。TSSでは、配布者は存在せず、プロセス全体が分散されており、完全な秘密鍵が単一の場所で生成されることはありません。

  • 署名:SSSSでは、各参加者は署名を完了するために完全な秘密鍵を再構築する必要があり、これが署名するたびに単一障害点のリスクを引き起こします。一方、TSSでは、署名プロセスは分散方式で完了し、秘密分片を再構築する必要はありません。

したがって、TSSスキームでは、秘密鍵がそのライフサイクル全体にわたって単一の場所に現れないため、システムのセキュリティが大幅に向上します。


閾値ウォレット

TSS技術に基づくウォレットは、従来の暗号通貨ウォレットとは若干異なります。従来のウォレットは通常、助記詞を生成して決定的にウォレットアドレスを導出します。ユーザーはこの階層的決定構造(HD)を利用して、1) ウォレットアドレスに対応する秘密鍵を取得して取引署名を行う、2) 助記詞を使用してすべてのウォレット鍵を復元することができます。

閾値ウォレットの運用メカニズムはより複雑です。HD構造の生成をサポートしていますが、このプロセスは分散方式で計算される必要があり、別のMPCプロトコルに似ています。各参加者は使用する次の鍵を共同で決定する必要があります。言い換えれば、各参加者は独自の助記詞を持っています。これらの助記詞は個別に生成され、組み合わされることはないため、どの参加者も独自の助記詞から完全な秘密鍵を導出することはできません。

さらに、TSSベースのウォレットは、公開鍵とブロックチェーンアドレスを変更することなく秘密鍵のローテーションを行う強力なセキュリティ機能を備えています。秘密鍵のローテーションは能動的秘密共有とも呼ばれる別のMPCプロトコルであり、古い秘密分片を入力として新しい一連の秘密分片を生成します。古い秘密分片は削除でき、新しい分片は引き続き使用できます。

このアーキテクチャは、閾値ウォレットのセキュリティに時間的次元を導入し、攻撃者が成功裏にウォレットを攻撃するためには、同時に複数の場所に出現する必要があることを意味します。たとえ署名の偽造を試みても、攻撃者が秘密鍵ローテーションの前後に入手した秘密分片を結合して完全な鍵を形成することはできず、セキュリティに対する追加の脅威にはなりません。

しかし、この種のウォレットの制限の一つは、助記詞をサポートしていないため、単一鍵ウォレットシステムと互換性がないことです。そのため、どの参加者が秘密分片を保持しているかを明確にすることが特に重要です。

可能なアーキテクチャは以下の通りです:

  • TSSを外部委託:ユーザーは計算を「n」台のサーバーに委託します。鍵生成、管理および署名は、資産所有者ではないサービスプロバイダーに効果的に外部委託され、これらのサービスプロバイダーは安全性を提供することで一定の報酬を得ることがあります。

  • 複数デバイスの協力:ユーザーは自身が所有するデバイス間でTSSを実行します。たとえば、IoTデバイス、モバイルデバイス、ノートパソコンが協力して動作します。

  • ハイブリッドモード:一部の参加者は外部サービスプロバイダーによって制御され、一部はユーザーの所有デバイス上で動作し、共同でTSS計算を完了します。

最初の方法は、ユーザーのクライアントのTSS計算の負担を軽減しますが、サービスプロバイダーが共謀してユーザー資産を盗む可能性があります(通常、十分な数のサービスプロバイダーが同時に攻撃されることはないと仮定されますが、その可能性は否定できません)。

第二の方法は、ユーザーに完全なコントロールを提供しますが、TSS計算に参加するために複数のデバイスがオンラインで必要なため、取引操作が煩雑になります。

第三の方法は、両者を兼ね備え、ユーザーがシンプルかつ効率的に取引を完了できるようにし、ユーザーの承認なしに取引が完了しないことを保証します。


TSSとスマートコントラクト

長年にわたり、研究者はデジタル署名の多くの用途を探求しており、その中には不可欠な重要技術となったものもあります。前述のように、TSSはセキュリティを大幅に向上させることができる暗号原語です。ブロックチェーンのシナリオでは、TSSに基づく暗号学的ソリューションが多くの伝統的機能を置き換えることが可能です。たとえば、分散型アプリケーション、Layer 2拡張ソリューション、原子スワップ、ミキシング、遺産継承などはすべてTSSフレームワークを通じて実現できます。これにより、コストとリスクの高いオンチェーンスマートコントラクト操作が、より経済的で信頼性の高いソリューションに取って代わられるようになります。

例として、多跳ロックは二者間の署名を巧妙に利用して、ビットコインのライトニングネットワークの代替として機能するより安全でプライベートな支払いチャネルネットワークを提供します。ShareLockは、単一の閾値署名検証に基づいたイーサリアム上で最もコストの低いオンチェーンミキシングソリューションかもしれません。


リスク

近年、TSSの適用が徐々に増加しています。しかし、比較的新しい技術として、いくつかの限界や潜在的な問題に直面しています。従来の公開鍵暗号技術と比較して、TSSプロトコルはより複雑であり、広範な「実戦検証」を経ていません。通常のデジタル署名と比較して、TSSは追加の暗号仮定を必要とし、これらの仮定が十分に堅牢でない可能性があるため、従来のソリューションには存在しなかった暗号攻撃ベクターが導入されることがあります(2019年のBreaking Bitcoin Conferenceの関連プレゼンテーションを参照してください)。システム内でTSSを安全に展開するには、安全エンジニアや暗号学の専門家の専門的なサポートを求めることをお勧めします。

ポジティブな側面として、コミュニティの貢献、同行レビュー、コード監査、アルゴリズムの最適化が増加することにより、既存および新興のTSSアプリケーションは成熟しつつあります。


まとめ

本稿では、閾値署名スキーム(TSS)の基本概念を紹介しました。これは非常に潜在性のある暗号原語で、私たちがブロックチェーンと相互作用する方法を変える可能性があります。

本稿では、BNB Chainやビットコインに適用可能な閾値ECDSAについては言及していないため、興味のある読者は以下の最新論文を参照してください。また、いくつかのTSSアプリケーションを試してみたい場合は、こちらの二者BNB Chainウォレットのオープンソースコードを確認するか、ハイブリッドモードの非托管二者BNB ChainウォレットであるZenGoウォレットを使用してください。


深く読む:

  • 安全高効率な二者ECDSA署名スキーム

  • 安全高効率な多者ECDSAスキーム、実用的な分散鍵生成と暗号通貨ホスティングアプリケーションをサポート

  • ハッシュ証明システムに基づく二者ECDSAとその効率的なインスタンス化

  • 効率的な去信任化設定を採用した多者閾値ECDSA

  • ECDSA仮定に基づく安全な二者閾値ECDSA

  • ECDSA仮定に基づく閾値ECDSA:多様な例