前沿:TEE のクロスチェーンブリッジにおける応用

Middle.X
2022-12-20 12:06:21
コレクション
人々がクロスチェーンブリッジの安全性を懸念している今、私たちはTEEを用いて秘密鍵を管理することがマルチシグタイプのクロスチェーンブリッジの標準的な手段になることを期待すべきかもしれません。

著者:Middle.X
Ronnie @Bool Network、Aki @Darwinia に本記事の内容についての議論に感謝します。 本記事の一部は《 PAKAクロスチェーン研究報告 》に掲載されたもので、完全な報告書はクリックしてご覧ください。

多くのクロスチェーンセキュリティ事故の中で、秘密鍵の漏洩は重要なタイプの一つです。典型的なケースは、今年の3月にAxie Infinityの公式ブリッジRonin Bridgeが遭遇した状況と、6月にHarmonyの公式ブリッジHorizen Bridgeが遭遇した状況で、両者はクロスチェーンブリッジのバリデータノードの秘密鍵が漏洩したために重大な損失を被りました。

バリデータノードはプログラムを使用してクロスチェーンイベントに署名を実行する必要があるため、秘密鍵はネットワーク上に露出せざるを得ず、ハッカー攻撃の標的になりやすいです。しかし、この問題は、TEEを使用してノードの秘密鍵を管理することで大幅に回避できます。TEEはクロスチェーンブリッジにさまざまな方法で適用でき、クロスチェーンブリッジのセキュリティとパフォーマンスの最適化に積極的な役割を果たすことができます。

TEEは「Trusted Execute Environment」の略で、私たちの日常生活においても馴染みのあるもので、スマートフォンの指紋認証はTEE内で実行されています。

TEEは、特定のデバイス上で実行される主オペレーティングシステムから隔離された計算環境であり、まるで飛び地(Enclave)のようです。この隔離はハードウェアによって強制的に実現されます。TEE内でプログラムが実行されるプロセスは隠密であり、外部からは感知できず、TEEがハッカー攻撃を受ける可能性を減少させます。プログラムがTEE内で実行を完了した後、出力された計算結果にはデバイスによって生成された署名が付与され、この署名はデバイスの供給者によってリモートで検証され、リモート検証証明が生成されます。リモート検証証明は、外部に対してそのプログラムがTEE内で完全に実行され、改ざんや干渉がなかったことを証明します。このため、TEEは暗号鍵管理、生体認証、安全な支払い処理など、高いセキュリティ要件を持つアプリケーションを実行できます。

pNetwork、Avalanche、Bool Network、LCPのケースを通じて、TEEがクロスチェーンブリッジでどのように具体的に適用されるかを説明します。

pNetwork

pNetworkはProvable Thingsチームによって開発されたクロスチェーンブリッジで、2020年3月に発表され、Wrapブリッジです。Wrap資産はpTokensと呼ばれます。

Wrapブリッジの基本モデルはLock-MintとBurn-Unlockで、pNetworkはTEEノードで構成されたネットワークを通じて、ソースチェーン上のLockとBurnの行為を検証し、ターゲットチェーン上でMintとUnlockを実行します。

任意のTEEデバイスを持つ主体は、200 $PNT(最低3ヶ月)をステークすることでpNetworkのTEEノードになります。pNetwork内のTEEノードネットワークは、クロスチェーンメッセージに対する合意署名を担当します。初期化時に、TEEノードセットは共同で秘密鍵の計算に参加し、公開鍵と秘密鍵の断片を生成します。公開鍵は一つだけで公開状態にあり、秘密鍵の断片はローカルで生成された後、TEE内に「密封」されます。TEEノードの運営者でさえ、秘密鍵の断片を知ることはできません。

TEEノードはEnclave内のプログラムを実行する必要があるだけでなく、Enclave外で接続チェーンのフルノードを実行し、Enclave内の軽ノードがブロックヘッダーを照会できるようにする必要があります。

