Verifikationsserver

Die Idee bei einem Verifikationsserver ist es, offizielle, von f-droid.org (oder einem anderen Server) veröffentlichte Versionen automatisch zu reproduzieren. Dies stellt sicher, dass alles im Release-APK aus dem Quellcode stammt und nichts eingeschleust oder während des Buildprozesses eingebunden wird. Dies dient auch dem Nachweis, dass der Build-Prozess keine proprietären Bibliotheken enthält.

Das ultimative Ziel ist eine einfache Einrichtung, die jede dritte Partei durchführen kann, die ständig nach neu veröffentlichten Paketen sucht, ihre eigenen Builds erstellt und bestätigt, dass die Binärdateien genau übereinstimmen. Es gibt viele Aufgaben zu erledigen, um zu diesem Ziel zu gelangen, aber das Grundkonzept ist bereits getestet und funktioniert (siehe Befehl fdroid verify).

Die Ausgabe mehrerer Verifikationsserver steht dann dem F-Droid-Client zur Verfügung. Die Idee dabei ist, den Client so zu konfigurieren, dass er keiner Binärdatei traut, solange sich nicht mehrere Verifikationsserver einig sind, dass sie korrekt ist.

Auf APK-Signatur basierende Verifizierung

Der Verifizierungsprozess funktioniert derzeit, indem ein neues unsigniertes APK erstellt und dann die APK-Signatur aus dem bestehenden APK in das neu erstellte unsignierte APK kopiert wird. Bestätigt sich die APK-Signatur, wurde das APK reproduziert und wird als verifiziert markiert. Wenn nicht, wird ein diffoscope Protokoll erstellt, um die Unterschiede zwischen den beiden Builds anzuzeigen. Der Verifikationsserver benötigt keine Signaturfähigkeiten, er erstellt nur.

Einen Server aufsetzen

Das ist immer noch ziemlich unfertig, also rechnen Sie mit etwas Bastelei. Es wird wahrscheinlich auch nur auf Debian, Ubuntu und anderen Debian-Derivaten funktionieren. Der erste Schritt ist die Einrichtung und Inbetriebnahme der fdroidserver Tools. Starten Sie die fdroidserver Tools direkt aus git heraus (z.B. ~/code/fdroidserver/fdroid build org.adaway), das dürfte momentan am einfachsten sein, da sich der Verifikationsserver häufig ändert. Der Basisserver braucht mindestens Debian/jessie, sonst müssen ein paar schwierige Anpassungen vorgenommen werden. Wenn Sie Ubuntu oder eine abgeleitete Distribution ausführen, können Sie alle Pakete, die in Ihrer Version fehlen, wie vagrant-cachier, von diesem PPA beziehen: https://launchpad.net/~fdroid/+archive/ubuntu/buildserver/

Außerdem können Sie mehr über den Ablauf erfahren, indem Sie Build-Server-Einrichtung lesen. Sie können sich auch die Continuous Integration-Skripte für dieses Verfahren ansehen, um herauszufinden, wie das Ganze funktionieren kann:

- https://gitlab.com/fdroid/fdroidserver/blob/master/jenkins-build-makebuildserver - https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment_profitbricks7/