Worldcoin Foundation は Orb のソフトウェアの主要コンポーネントをオープンソース化します

Mar 22, 2024 1 Minute Read

Orbは、最大限のプライバシーとセキュリティを保ちながら、オンラインで自身の人間性を証明する方法を提供するために作られました。 現在、Orbのソフトウェアの主要コンポーネントがMIT/Apache 2.0デュアルライセンスの下でGitHub上で公開されています。 オーブをオープンソース化することの重要性についてさらに詳しい情報が必要な場合は、ワールドコインテックツリーのハードウェアセクションを参照してください。

これらの新しいオープンコンポーネントは、以前にリリースされたハードウェアおよび虹彩認識リポジトリを補完し、その公開はオーブの画像処理の透明性とプライバシーの主張の検証可能性に関する重要な進展を示しています。 本日のリリースには、画像をキャプチャしてWorld Appに安全に転送するために必要なすべてのコードが含まれています[1]

この投稿では、Orbのソフトウェアの設計要件をレビューし、主要な実装の詳細を強調し、その将来を見据えます。

Orbのソフトウェアの作業に興味がある場合は、プロジェクトの貢献者Tools for Humanityのオープンな役割をこちらでご覧ください

Orb のソフトウェアの概要

最上位レベルの要件

Orbは、AIから人間を区別するためにWorld IDの最高の検証レベルを提供します[2]。 これはまず、目と顔の画像を使用してWorld IDホルダーが人間であることを確認することによって行います。 これらの humanness チェックが合格すると、Orb は次に 虹彩認証 プロセスを実行し、結果として得られた 虹彩コード を、この人のユニークネスを確認する サービスに送信します。 プロセスは数秒で完了します。 Orb によって認証された World ID の使用方法に関する詳細は、こちら をご覧ください。

Figure

人間性を確認するための Orb の唯一の使用ケースは、生体認証デバイスには前例のない次のトップレベルの要件につながります:

  1. プライバシー: World ID 認証中、Orb はデバイス上でローカルに画像を処理し、その後安全に ユーザーの管理 に転送する必要があります。 これにより、Orbに画像を保存したり、処理のために中央のバックエンドにアップロードする必要がなくなります[3]
  2. セキュリティ: Worldcoin プロトコルは、Orbs が本物の人間の World ID のみを確認することを期待しています。 つまり、Orbは敵対的な環境でもスプーフィングや改ざんに対して非常に耐性がある必要があります[4]。 改造されたり偽造されたデバイスは、プロトコルによって拒否されなければなりません。 
  3. 透明性と検証可能性: Orbは、その製造者やオペレーターに対して最小限の信頼を要するように設計されなければなりません。 一般の人々がOrbを監査できる方法がなければなりません。この監査には、ソフトウェアの状態や暗号鍵のチェックが含まれます。 詳細については、関連するホワイトペーパーのセクション を参照してください。

これらの要件は、Orbの設計に影響を与え、そのソフトウェアのほぼ全ての側面に影響を与えます。

Figure

Orbのコンピュートスタック

Tools for Humanity (TFH) は、Worldcoinプロジェクトへの貢献者として、オーブのための安全で強力なコンピューティング環境を構築するために何年も費やしてきました。 設計の中心にあるのはNVIDIA Jetsonで、これがOrbの5つのカメラストリームをローカルで処理し、数秒でWorld IDを確認します。 各Orbには追加で、Arm Cortex M4マイクロコントローラーが2つ搭載されており、電源管理、リアルタイム制御、タンパー検出などを処理します(Zephyr RTOSを実行しています)。 最後に、各Orbには、ハードウェアウォレットのように、タンパー耐性エンクロージャ内に秘密署名キーを保存する専用のセキュアエレメントがあります。

OrbはJetson上で複数のRustアプリケーションを実行しており、非同期Rustを多用しています。 これらのアプリケーションは、センサーからのデータ処理、ニューラルネットワークとのインターフェース、システムアップデートの適用などのコア機能を処理します。 ニューラルネットワークの推論のために、OrbはNVIDIAのTensorRTエンジンを使用して、Jetsonの384コアGPUを完全に活用します。 

これらすべてをまとめているのがOrb OS[5]です:これはDebianおよびUbuntuに基づいた、セキュリティに最適化されたカスタムGNU/Linuxディストリビューションです。 Orb OSには、全システムの整合性チェック、セキュリティ強化されたLinux設定、信頼性の高いオーバーザエア更新システムおよび再現可能なビルドのサポートが含まれています。 重要な暗号操作(例えばバックエンドへの認証)のために、Orb OSはJetson上の信頼実行環境(TEE)および専用のセキュアエレメントと通信します。 

コードのツアー

今日リリースされたOrbのソフトウェアの主要なコンポーネントの中には、do_signup 関数があり、 orb-core, これは各World ID認証のためのOrbの高レベルのフローをエンコードします。 この関数は画像キャプチャフェーズバイオメトリック処理フェーズを呼び出し、その後、署名された虹彩コードを一意性サービスに送信します。 加えて、 do_signupupload_custody_images を呼び出し、ユーザーの画像を安全にWorld Appに送信します。

