验证服务器 的想法是自动再现由 f-droid.org(或任何其他服务器)发布的官方版本。这个想法的另一个名称叫 rebuilder。此过程确保发布 APK 中的所有内容都来自源代码,并且在构建过程中没有插入或包含任何内容。这对于验证构建过程不包括私有库也很有用。
最终目标是任何第三方都可以进行的简单安装,该安装将不断检查新发布的软件包,创建自己的构建,并确认二进制文件完全匹配。要达到这个最终目标,有许多问题需要解决,但基本概念已经过测试并有效(请参阅”fdroid verify”命令)。
多个验证服务器的输出随后可供 F-Droid 客户端使用。这个想法是将客户端配置为不信任二进制文件,直到多个验证服务器一致认为它是正确的。
基于 APK 签名的验证
验证过程眼下的工作方式是构建一个新的未签名 APK,然后将现有 APK 的 APK 签名 复制到新构建的未签名 APK 中。如果 APK 签名通过验证,则该 APK 已被复现,并被标记为已验证。如果不是,则会生成 diffoscope 日志以显示两个构建之间的差异。验证服务器不需要签名能力,只需要构建。
设置一个
验证服务器通过 Ansible Playbook 进行管理,该 Ansible Playbook 安装在运行 Debain/stable 版本的服务器上,而该服务器被配置为通过未获取根权限的 Podman 运行容器。https://verification.f-droid.org就是用这些东西运行的,因为运行方式依旧相当原始,所以未来应该会有进一步打磨。我们欢迎贡献者。我们的目标是这一套设置变得足够通用以便任何兼容 F-Droid 存储库的维护者都可以用它作为 rebuilder。