pTokensの旅

  • TokenからpTokenへのプロセスは以下の通りです:
  1. ユーザーはソースチェーンのスマートコントラクトのLock関数を呼び出し、LockトランザクションTを開始し、Tokenをソースチェーンの管理アドレスに預け、トランザクションの備考フィールドに受取先のターゲットチェーンアドレスを提供します;

  2. TEEノードはトランザクションを監視し、トランザクションTが存在するブロックのブロックヘッダーNのすべてのLockトランザクションを取得し、Enclaveに渡します。また、ブロックヘッダーNとこれらのLockトランザクションのマークルパスも渡します;

  3. Enclave内の軽ノードプログラムはまずブロックヘッダーNを検証し、その後ブロックヘッダーNを使用してすべてのLockトランザクションを検証します;

  4. 検証が通過すると、Enclaveは一連のMintトランザクションに署名し、すべてのターゲットアドレスに対応する数量のpTokenをMintします;

  5. 各Enclaveは相互に暗号通信を行い、完全な署名を合成します(2/3以上の秘密鍵の断片の署名で完全な署名を合成できます)し、これらのMintトランザクションを提出します;

  6. トランザクションはターゲットチェーンにブロードキャストされ、ターゲットチェーンによって確認されると、ユーザーのターゲットアドレスはpTokenを受け取ります。

  • pTokenからTokenへのプロセスは以下の通りです:
  1. ユーザーはソースチェーンのスマートコントラクトを呼び出し、BurnトランザクションTを開始し、pTokenを破棄アドレスに送信し、備考フィールドにターゲットチェーン上の受取先アドレスを記載します;

  2. TEEノードはトランザクションを監視し、トランザクションTが存在するブロックのブロックヘッダーNのすべてのBurnトランザクションを取得し、Enclaveに渡します。また、ブロックヘッダーNとこれらのBurnトランザクションのマークルパスも渡します;

  3. Enclave内の軽ノードプログラムはまずブロックヘッダーNを検証し、その後ブロックヘッダーNを使用してこれらのBurnトランザクションを検証します;

  4. 検証が通過すると、Enclaveは一連のUnlockトランザクションに署名し、管理アドレスからすべてのターゲットアドレスに対応する数量のTokenを転送します;

  5. 各Enclaveは相互に暗号通信を行い、完全な署名を合成し、これらのUnlockトランザクションを提出します;

  6. トランザクションはターゲットチェーンにブロードキャストされ、ターゲットチェーンによって確認されると、ユーザーのターゲットアドレスはTokenを受け取ります。

秘密鍵がEnclave内で保管され、検証と署名のプロセスもEnclave内で行われるため、悪意のある攻撃者がネットワークを攻撃することは経済的にも実践的にも困難です。さらに、pToken NetworkはTEEノードが異なるベンダーのデバイスを使用することを奨励しており、異なるベンダーのTEEデバイスの具体的な原理は異なる可能性があるため、多様なベンダーのTEEノードは攻撃者の攻撃難易度をさらに高めます。攻撃者は複数のベンダーのTEEデバイスを攻撃しなければ攻撃を実施することができません。

したがって、TEEノードで構成されたMPCネットワークは、非TEEノードで構成されたMPCネットワークに比べて、セキュリティ保護の層を追加します。さらに、pNetworkはコードをオープンソースとして選択し、オープンソースコードはEnclave内で行われる各プロセスを明確にし、リモート証明にはプログラムのハッシュルートが含まれているため、誰でもEnclave内で実行されたコードとpNetworkが公開したコードの一致性を検証できます。これはさらなるセキュリティ声明であり、プログラムの作成者が悪意を持つ可能性を排除します。

2021年10月、pNetwork V2がリリースされ、このバージョンはpNetworkをAMBブリッジに拡張しました。

pNetwork V2はV1のコア機能を引き継ぎ、引き続きTEEノードで構成されたMPCネットワークを使用してクロスチェーンメッセージを検証しますが、V2バージョンは資産のクロスチェーンに関連するメッセージに限定されません。

Avalanche Bridge

Avalanche Bridge (AB)はAvalancheの公式クロスチェーンブリッジで、現在Avalanche CチェーンとEthereum間のクロスチェーン資産の移転をサポートしています。

pNetworkと同様に、Avalanche BridgeはTEEノードで構成されたMPCネットワークを使用してクロスチェーンイベントを検証します。Avalanche BridgeのTEEノードはWarden(監視者)と呼ばれています。より低い手数料とより速い速度を追求するために、Avalanche Bridgeは設計上いくつかの最適化を行っています。

まず、検証効率を高めるために、Avalanche BridgeはTEE内でフルノードを直接実行し、Enclave内にインデックスを構築してトランザクションを照会します。これはpNetworkのTEEノードがEnclave外でフルノードを実行し、Enclave内で軽ノードを実行するのとは異なります。もちろん、pNetworkは現在9つのチェーンの資産移転をサポートしており、将来的にはさらに多くをサポートする可能性がありますが、その場合、Enclaveのストレージスペースが課題となる可能性があります。

次に、Avalanche Bridgeはロックされた資産を管理するために契約アドレスではなく通常のアドレスを使用します。これにより、一部の契約呼び出しの費用を回避できます。