画像キャプチャ

数秒で、オーブの高度な光学システムは高品質の目と顔の画像を信頼性を持って作成できます。 このコア機能は、カスタムソフトウェアとニューラルネットワークによって実現され、顔検出目の追跡オートフォーカスおよび自動露出を実施するために協力しています。

オートフォーカスは、イメージングシステムを実装する上で最も困難な部分の一つでした。 それは個人の目の鮮明な画像を迅速に見つけるために 液体レンズ に特化した制御を行います。 Rust 実装には フィードバックコントローラー が含まれており、 リアルタイムニューラルネットワーク によって提供されるシャープネス推定値があります。 制御出力は Jetson から マイクロコントローラー に送信され、 内部制御ループ を実装してレンズに電流を供給します[6]

最もシャープな焦点値を見つけるための外部フィードバック制御ループの一端を垣間見る。

Figure

オートフォーカスはOrbのカスタム液体レンズに指令を出し、迅速にシャープな虹彩画像を見つけます。

画像処理

Orbが十分な品質の眼と顔の画像を作成すると、それらはバイオメトリックパイプライン渡されます。 このパイプラインには2つの目的があります: 画像が本物であることを確認する[7] と虹彩コードを生成すること。 両方ともカスタムニューラルネットワーク用のPythonインターフェースや、ガボールフィルタの実装によって処理されます。

前の段階で得られた高品質の目の画像は に渡されます 虹彩認識推論システム (IRIS) に。 この最先端の実装は TFH によって構築され、その後 Worldcoin Foundation によってオープンソース化されました。 Rustのコードは、IRISやその他の大型モデルを常にメモリに保持するよう最適化されており、これらの大型コンポーネントを定期的に再ロードするオーバーヘッドを避けます。 これは、AndroidのZygoteプロセスに触発された設計で達成され、共有依存関係(CUDAなど)の冗長なコピーの読み込みを回避します。

プライバシーとセキュリティ

プライバシーとセキュリティは、Orbの構築において常に最優先事項でした。 Orbのプライバシーに関する主張[8] は、Trail of Bitsによるホワイトボックス監査の焦点でした。これは最近公開されました。 さらなる監査が進行中であり、オープンソース化と合わせて、プライバシーとセキュリティに関する透明性を継続的に高いレベルで維持するという財団の目標を反映しています。

プライバシーに関する重要なステップの一つは、「パーソナルカストディ」という機能のためにOrbからWorld Appに個別データを送信することです。 個人は、このセルフカストディデータを使用して、たとえばWorld Appでの顔認証に使用できます。 将来を見据えると、この機能により、ユーザーがWorld IDを再確認するためにOrbに再度戻る頻度を減らすことができるかもしれません。

このOrbへの実装は、個人が常に自分のデータをコントロールできることを保証します。 各データパッケージは、署名された後、ユーザー提供の公開鍵で暗号化され、モバイル電話に転送される前に[9][10]。 署名は専用のセキュア要素によって行われ、製造中にJetsonと暗号的にペアリングされています[11]。 この暗号化の実装は、封印されたボックスを使用して、生体認証データを個人だけが復号できるようにしています[12]。 暗号化されたデータがOrbから個人のWorld Appに送信されると、このデータの非暗号化コピーはどこにも存在しません。 

今後の展望:透明性と検証可能性

Orbのソフトウェアのこの初期リリースは、Orbの透明性と検証可能性を向上させるという目標に向けた重要なステップです[13]。 次のステップとして、Worldcoin Foundation と広範な Worldcoin コミュニティは、Orb ソフトウェアに関連する次の分野に焦点を当てるつもりです:

  1. 最大限にオープンな開発。 今日リリースされたほとんどのコンポーネントは、すでに公開リポジトリでオープン開発されています。 しかし、一部のコンポーネント(特にorb-coreorb-secure-element)は、内部バージョンのフォークとしてリリースされており、いくつかの機密[14]コードが手動で削除されています。 プロトコルの使命に従い、コミュニティの目標はこの差異をなくし、機密でないコードをすべてオープン開発に移行することです。
  2. 信頼できないクローズドソースのコンポーネント。 クローズドソースコンポーネントへの信頼を最小限に抑えるために、それらを「サンドボックス」で実行してシステムアクセスを制限しています。 現在の サンドボックス構成 は、すべてのMLモデルがネットワークと永続ストレージにアクセスするのを防ぐために積極的に改良中です。 重要な点として、このサンドボックス実装自体がオープンソースです。
  3. 分散型監査をサポートします。  Worldcoin Tech Tree は、特定の Orbs が実行している正確なソフトウェアなどのプロパティを証明するサポートを含んでいます。 誰でもこれらの証明を行い、その結果を公表できるべきです。 このインフラストラクチャは、オーブ供給業者に対する必要な信頼を減らすために必要です。 そのような証明をサポートするために、セキュアなバージョン報告や公共の再現可能なビルドを含むいくつかのエンジニアリングプロジェクトが進行中です。

