
2025/12/24 2:34
**クラン向けの安全なピア・ツー・ピア(P2P)アプリプラットフォームへ** 本資料では、クランエコシステムに特化した堅牢なピア・ツー・ピアアプリケーションプラットフォームを構築するための主要目標、アーキテクチャ、およびセキュリティ対策について概説します。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
(欠落要素の補完と詳細の明確化を含む)**
## 改訂概要 Clan フレームワークは、まずマシン・サービス管理向けに設計されており、長期的には Big Tech に匹敵するピアツーピア型でユーザーが制御できるソフトウェアを実現することを目指しています。Nix を基盤とし、限られた nixpkgs バージョン間でコードをキャッシュすることで高速かつ再現性のあるアプリケーションを提供します。 安全性は microVM(muvm/libkrun)により保証されます。microVM は数百ミリ秒で起動し、ハードウェアベースの隔離機能を備えています。また Wayland と GPU 仮想化(virtio‑gpu, VirGL/Venus, DRM ネイティブコンテキスト)がグラフィックスサポートを提供します。D‑Bus/XDG デスクトップポータルは sidebus プロジェクトを通じて統合され、vsock の代わりに virtgpu クロスドメイントランスポートを使用することで加速とセキュリティが向上しています。 Clan は分散型コミュニティソフトウェアが直面する課題(複数のバックエンドオプション、複雑なセルフホスティング、不安定な P2P 接続や非同期通信の欠如)に対処します。これは事前接続でありながら隔離され、明示的な権限を通じて共有可能です。現在の開発は GPU サポート(カーネル ≥ 6.13、QEMU `rutabaga_gfx` 修正、Sommelier および libkrun API の微調整)とポータル統合に集中しています。インストール手順は munix プロジェクトで入手可能であり、チームはバグ報告を歓迎します。 成功すれば、Clan は中央集権型サービスと競合できる安全かつ共有可能なユーザー体験を提供し、オープンソースコミュニティが分散エコシステム内でソフトウェアをデプロイ・管理する方法を再構築します。
本文
クラ (Clan)フレームワークの既存機能は主にマシンとサービス管理に注力していますが、今後はさらに多くを目指します。私たちの使命は、ピアツーピアでユーザー制御型のコミュニティソフトウェアがビッグテックの商用ソリューションに勝てるようにすることです。そのため、FOSSスタックが専有プラットフォームと同等の使い勝手と利便性を実現できるようなプラットフォーム基盤を構築しています。
しかしながら、FOSS の世界はまだ商用プラットフォームに比べて重要な点で遅れを取っています:
- ウェブ・モバイルアプリは強力にサンドボックス化されており、許可されたデータの監視に対して攻撃的になることがありますが、隔離モデルは堅牢です。分離されたアプリケーションを有用にする共有モデルも存在します。
- FOSS の世界では、ユーザーアカウントへの完全アクセスでソフトウェアを実行するケースが一般的です。Flatpak はローカルソフトウェアプラットフォームに最も近いものですが、そのメインリポジトリは緩やかな方針で完璧ではありません。
- 中央集権型のウェブサービスは「複数インスタンス」を単にアカウントを切り替えるだけで実現できます。セルフホスティング型ウェブサービスは簡易的にマルチインスタンス化でき、Android でも現在マルチインスタンス機能が提供されています。ローカルソフトウェアはしばしばグローバルデータベースを欠いており、ある場合はマルチインスタンス化するには高度な知識が必要です。
- 商用アプリは常にオンラインのリモートサーバーと連携しており、ユーザーはクライアントとサーバーを接続する必要がありません。分散型コミュニティソフトウェアは悪い選択肢の間で挟まれています:複数の商用バックエンドをサポートすると面倒になり目的が失われ、従来のウェブサーバーをセルフホストすると複雑・不安定・公開攻撃対象になります。直接ピアツーピア接続は設定が難しく信頼性も低く、非同期通信も不足しています。
したがって… コミュニティがインストールとロードが高速で、ネットワークサービスに事前接続され、安心できる隔離レベルのセキュリティを備えつつ、明示的な権限を通じて十分に共有可能なアプリを提供するためには何が必要でしょうか?
最初のピースは、当然ながら Nix です。Clan プロジェクト全体は Nix を基盤として構築されており、将来のアプリプラットフォームも例外ではありません。Nix はキャッシュのおかげで任意のソフトウェアを迅速に取得・実行できるようにします。共通の nixpkgs ツリー版へ全員を誘導すれば、多くのダウンロードは Web アプリの読み込みとほぼ同等の速度になります。
次に、Wayland と GPU 仮想化、D‑Bus ポータルを備えたマイクロVM ハイパーバイザーを追加します… そしてついに未来が垣間見えるようになります!
マイクロVM
モダンなアプリプラットフォームには安全な隔離が不可欠です。ハードウェアベースの仮想化は Linux の名前空間など共有カーネルメカニズムよりも信頼性が高く、すべてのユーザーが同じカーネルを走らせることで環境の一貫性と再現性も向上し、異なるホスト OS でも移植性が確保されます。
従来型 VM は「コンピュータ全体」をシミュレートするために重く感じられます。アプリ隔離ではその必要はなく、高性能・低オーバーヘッドを実現するためにスタックを簡素化できます。マイクロVM のアイデアは、AWS の Firecracker がサーバー側で直接カーネルへブートし(ファームウェアをスキップ)、数百ミリ秒の起動時間を達成したことから広まりました。
クライアント側では Asahi Linux が muvm(libkrun をベースとする Firecracker 風 VMM)を使用しています。これはダイナミックライブラリとして提供され、さまざまなフロントエンドで利用できます。我々のプラットフォームでは muvm を採用し、変更を加えて有効にした後、名前空間ベースの Bubblewrap と組み合わせて NixOS のシステムクローズャーをマイクロVM 内で実行しています。
デスクトップと GPU サポート
初期の virtio‑gpu はフレームバッファを使用していました。VirGL は VM 境界を越えて OpenGL を転送し、3D グラフィックスを可能にしました。Venus はこれを Vulkan へ拡張しました。Chrome OS は名前空間からハードウェア仮想化へ移行し、virtio‑gpu が Unix ドメインソケット経由で共有メモリと DMA‑BUF ディスクリプタを転送するように拡張しました。Google の crosvm はホスト Wayland ソケットへ接続し、Sommelier はゲストアプリ用に通常の Wayland ソケットをプロキシします。
crosvm の virtio‑gpu 処理は Rutabaga として書かれ、現在 CrOS リポジトリから独立した再利用可能ライブラリとして QEMU に統合されています。Sommelier は多くのディストリビューションでパッケージ化されており、情熱家が代替実装を書いたケースもあります。
GPU アクセスは DRM ネイティブコンテキスト(Rob Clark が XDC 2022 で発表)を通じても向上できます。これはカーネルスペースの GPU ドライバをパラバーチャル化し、ゲストがハードウェア固有のコマンドを別々のコンテキストで送信できるようにするものです。ゲーム用途に適しており、I/O 管理への攻撃面を減らすことでセキュリティも強化されます。
我々が発見した主な修正点は以下の通りです:
- QEMU の
統合はrutabaga_gfx
のミスで壊れていた(修正済み)。ifdef - カーネル ≥ 6.13 が必要で、KVM ゲストから AMD GPU メモリにアクセスできるようになった。
- Sommelier は通常のメインライン Linux で ioctl 応答を誤解し、Chromium OS のパッチを想定していた。
- libkrun 内部の
は Sommelier/プロキシ‑virtwl と API が不一致で memfd シールを扱えなかった(修正済み)。rutabaga_gfx - RADV は libkrun で使用される virtio‑mmio 設定を無視していた(修正済み)。
この分野の作業は継続しています。
D‑Bus / XDG デスクトップポータル
隔離されたアプリケーションだけでは実用性が低いです。Flatpak のデスクトップポータル、少なくともファイル開封/ドキュメントポータルをマイクロVM プラットフォームに統合しています。Spectrum が virtiofs と vsock を D‑Bus トランスポートとして利用したドキュメントポータルの使用例からインスパイアされた sidebus プロジェクトは、
busd ブローカーライブラリをベースにしており、ホスト側ポータルフロントエンドとシームレスに統合します。
libkrun では、Camera と Screencast ポータルを完全なハードウェアアクセラレーションで動作させるため、vsock の代わりに virtgpu クロスドメインソケットを使用することを検討しています。libkrun はすでに
rutabaga_gfx のコピー内で PipeWire をサポートしていますが、これはシステム全体の単一ソケットに依存しています。ポータルは各リクエストごとに新しい制限付き PipeWire リモートソケットを D‑Bus 経由で送信します。rutabaga のクロスドメインソケットを汎用化し、ファイルディスクリプタチェーン全体を渡せるようにする作業を進めています。
PipeWire の攻撃面は、ホスト側プロキシがプロトコルの小さなサブセットのみを検証することで軽減できます。
結論
私たちは商用プラットフォームと同等のセキュリティ・使い勝手・利便性を備えたピアツーピア型コミュニティソフトウェアプラットフォームを構築することを目指しています。今すぐ試したい方は、munix プロジェクトのインストール手順に従ってください。まだ積極的に開発中ですので、不具合があればぜひバグレポートを提出してください!