初期化時に、Wardenは相互に暗号通信を行い、管理アドレスを作成し、秘密鍵の断片をそれぞれのEnclaveに密封します。この管理アドレスは0xで始まるEOAアドレスで、EthereumとAvalanche Cチェーンの両方で使用できます。

ERC20資産のクロスチェーンを例にとって、Avalanche Bridgeが資産のクロスチェーンを処理する手順を説明します:

  • Wrap:Ethereum -> Avalanche
  1. ユーザーはEthereum上で入金トランザクションを開始し(契約を呼び出す必要はありません)、クロスチェーンする必要のあるERC20資産を管理アドレスに転送します;

  2. 各Wardenはそのアドレスを監視し、この入金トランザクションを発見します(Wardenはチェーン上のメッセージを監視するのではなく、Avalanche Bridgeのフロントエンドインターフェースを通じてユーザーのリクエストを直接発見します。これは、ユーザーがAvalanche Bridgeのフロントエンドインターフェースを介さずに管理アドレスに直接送金した場合、Wardenは何の処理も行わないことを意味します);

  3. WardenはトランザクションをEnclaveに渡し、Enclaveは検証を行います;

  4. 検証が通過すると、Wardenはそれぞれの秘密鍵の断片を使用してMintトランザクションに署名し、相互に暗号通信を行い完全な署名を合成します(3/4以上の秘密鍵の断片の署名で完全な署名を合成できます)。

  5. WardenはAvalanche CチェーンにMintトランザクションを提出し、管理アドレスがMint契約を呼び出してユーザーにWrap資産を鋳造します(セキュリティ上の理由から、Avalanche Bridgeは資産を発信アドレスと同じターゲットアドレスにクロスチェーンすることのみをサポートします)。

  • Unwrap:Avalanche -> Ethereum
  1. ユーザーはAvalanche Cチェーン上でブリッジ契約のBurn関数を呼び出し、指定された破棄アドレスにWrapped資産を送信することで、破棄トランザクションを開始します;

  2. Wardenはこのトランザクションを監視し、トランザクションをEnclaveに渡します;

  3. Enclaveはそれぞれこのトランザクションを検証します;

  4. 検証が通過すると、Enclaveはそれぞれの秘密鍵の断片を使用してUnlockトランザクションに署名し、管理アドレスからユーザーのEthereumアドレスに対応する数量のネイティブ資産を送信します(契約を呼び出す必要はありません);

  5. Enclaveは相互に暗号通信を行い、完全な署名を合成し、UnlockトランザクションをEthereumに提出します。トランザクションが確認されると、ユーザーはEthereum上で管理アドレスからの送金を受け取ります。

Avalanche Bridgeの資産クロスチェーンプロセスでは、MintトランザクションとBurnトランザクションのみが契約を呼び出す必要があり、LockとUnlockトランザクションは通常の送金であり、契約を呼び出す必要はありません。このような設計により、Gas消費が削減され、ユーザー側のクロスチェーン手数料が低下します。

pNetworkとAvalanche Bridgeのいずれも、TEEの特性を十分に活用し、秘密鍵が外部の攻撃者に盗まれる可能性を大幅に低下させています。しかし、TEEノード間の内部共謀を防ぐことはできないことに注意する必要があります。

  • TEEノード間で共謀が行われると、秘密鍵を合成したり、Enclave内のプログラムを置き換えたり、ソースチェーンをフォークして偽のイベントを作成し、Enclaveの署名を騙し取ることが試みられる可能性があります。

次に説明するBool Networkは、「外部攻撃を防ぎ、内部共謀を防ぐ」ことができます。

Bool Network

Bool NetworkもTEEノードネットワークを外部バリデーターとして使用するクロスチェーンブリッジプロジェクトです。Bool Networkはさらに革新を行い、TEEノードのローテーションメカニズムと匿名メカニズムを追加しました。

Bool Networkは任意のメッセージのクロスチェーンブリッジとして設計されており、任意の第三者がその上にクロスチェーンアプリケーションを構築することをサポートします。Bool NetworkはCosmos IBCを参考にし、Channelの概念を導入しました。異なるチェーン上に展開された2つのアプリケーション間でChannelを確立し、両者間のメッセージの順序ある伝達を実現します。各Channelには少なくとも1つのMPC委員会が対応します。この委員会は、現在のEpoch内でそのChannel内のクロスチェーンメッセージに対する合意署名を担当します。このMPC委員会はローテーション制で、任期は1つのEpochのみで、各Epochごとに再選挙が行われます。

  • Bool Networkは現在、各Channelに2つの委員会を割り当て、互いにバックアップを行い、サービスの可用性を向上させています。

