マルチパーティ コンピューティングの概要

マルチパーティ コンピューティングは、デジタル アセット署名鍵の Google Cloud カストディ プラットフォームです。しきい値署名、トランザクション ポリシーの適用、エンタープライズ ガバナンス管理を組み合わせたものです。

しきい値署名のメリット

機関のデジタル アセットの管理では、秘密署名鍵がアセットの移動を直接制御します。署名鍵を保護するには、次の 3 つのセキュリティ リスクと運用リスクを軽減する必要があります。

  • 暗号の健全性: 鍵の盗難や不正使用により、攻撃者が不正なトランザクションに署名し、資産の損失が不可逆的に発生する可能性があります。
  • 可用性: 一時的な停止や署名インフラストラクチャへのアクセス不能により、トランザクション決済と流動性オペレーションが停止します。
  • 耐久性: 鍵マテリアルが永続的に失われたり、破損したりすると、関連するデジタル アセットを復元できなくなります。

鍵の一元管理では、セキュリティと運用の復元力のトレードオフが発生します。完全な秘密鍵を 1 つのハードウェア セキュリティ モジュール(HSM)に保存すると、可用性、耐久性、暗号の健全性に関する単一障害点が発生します。その鍵を複数の HSM またはリージョンに複製すると、可用性と耐久性が向上しますが、攻撃対象領域が拡大します。すべてのレプリカが完全な鍵を保持しているため、各コピーは別の単一障害点となります。

マルチパーティ コンピューティングは、DKLS23 プロトコルの強化された拡張機能を含むしきい値署名スキームを使用して、このトレードオフを解決します。独立したハードウェア格納型の各パーティが、分離された鍵共有を生成して保持します。署名時に、これらの当事者はマルチパーティ プロトコルを実行して、完全な秘密鍵を 1 つの場所に集めることなく、有効な署名を生成します。署名しきい値よりも少ない数の当事者を侵害した攻撃者は、署名を偽造したり、鍵を再構築したりすることはできません。同時に、個々の当事者が利用できない場合や、永続的に失敗した場合でも、しきい値を満たすのに十分な当事者が残っていれば、署名オペレーションは続行されます。プロトコルの詳細については、DKLS23 の暗号化の背景をご覧ください。

サポートされているブロックチェーン

マルチパーティ コンピューティングは、次の主要なアルゴリズムをサポートしています。

アルゴリズム 曲線 一般的なチェーン
ECDSA(EC_SIGN_SECP256K1) secp256k1 ビットコイン、イーサリアム、EVM 互換チェーン
EdDSA(EC_SIGN_ED25519) Ed25519 Solana(近日公開)

分散鍵が生成されると、マルチパーティ コンピューティングは公開鍵と、それから派生したブロックチェーン アドレスを返します。

企業向けの管理機能

マルチパーティ コンピューティングは、専用の分離されたインスタンス内で組織をモデル化します。鍵の共有を保持するユーザー、署名を承認する必要があるユーザーの数、署名前に各トランザクションが評価されるルールを決定します。

ユーザーとロール

ユーザーは、インスタンスにオンボーディングする ID です。各ユーザーは、Google アカウントまたは Workforce Identity 連携のプリンシパルのいずれか 1 つにバインドされます。各ユーザーには 1 つ以上のロールがあります。

  • 管理者: ユーザー、チーム、その他のインスタンス リソースを管理します。
  • ポリシー作成者: トランザクション ポリシーを作成して承認します。
  • 署名者: 鍵の共有を保持し、トランザクションを承認します。

署名者、ポリシー作成者、管理者は、承認鍵を使用して承認に署名します。この承認鍵の秘密鍵部分がお客様の管理下から離れることはありません。

API レベルでは、マルチパーティ コンピューティング ロールは IAM ロールと連携します。IAM は、プリンシパルが呼び出すことができる API メソッドを制御します。ユーザーのロールによって、そのプリンシパルがインスタンス内で実行できる操作が決まります。IAM ロールとユーザーロールの連携方法については、セキュリティと認可をご覧ください。

チーム

チームは、部門や役員のセットなど、署名者のグループです。すべての署名者は 1 つのチームにのみ属します。チームを使用すると、KeyPolicy で署名者のグループを参照できます。たとえば、各ユーザーの名前を指定する代わりに、「財務チームの 3 人のメンバーの鍵共有を生成し、そのうちの 2 人に署名を要求する」ことができます。

MPC ポリシー

KeyRing と KeyPolicy

KeyRing は鍵をグループ化します。KeyRing を作成するときに、KeyPolicy を設定します。これにより、KeyRing で作成されるすべての鍵に対して、次のことが定義されます。

  • どのチームとユーザーが鍵シェアを保持しているか、
  • 署名に参加する必要がある参加者の数(しきい値)
  • 各鍵共有の保存場所(Google Cloud、お客様のオンプレミス、ユーザーのモバイル デバイス)。

鍵を KeyRing 間で移動したり、削除したりすることはできません。鍵を無効にすることのみが可能で、これによりそれ以降の署名が防止されます。

KeyLists

KeyList は、信頼できる宛先など、トランザクション ポリシーが参照できるブロックチェーン アドレスの名前付きリストです。エントリは、既存の鍵、KeyRing(後で追加された鍵を含む)、または手動で入力したアドレスです。

トランザクション ポリシー

トランザクション ポリシーは、マルチパーティ コンピューティングでのトランザクションを許可または禁止する Cedar ルールです。たとえば、支出上限や宛先の許可リストなどです。アクティブなポリシーは、各トランザクションに対して許可または拒否の判定を行います。この判定は署名者の判断を支援するものであり、最終的な決定を強制するものではありません。自動トランザクション ポリシーで拒否されたトランザクションでも、十分な数の署名者が承認すれば実行できます。

ルールの記述方法と組み合わせ方法については、トランザクション ポリシー ルールを記述するとトランザクション ポリシーの評価をご覧ください。