f-droid.org 网络服务器的隐私设计
发布于 2024-03-08,发布者为F-Droid 致力于维护从设计上保护隐私的原则。这一承诺对我们的所有软件和系统都具有重大的结构性影响。下面将阐述这对我们的网络服务器意味着什么。
目前,很多网站依赖于商业内容分发网络 (CDN) 提供商。尽管这为网站运营者来说扩展更容易了,但这使互联网更中心化了,这对用户隐私有一些潜在影响。首先最重要的是 CDN 提供商可以看到全部用户数据。这意味着用户需要信任他们的数据不会被存储或泄露。CDN 提供商往往具有很强的隐私政策。然而,用户和网站运营者无法验证这些政策执行得如何。GDPR 等法规有报告要求,这有所帮助,但最终还是需要信任。
为了以隐私友好的方式对 f-droid.org 进行扩展,我们依赖于镜像和添加更多我们控制的服务器。
镜像已成为很多 GNU/Linux 发行版的一个成功的扩展策略。任何人都可以通过在他们的服务器上保存一份最新副本托管我们应用存储库的一个镜像。传统上,大学和 ISP 提供镜像以加速他们的互联网基础设施。我们的应用根据连接性能对每一个下载自动选择镜像。F-Droid 仔细维护了一份官方镜像列表。我们的应用给予了用户对他们使用的镜像的完全控制。我们也探索了不同方式以提供镜像的更多信息,帮助用户作出可信决定。为此,现在我们提供官方镜像所在国家,客户端将很快使用它选择从哪里下载。另外,我们要求每个新镜像有一个良好的隐私政策,并且正在进行工作使其对用户可见。
作为附带说明,流行的 CDN 提供商 Cloudflare 赞助了我们网站和存储库的一个镜像。如果你信任他们,你可以把这一存储库作为镜像添加到你的 F-Droid 应用中,和添加一个新存储库一样。我们正在与他们合作,使 TLS Encrypted Client Hello (ECH) 能够在该网站启用。这是即将出台的 IETF 标准,用于保护 TLS 连接中的元数据,包括 SNI 字段中的域名。
我们已经使用 ansible 在 Debian
上自动化了我们的网络服务器操作。这给我们带来了许多灵活性,例如能够实施隐私增强网络和日志配置的能力,以及能够轻易改变服务器托管商的自由。
我们的网络服务器受到 HTTPS 传输加密的保护。虽然我们利用了该协议的最先进的实现,但用户连接的域名通常在建立连接时以明文传输。这是因为广泛使用的一种称为 SNI 的技术。虽然 SNI 是构建多域名共用 CDN 的基本要求,但我们已经配置了我们的服务器,接受没有 SNI 的连接。这使得客户端能够与 f-droid.org 连接而不必发送 SNI。这提供了与 ECH 相同的保护,但可以立即提供给实现这一功能的客户端。
基于来自 Guardian Project 的 Clean Insights 数据分析的研究,我们将我们的服务器配置为记录国家代码而不是 IP 地址。这意味着我们不存储个人识别信息。我们的服务器也会在 14 天后删除日志。我们已经运行这一配置超过一年了,看起来工作得很好。我们的网络服务器日志看起来是这样的:
0.0.0.0 - - [29/Feb/2024:00:00:00 +0000] "HEAD /repo/index-v1.jar HTTP/1.1" 200 0 "-" "-" DE
0.0.0.0 - - [29/Feb/2024:00:00:00 +0000] "GET /repo/entry.jar HTTP/2.0" 200 2574 "-" "-" US
0.0.0.0 - - [29/Feb/2024:00:00:00 +0000] "GET /repo/entry.jar HTTP/2.0" 200 2574 "-" "-" DE
0.0.0.0 - - [29/Feb/2024:00:00:00 +0000] "GET /repo/entry.jar HTTP/2.0" 200 2574 "-" "-" BE
0.0.0.0 - - [29/Feb/2024:00:00:00 +0000] "GET /F-Droid.apk HTTP/2.0" 206 1474560 "https://f-droid.org/" "-" NG
因为具有对我们的网络服务器日志的细粒度控制和大量流量,F-Droid 很适合引入隐私测量。我们每周汇集我们的记录并每周发布 fdroid.org 的原始数据。我们在这里收集的数字并不包括我们镜像的测量数据,但应当足以进行统计分析。我们团队中没有人在进行这一分析,因此如果你对此感兴趣的话,这可以成为对 F-Droid 作出宝贵贡献的重要途径。
如果你有兴趣更多地了解 F-Droid 的隐私保护,这有一篇关于 F-Droid 为什么没有用户账户的文章。