誰でも$BOLをステークすることで候補のTEEノードになることができます。各Epochの開始前に、Bool NetworkはRing VRFアルゴリズムを使用して各ChannelのMPC委員会を選出します。MPC委員会のメンバーに選ばれたノードは、通信のための一時的なID(公開鍵と秘密鍵のペア)を取得し、合意署名プロセス中に同じ委員会内の他のTEEノードと通信します。Epochが終了すると、すべての一時的なIDは無効になり、ネットワークは再びノード選挙を行い、新しいローテーションMPC委員会を選出し、彼らに新しい一時的なIDを付与します。

各候補のTEEノードは登録時に永続的なID情報(デバイスコード)を提供する必要がありますが、ノードが通信時に使用する一時的なIDは永続的なID情報を露出しません。言い換えれば、ノードは通信時に相互に匿名です。候補ノードが100個ある場合、通信しているノードがこの100個の中の1つであることはわかりますが、具体的にどれであるかはわかりません。

各ChannelのMPC委員会に必要なTEEノードの数や署名の閾値は、Channelの作成者がカスタマイズします。一般的な閾値の値には15-of-21、13-of-19、5-of-9があります。

同じEpoch内で、異なるChannelのMPC委員会メンバーは重複する可能性があり、一部の候補ノードがどの委員会にも選ばれず、アイドル状態になることもあります。これらの状況は正常です。

Bool Networkは、TEE、ローテーションメカニズム、匿名メカニズムの組み合わせを通じて、堅牢なブラックボックスを構築しました。署名プログラムは匿名ノードのTEE内で実行され、彼らの間の通信内容は暗号化されているため、作業中のTEEノードの運営者自身は、自分がどのChannelのMPC委員会に選ばれたか、どのノードと合意通信を行ったか、どのメッセージに署名したかを知ることができません。「自己認識」すらできず、「他者を知る」ことはさらに不可能です。これにより、ノードの共謀がほぼ不可能になります。

外部攻撃者の観点から見ると、特定のChannelを攻撃しようとする場合、攻撃者は現在のMPC委員会の背後にあるデバイスや主体を知ることができず、通信からこれらの情報を傍受することもできません。内部共謀でも外部攻撃でも、すべての候補ノードの大多数を攻撃しなければ成功する可能性はありませんが、これは明らかに大きなコストがかかります。

Bool Networkは現在開発中のプロジェクトであり、まだ完全に確定していない技術的な詳細があります。

LCP

LCPの正式名称はLight Client Proxy(軽クライアントプロキシ)で、Datachainが提案したTEEをクロスチェーンブリッジに使用する新しいパラダイムです。本記事執筆時点で、LCPは概念段階にあり、コード実装はありません。LCPは前述の3つとは完全に異なります。pNetwork、Avalanche Bridge、Bool Networkの考え方は、TEEを使用して秘密鍵を管理し、メッセージを検証し、署名を実行することです。LCPの考え方は、TEEを使用して軽クライアントを実行することです。

LCPの考え方は、LayerZeroをある程度参考にしています。LayerZeroは外部オラクルネットワークを使用して超軽クライアント(Ultra Light Client)を実行しますが、この「超軽クライアント」は、実際のチェーンノードのように新しく取得したブロックヘッダーを検証するのではなく、オラクルネットワークのノードによる合意署名を通じてブロックヘッダーの有効性を確認します。LCPはTEE内で本物の軽クライアントを実行することを目指しています。

軽クライアントクロスチェーンブリッジは、最も安全性の高いクロスチェーンブリッジ技術タイプであり、ターゲットチェーン上にソースチェーンの軽クライアントを展開することで、ターゲットチェーンがソースチェーンのトランザクションを検証できるようにします。しかし、その欠点は非常に顕著です:

チェーン上のストレージと計算リソースが逼迫しており、チェーン上の軽クライアントはブロックヘッダーの同期と検証の過程で多くのGasを消費します。これにより、チェーン上の軽クライアントは非常に高価になり、場合によっては経済的に実行可能性がないこともあります。比較的軽量なチェーン上の軽クライアントを構築するためのいくつかのソリューションがありますが、これらのソリューションは開発の難易度とコードの複雑さを増加させます。

軽クライアントをオフチェーンで実行することで、上記の問題を効果的に解決できますが、チェーン上でオフチェーン軽クライアントの実行状態を検証する必要があります。これはTEEのリモート証明を通じて実現できます。理論的には、LCPは1つのTEEノードだけで十分であり、複数のノードがトランザクションの真実性を合意確認する必要はありません。しかし、可用性を確保するためには、一定の冗長性を設けることが必要です。

