Litentryの各リンクをフォローして最新情報を入手しましょう!
前回までのTrusted Execution Environment(TEE)の説明に加え、今回はTEEのサイドチェーンとその構成要素について説明します。
下図は、ブロックチェーンの3つのレイヤーを示しており、それぞれが責任を負っています。
IDアグリゲーションを実現するために、LitentryはEthereumアカウントや計算されたクレジットスコアなどの機密性の高いユーザデータを保存する必要があります。そこで、データの保存と処理のセキュリティとプライバシーを確保するために、Trusted Execution Environment (TEE) を選択しました。Litentryは、複数のTEE搭載ノードからなるサイドチェーンを開発し、安全でプライベートな方法でユーザーデータの分散保存と処理を提供しています。
レイヤー0:KusamaやPolkadotのようなリレーチェーンのメインネットで、リレーチェーンやパラチェーンネットワーク全体で共有されるセキュリティを提供する役割を担っています。また、XCMメッセージのルーターとしても機能します。
レイヤー1:LitentryパラチェーンやLitmusパラチェーンは、アプリケーションに特化したブロックチェーンとして採用されています。パラチェーンスロットを占有することでリレーチェーンと相互接続し、リレーチェーンがそのブロックを検証し、XCMメッセージを監視することを可能にします。
レイヤー2:TEEサイドチェーンは、Integriteeによってサポートされ、ランタイムがSGXセキュアラン環境で実行できるようにします。これは、全てのステートとエクストラシンクを公開、可視化するレイヤー1のパラチェーンとは異なります。
このアーキテクチャの要点は、ブロックチェーンの3つのレイヤーすべてがSubstrateフレームワーク上に構築されていることです。このフレームワークは高度なカスタマイズが可能で、開発者はランタイムと実行ロジックを構成してさまざまな役割を果たすことができます。
パラチェーンは、dPOS(Delegated Proof of Stake)メカニズムを利用してブロックの同期と生成を行うノードで構成され、サイドチェーンは、Trusted Execution Environments(TEE)を備えたノードで構成されます。
上記の図では、Teerex Pallet、SGX Runtime、Identity Hub Client、Worker Serverという4つのソフトウェアコンポーネントが存在します。
パラチェーンのTeerex palletは、TEEワーカーの登録、検出、および相互通信を可能にします。その主な機能は以下の通りです:
SGXエンクレーブのリモート検証を可能にする検証済みレジストリとして機能し、公開監査可能性を提供します。
エンクレーブ間の信頼ギャップを埋めるために機密性を中核に設計され、誰でも実行されたコードを検証することができます。
SGXエンクレーブによって実行されるオフチェーン機密状態遷移呼び出しの間接的なプロキシとして機能します。
詳細情報については、Integritee のドキュメントを参照してください。
サイドチェーンワーカー内のSGXランタイムは、全ての基板互換パレットの機密実行と統合を可能にします。
SGXパレットは、TEE SGXワーカーのエンクレーブでインスタンス化され、WASM blob/binaryにコンパイルされ、tee-sgx-sdkに依存します。SGXノードにプライバシーデータを格納し、IDのリンク、アサーションの検証、IDグラフの格納を行います。外部パラメータ/アドレスはパラチェーンで暗号化され、秘密鍵はSGXノードのみが知っており、SGXでデータを復号化し、ランタイムに呼び出しをディスパッチします。これによって、Litentryが掲げるユーザーデータのプライバシーを維持できます。
詳細は、SGX ランタイムレポに記載されています。
Identity Hub Clientは、呼び出しや操作を実行するために使用されるSubstrateベースのツールです。
クライアントは、RPC/WSS経由でパラチェーンやサイドチェーンとやり取りします(図はサイドチェーンがまだオープンしていないため、サイドチェーンのやり取りを表示していません)。パラチェーンへの呼び出しは、暗号化され機密性を呼び出すことができます。これにより、操作の内容は、ClientとサイドチェーンTEE(SGX、SGXワーカー/ノード、SGXランタイム)だけが見ることができます。
操作の宛先に応じて、クライアントが実行できるさまざまなタイプの呼び出しがあります。以下の通りです:
Untrusted Call- クライアントは、Untrusted Callを介してパラチェーンノードと対話し、トランザクションまたはクエリを送信します。例えば、クライアント経由の残高転送はUntrusted Callです。
Trusted call- クライアントは、TEE ワーカーサーバと対話します。例えば、SGX アカウントリンカーパレットから外付けされている link_eth を呼び出す。または、SGXの暗号化されたデータをクエリする10いった形です。
Direct call- クライアントが SGX ランタイム内の外部コールを呼び出す (Untrusted Callと同じ)
Indirect call- クライアントはSGXランタイムコールを暗号化し、パラチェーンのTeerexパレットに送信します。ワーカーノードはブロックを同期してcall_work外部コンポーネントを識別し、パラチェーンからの呼び出しを解析して、SGXランタイムにディスパッチします。詳細は下図をご覧ください。
ワーカーサーバは、TEEの呼び出しや操作に応じて、指定された入力とリソース制限で関数を実行します。十分なスケーラビリティを確保するため、通常、これらの実行には多数のワーカーサーバーが必要となります。
サーバーは、TEE 全体の中で最も複雑な部分であり、その主な機能は以下の通りです:
リモート認証(TEEメーカー(インテル)にTEEの認証を依頼するプロセス)の実行に使用。製造元は、TEE本体と実行バイナリのハッシュ値の両方が本物であることを確認するためのレポに署名
信頼されたノードでSGXランタイムの実行環境を提供
パラチェーンからのブロックの同期、call_workからのデータの復号とパース
サイドチェーンのブロック生成、ノード間の同期とコンセンサスの実施
RPCとWSSのサービスを提供
外部経由でパラチェーンに応答を送信
ソフトウェア実行の観点からは、サーバーは信頼できるTEE部分と信頼できないTEE部分の境界となります。信頼できるコードはSGXで実行され、スタートアッププロセス、RPCサーバー、エンクレーブの初期化など、信頼できないコードはパレットで実行されます。
シャーディングは、サイドチェーン設計の初期段階からサポートされています。サーバーノードは、1つのシャードに参加します(各コールにデフォルトのパラメーターであるシャードIDが存在)。その後、サーバーノードは、参加したのと同じシャードで呼び出しを実行します。シャーディングの利点は次のとおりです:
各シャードの状態は分離されており、異なるシャードノードは、互いのプライベートデータを見ることができない
シャードノードは他のシャードからの呼び出しをスキップでき、リソースを節約し、ブロック内の外部実行を少なくして高速化する
シャーディングは、ユーザーデータを保護すると同時に、大規模なソリューションの利用を可能にする
Identity HubでIDリンク(Web2 <> Web3、またはクロスチェーンウォレットリンク)または検証可能なクレデンシャル生成をリクエストすると、リクエストを完了するために必要な全てのデータがTEE環境に保存され計算されます。
これには、リクエスト自体、異なるウォレット間の関係、VC での主張をサポートする特定のウォレットから取得されたデータなどが含まれます。
トークン転送、ガバナンス、ステーキング、クロスチェーン転送を含むLitentry Parachainの初期機能には、プライバシーを保護する処理は含まれません。
Litentryのプライバシーおよびアイデンティティ管理ソリューションに関する教育記事に知識と専門性に基づく貢献をしていただいた、Mel Zhou、Eric Zhang、Kailai Wangに感謝します。
Litentryのプライバシーシリーズの過去記事:
不明点がございましたら、お気軽にコメントください。
Litentryは、複数のネットワークにまたがるユーザーIDの連携を可能にする分散型IDアグリゲーターです。DIDインデックスプロトコルとSubstrateが構築した、分散型DID検証ブロックチェーンを特徴とします。分散型で相互運用可能なIDアグリゲーションサービスを提供し、DIDメカニズムの複雑さを軽減して利便性を向上させます。Litentryは、ユーザーが自身のIDを管理し、使用するdAppsが、異なるブロックチェーン間でユーザーのDIDデータをリアルタイムに取得するための安全な手段を提供します。
Litentryの各リンクをフォローして最新情報を入手しましょう!