検証サーバーの考え方は、f-droid.org(またはその他のサーバー)によって公開された公式リリースを自動的に再現することです。これはリビルダーとも呼ばれます。このプロセスにより、リリースAPK内のすべてがソースコードに由来し、ビルドプロセス中に何も挿入または追加されていないことを確認できます。また、ビルドプロセスにプロプライエタリなライブラリが含まれていないことを検証するのにも役立ちます。
最終的な目標は、第三者が誰でも簡単にインストールでき、新しく公開されたパッケージを継続的にチェックし、独自にビルドを行い、そのバイナリが完全に一致することを確認できる仕組みにすることです。この最終目標に到達するには解決すべき課題が多くありますが、基本的なコンセプトはすでにテストされ、動作しています。(’fdroid verify’ コマンドを参照)
その後、複数の検証サーバーの出力をF-Droidクライアントで利用できるようになります。複数の検証サーバーが正しいと一致して判断するまで、クライアントがそのバイナリを信頼しないように設定する、という考え方です。
APK署名に基づく検証
検証プロセスは、現在、新しい未署名APKをビルドし、その後、既存のAPKから新しくビルドした未署名APKへAPK署名をコピーすることで動作しています。APK署名を検証できれば、そのAPKは再現されたものとみなされ、検証済みとしてマークされます。検証できない場合は、2つのビルド間の差異を示すdiffoscopeログが生成されます。検証サーバーに署名機能は必要なく、ビルド機能だけが必要です。
セットアップする
検証サーバーは、rootless Podmanでコンテナを実行するように設定されたDebian/stable稼働サーバーにインストールされているAnsible Playbookによって管理されています。https://verification.f-droid.org を実行しているのはこの仕組みですが、まだかなり粗削りなため、多少の調整が必要になることを想定してください。コントリビューションを歓迎します。このセットアップを十分に汎用化し、F-Droid互換リポジトリのメンテナーなら誰でもリビルダーとして利用できるようにすることが目標です。