最後に、これらのコンポーネントは、特にエッジデバイス上で機械学習を実行する多くの他のプロジェクトにセキュリティ、プライバシー、および透明性をもたらすことを目的としています。 例えば、AIを活用した学習環境( これ のような)も、Orbに似たデータプライバシーの課題が伴います。 ワールドコイン財団は、AIによって駆動される世界を安全にするために、コミュニティが今日オープンソース化されたコンポーネントを継続的に改善し、他のプロジェクトにおけるその有用性を最大化することを望んでいます。

リリース詳細

本日利用可能なコンポーネント

コンポーネント名 説明
orb-core Orb上の主要なアプリケーションで、World ID認証フローを含みます。

本日のリリースは、内部バージョンのフォークであり、不正検知機能が削除されています。
orb-attest バックエンド通信のための一時的な認証トークンを生成するためのセキュアエレメントを使用します。
orb-secure-element 専用のセキュアエレメントへのインターフェース。
orb-firmware OrbのメインMCUで動作するファームウェア。
orb-messages メインMCUと通信するためのProtobuf定義。
orb-ui Orbのライトと音を管理します。
orb-can LinuxでCANを使用するためのRustラッパー。
orb-security-utils Rustで一般的なセキュリティに敏感なタスクを実行するためのライブラリ。
orb-backend-state バックエンドからOrbの状態を取得します。 現在は使用されていません。
orb-slot-ctrl EFI変数を介してOrbのブートスロットを管理します。
seek-camera サーマルカメラの安全なRustラッパー。
thermal-cam-util サーマルカメラの管理用ユーティリティツール。

今後の作業

コンポーネント名説明
orb-core Orb上の主要なアプリケーションで、World ID認証フローを含みます。

プライベートコードパスのインターフェースは明示的にすることが期待されています。 非プライベートコードはオープン開発に移行することが期待されています。
orb-os Orb OSのためのビルドスクリプト。

これらのスクリプトと実行可能なコンテナイメージは公開されることが期待されています。 セキュリティに敏感なコンポーネントは公開イメージから削除されることが期待されています。
orb-update-agent オーバー・ザ・エア (OTA) アップデートを実行する責任があります。
orb-supervisor オーブ上の他のカスタムサービスを調整します。
orb-trustzone JetsonのTrusted Execution Environment(TEE)で実行されるコード。
orb-update-verifier 更新が成功した場合にロックインします。

References

  1. 1.
    World Appは、プロジェクトの貢献者であるTools for Humanity(TFH)によって作成・運営されている、最初のWorld ID対応ウォレットです。
  2. 2.
    proof of humannessの必要性に関する一般的な概要については、Vitalik Buterinの最近のブログ投稿を参照してください。
  3. 3.
    ユーザーは、自ら進んでWorldcoin Foundationに画像へのアクセスを許可し、信頼、安全性を確保しシステムを改善することができます。
  4. 4.
    完全な不正検出措置のスイートは、オーブだけでなく、オーブのバックエンドおよびWorld Appにも及びます。 セキュリティ上の理由から、本日のリリースにおいて公開されているソースコードには、詐欺防止に関連するすべてのOrbソフトウェアコンポーネントは含まれていません。
  5. 5.
    Orb OSビルドソースは今後のリリースに含まれます。 詳細についてはリリーステーブルを参照してください。 
  6. 6.
    マイクロコントローラ上の第2制御ループは、レンズの自然振動を安定させるのに役立ちます。
  7. 7.
    「本物」とは、画像が本物の人間のものであることを意味します。 例えば、Orbの前の画面に表示された画像は拒否されます。 これらの詐欺確認はオープンソースリポジトリには含まれていません。 詳細については、「今後の展望:透明性と検証性」のセクションを参照してください。
  8. 8.
  9. 9.
    個人の公開鍵は、バックエンドインフラストラクチャを通じてWorld AppからOrbに送信されます。 バックエンドは信頼される必要がありません。なぜなら、公開鍵のハッシュがQRコードを介して直接Orbに送信され、その鍵が使用される前に検証されるためです。 
  10. 10.
    この公開鍵はWorld Appによって生成され、個人保護データを暗号化するためだけに使用されます。 追加の詳細はこちらに指定されています。
  11. 11.
    このプロセスのさらなる分散化に関する詳細はこちらにあります。
  12. 12.
    Orbでさえも、個人保管パッケージを暗号化した後に復号化することはできません。 
  13. 13.
    「オラクル: Orbs」セクションを参照してください分散化の推進.
  14. 14.
    「センシティブ」コードは、不正チェックと改ざん検出に関連しています。

免責条項

上記の内容は、記載された日時点の情報に基づいています。 本内容には、リスクや不確実性、前提条件が含まれており、常に正確であることが保証されるものではありません。また、予告なく変更される場合があります。 免責条項の全文は、利用規約に記載されています。重要なユーザー情報は「リスク」ページをご参照ください。

この記事の情報は12ヶ月以上前のものであり、古くなっている可能性があります。 プロジェクトに関する最新情報は、 world.org/blog を訪問してください