这个项目能做什么
Syndeo 是一个开源浏览器项目,通过将缓存作为核心产品来重新构想传统的网络浏览器架构。其设计理念基于严格的进程分离和安全边界,旨在通过可验证的交互将信任转化为真相。
**架构和进程模型**
该系统围绕三个承载边界构建:
1. **渲染器从不与网络通信:** 渲染进程(Servo 或 WebKit)不会打开套接字。它们向单独的网络进程 (`syndeo-net`) 发送 `NetRequest` 对象,后者处理 DNS、TLS 和缓存。这确保渲染器无法绕过安全策略或通过网络时序泄露信息。
2. **代理从不与密钥存储通信:** 代理进程(可以执行 WebAssembly 工具)与密钥存储隔离。它无法直接访问密钥,从而减少了恶意脚本或代理的攻击面。
3. **密钥存储仅暴露一个操作:** 它只能在 shell 确认用户意图后签署负载。该确认包括对来源、目的和负载哈希的 MAC,确保同意是明确的,并与特定操作绑定。
**关键组件**
- **`syndeo-cache`:** 使用 redb 索引和 BLAKE3 地址的 blob 存储实现 RFC 9111 策略。它支持子资源完整性(SRI),并按顶级来源分区,以防止通过缓存时序进行跨站点跟踪。
- **`syndeo-net`:** 处理 HTTP/1.1、HTTP/2 和 HTTP/3(QUIC)的网络进程。它与缓存集成,并为系统的其余部分提供 fetch API。
- **`syndeo-peer`:** 使用 libp2p 实现对等内容获取。仅当页面中已存在哈希命名的内容时,才会向对等方请求,从而在允许分散式内容分发的同时保留部分隐私。
- **`syndeo-keystore`:** 管理加密密钥,并使用密封的根密钥。它使用 Argon2id 进行密码短语密封,并与操作系统级别的凭证存储(macOS 上的 Keychain,Linux 上的 Secret Service)集成。它支持每次签名的同意,并在不活动或锁定后自动遗忘种子。
- **`syndeo-dom`:** 用于代理的无头 DOM 实现,用于读取页面而无需完整渲染,重点是散文、链接和表单。
- **`syndeo-ui`:** 使用 winit、wgpu 和 egui 构建的窗口化 shell,提供具有可访问性支持的图形界面。
**隐私和安全**
Syndeo 强制执行以下隐私默认设置:
- **分区缓存:** 缓存由顶级文档的来源键入,防止通过缓存命中/未命中时序进行跨站点跟踪。内容在 blob 级别进行重复数据删除,以节省空间,尽管进行了分区。
- **DNS over HTTPS (DoH):** 默认启用(Cloudflare),并提供 Google、Quad9 或系统解析器的选项。
- **无遥测:** 代码库不包含分析、崩溃报告或更新 ping。
- **凭证剥离:** 当重定向跨越来源时,`Authorization` 和 `Cookie` 头会被丢弃。
**使用和工具**
- **安装:** 可通过验证校验和的 shell 脚本在 macOS(Apple Silicon)和 Linux(x86_64/arm64)上使用。不需要 `sudo`。
- **CLI:** `syndeo browse` 获取页面并报告缓存状态。`syndeo agent` 运行读取或爬取页面的任务。`syndeo sign` 执行带有用户确认的加密签名。
- **代理模式:** `syndeo-proxy` 可以作为拦截代理运行,以测量来自 Chrome 等其他浏览器的真实流量中的缓存效率。
- **渲染:** 支持 Servo(无头/功能门控)和 WebKit(仅限 macOS,用于视频播放)。WebKit 集成使用本地代理来强制执行网络边界,因为 WebKit 不支持 HTTP/HTTPS 的自定义方案处理程序。
**开发和状态**
- **构建:** 需要 Rust,以及 Linux 上的特定依赖项(D-Bus、Wayland/X11)。由于编译时间长,Servo 集成是功能门控的。
- **测试:** 包括 RFC 9111 符合性、内存测量脚本和发布验证工具。
- **差距:** Windows 和 ChromeOS 支持正在等待中。该项目处于积极开发阶段,重点是验证缓存优先模型的可行性和安全属性。
评论
0 评分人数达到10人后显示
登录后参与讨论。