このプロジェクトについて
Syndeoは、従来のウェブブラウザアーキテクチャを再考し、キャッシュをコア製品として優先するオープンソースプロジェクトです。その設計哲学は、厳格なプロセス分離とセキュリティ境界を中心に据え、検証可能な相互作用を通じて信頼を真実へと変換することを目指しています。
**アーキテクチャとプロセスモデル**
システムは、3つの重要な境界を基に構築されています。
1. **レンダラーはネットワークと通信しない:** レンダリングプロセス(ServoまたはWebKit)はソケットを開きません。代わりに、`NetRequest`オブジェクトを別のネットワークプロセス(`syndeo-net`)に送信し、DNS、TLS、およびキャッシュを処理します。これにより、レンダラーがセキュリティポリシーを回避したり、ネットワークタイミングを介して情報を漏洩したりすることが防止されます。
2. **エージェントはキーストアと通信しない:** WebAssemblyツールを実行できるエージェントプロセスは、キーストアからサンドボックス化されています。直接キーにアクセスできないため、悪意のあるスクリプトやエージェントに対する攻撃面が縮小されます。
3. **キーストアは1つの操作のみを公開:** キーストアは、シェルがユーザーの意図を確認した場合にのみペイロードに署名できます。この確認には、オリジン、目的、およびペイロードハッシュのMACが含まれており、同意が明示的で特定の操作に結び付けられていることを保証します。
**主要コンポーネント**
- **`syndeo-cache`:** RFC 9111ポリシーをredbインデックスとBLAKE3アドレス指定のブロブストアで実装します。Subresource Integrity(SRI)をサポートし、クロスサイトトラッキングを防止するためにトップレベルオリジンごとにパーティション化されています。
- **`syndeo-net`:** HTTP/1.1、HTTP/2、およびHTTP/3(QUIC)を処理するネットワークプロセスです。キャッシュと統合され、システム全体にフェッチAPIを提供します。
- **`syndeo-peer`:** libp2pを使用してピアツーピアのコンテンツフェッチングを可能にします。ピアには、ページですでにハッシュで命名されているコンテンツのみが要求され、分散型コンテンツ配信を可能にしながらプライバシーをある程度維持します。
- **`syndeo-keystore`:** シールされたルートシークレットで暗号鍵を管理します。パスフレーズシーリングにArgon2idを使用し、OSレベルの資格情報ストア(macOSのKeychain、LinuxのSecret Service)と統合します。署名ごとの同意と、非アクティブまたはロック後のシードの自動消去をサポートします。
- **`syndeo-dom`:** エージェントがフルレンダリングなしでページを読み取るために使用されるヘッドレスDOM実装で、プローズ、リンク、フォームに重点を置いています。
- **`syndeo-ui`:** winit、wgpu、およびeguiで構築されたウィンドウ付きシェルで、アクセシビリティサポートを備えたグラフィカルインターフェースを提供します。
**プライバシーとセキュリティ**
Syndeoは、いくつかのプライバシーデフォルトを強制します。
- **パーティション化されたキャッシュ:** キャッシュはトップレベルドキュメントのオリジンでキー付けされており、キャッシュヒット/ミスタイミングを介したクロスサイトトラッキングを防止します。コンテンツは、パーティション化にもかかわらずスペースを節約するために、ブロブレベルで重複排除されます。
- **DNS over HTTPS(DoH):** デフォルトで有効(Cloudflare)で、Google、Quad9、またはシステムリゾルバーのオプションがあります。
- **テレメトリなし:** コードベースには、アナリティクス、クラッシュレポート、またはアップデートピングは含まれていません。
- **資格情報ストリッピング:** リダイレクトがオリジンを越える場合、`Authorization`および`Cookie`ヘッダーは削除されます。
**使用法とツール**
- **インストール:** チェックサムを検証するシェルスクリプトを介して、macOS(Apple Silicon)およびLinux(x86_64/arm64)で利用可能です。`sudo`は不要です。
- **CLI:** `syndeo browse`はページをフェッチし、キャッシュステータスを報告します。`syndeo agent`は、ページの読み取りやクロールなどのタスクを実行します。`syndeo sign`は、ユーザー確認付きの暗号署名を行います。
- **プロキシモード:** `syndeo-proxy`は、Chromeなどの他のブラウザからの実際のトラフィックでキャッシュ効率を測定するために、インターセプティングプロキシとして実行できます。
- **レンダリング:** Servo(ヘッドレス/機能ゲート付き)とWebKit(macOSのみ、ビデオ再生用)をサポートします。WebKitの統合は、HTTP/HTTPS用のカスタムスキームハンドラーをWebKitがサポートしていないため、ネットワーク境界を強制するためにローカルプロキシを使用します。
**開発とステータス**
- **ビルド:** Rustが必要で、Linuxには特定の依存関係(D-Bus、Wayland/X11)があります。Servoの統合は、長いコンパイル時間のために機能ゲートされています。
- **テスト:** RFC 9111の準拠、メモリ測定スクリプト、およびリリース検証ツールが含まれています。
- **ギャップ:** WindowsおよびChromeOSのサポートは保留中です。このプロジェクトは、キャッシュファーストモデルの実行可能性とセキュリティ特性を検証することに重点を置いて、積極的に開発されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.