トランザクションTを検証する必要がある場合:

  1. トランザクションTは最初にTEEノードに提出されます;

  2. TEEノードはトランザクションT、トランザクションTが存在するブロックの高さN、トランザクションTのマークルパスをEnclaveに渡します;

  3. Enclave内の軽クライアントは更新プログラムを実行し、更新されたブロックの高さNに達します(外部のフルノードに接続する必要がありますが、信頼する必要はありません)そして、高さNのブロックヘッダーを使用してトランザクションTをSPV検証します。

  4. Enclaveは検証が完了した後、リモート認証を通じてリモート認証証明を生成します;

  5. TEEノードはトランザクションTの検証結果とリモート認証証明をターゲットチェーンに提出します;

  6. ターゲットチェーン上の検証プログラムはリモート認証証明の有効性を確認し、プログラムが確かにTEE内で実行されていること、そして実行されたプログラムが正しい軽クライアントプログラムであることを確認します。

注意すべきは、pNetworkのTEEノードも軽クライアントを実行しますが、その軽クライアントはトランザクションを検証した後、ローカルの秘密鍵の断片によってトランザクションに署名を行い、チェーン上で最終的に検証されるのは署名であり、TEE内で実行されるプログラム自体ではないため、pNetworkは依然として外部検証の範疇に属します。LCPはリモート認証証明をチェーン上に提出し、その中にはプログラムのハッシュが含まれており、チェーン上でTEE内で正しい軽クライアントプログラムが実行されたことを確認するために使用されます。「ネイティブ検証の拡張」としてLCPを分類することがより適切です。

TEE内で軽クライアントを実行することで、事態は非常に簡単になります。軽クライアントはストレージと計算リソースを節約する方法を考慮する必要がなく、複雑な"スリム化"と"拡張"のソリューションも必要ありません。しかし、TEE内で軽クライアントを実行することは、常にチェーン上で軽クライアントを実行する場合よりもセキュリティレベルが低下することを認識する必要があります。なぜなら、TEEは絶対的に安全ではなく、その技術的防護手段が破られる可能性があり、TEEデバイスのベンダーにも悪意を持つ可能性がわずかに存在するからです。しかし、この問題はTEEノードの冗長性とデバイスベンダーの多様化によって解決できます。

小結

以上、TEEがクロスチェーンブリッジに適用されるいくつかの状況について議論しました。

TEEがクロスチェーンブリッジで最も直接的に適用されるのは秘密鍵の保管です。pNetwork、Avalanche Bridge、Bool Networkのように、クロスチェーンブリッジのセキュリティに対する懸念が高まっている今、TEEを使用して秘密鍵を管理することがマルチシグタイプのクロスチェーンブリッジの標準的な手段となることを期待すべきかもしれません。TEEノードの共謀を防ぐために、Bool Networkのノード匿名化の考え方は非常に良い示唆を与えてくれます。また、LCPの提案は軽クライアントクロスチェーンブリッジに新しいパラダイムを提供し、軽クライアントブリッジの理論的な安全性を基本的に維持しつつ、軽クライアントブリッジの汎用性と拡張性を向上させています。

クロスチェーンブリッジは依然として激しい進化の中にあり、TEEの利用はその進化の方向性の一つに過ぎません。他の進化の方向性を観察しており、より安全なクロスチェーンブリッジに期待を寄せています。

参考資料

https://hackmd.io/@phala/BJh_3bbQU

https://www.8btc.com/article/608236

https://ptokens.io/ptokens-rev5b.pdf

https://medium.com/pnetwork/introducing-pnetwork-v2-bfa7fcdcedb8

https://zhuanlan.zhihu.com/p/406818768

https://medium.com/avalancheavax/avalanche-bridge-secure-cross-chain-asset-transfers-using-intel-sgx-b04f5a4c7ad1

https://mp.weixin.qq.com/s/Hw-jW9YtyJjxtI-xo_ANUQ

https://twitter.com/TigerVCDAO/status/1588215376235462656

https://docs.lcp.network/

ChainCatcherは、広大な読者の皆様に対し、ブロックチェーンを理性的に見るよう呼びかけ、リスク意識を向上させ、各種仮想トークンの発行や投機に注意することを提唱します。当サイト内の全てのコンテンツは市場情報や関係者の見解であり、何らかの投資助言として扱われるものではありません。万が一不適切な内容が含まれていた場合は「通報」することができます。私たちは迅速に対処いたします。
チェーンキャッチャー イノベーターとともにWeb3の世界を構築する