Auf dem Weg zu einem reproduzierbaren F-Droid
Posted on 2023-01-15 by
Eine verbreitete, an F-Droid gerichtete Kritik ist, dass F-Droid veröffentlichte APKs mit eigenen Schlüsseln signiert. Die Verwendung eigener Schlüssel bedeutet nicht, dass das unsicher wäre — wir haben eine gute Erfolgsbilanz (und bewahren die Schlüssel auf einer eigens dafür vorgesehenen, abgeschotteten, nicht mit dem Netz verbundenen Maschine auf) während andere das eventuell nicht haben — aber dies bedeutet, dass unsere Nutzer einem Drittanbieter vertrauen müssen neben den Upstream-Entwickler.
Verschiedene Signaturen können dem Anwender auch Unannehmlichkeiten bereiten, da es unmöglich wird, Aktualisierungen aus anderen Kanälen zu installieren; dies kann insbesondere dann lästig sein, wenn wir Schwierigkeiten haben, für eine App ein Update bereitzustellen. Entwickler müssen auch manchmal ihre Konfiguration auf F-Droid ausrichten, z. B. einen In-App-Updater deaktivieren oder die F-Droid-Signatur zur Verifikation hinzufügen.
F-Droid ist nicht der einzige App-Store, der mit seinem eigenen Schlüssel signierte APKs veröffentlicht - Google Play tut dies jetzt auch. Mit “Code-Transparenz für App-Bundles” bietet Google ein Mittel, um zu überprüfen, ob die DEX-Dateien und nativen Bibliotheken in einer APK, mit denen identisch sind, die der Entwickler bereitgestellt hat. Damit werden zwar einige dieser Bedenken ausgeräumt, aber die Code-Transparenz schützt wenige andere wichtige Dateien in der APK, wie interpretierten Code oder Assets. Und, im Gegensatz zu APK-Signaturen, ist sie völlig optional (und eine zusätzliche Belastung für Entwickler) und die Überprüfung muss manuell erfolgen. Auch die Unannehmlichkeit, eine APK mit einer anderen Signatur nicht installieren zu können, wird dadurch nicht gelöst.
F-Droid hat schon eine ganze Weile eine bessere Lösung für diese Probleme: reproduzierbare Builds. Wenngleich sie niemals sehr verbreitet waren. Einer der Gründe dafür ist, dass sich ihre Verwirklichung schwierig anhört. Wir hatten wenige reproduzierbare Apps (um genau zu sein: nur 6) und einige von denen litten unter Problemen wegen der Verwendung reproduzierbarer Builds. Im Grunde bemühten wir uns nicht, reproduzierbare Builds zu erwähnen, wenn nicht die Upstream-Entwickler Interesse daran zeigten. Im Ergebnis haben viele Entwickler noch nicht einmal von reproduzierbaren Builds gehört, geschweige denn dass F-Droid sie unterstützt, oder versucht, sie bei ihren eigenen Apps einzusetzen.
Als Reaktion auf manche der Kritikpunkte, begannen wir damit, neue Apps zum Einsatz reproduzierbarer Builds zu ermutigen. Es stellt sich heraus, dass für viele Apps reproduzierbare Builds gar nicht so schwer zu erreichen sind. In den vergangenen paar Monaten haben wir viel mehr reproduzierbare Apps erhalten als je zuvor. Momentan können wir im Client nicht herausstellen, welche Apps reproduzierbar sind, so habt ihr vielleicht nicht bemerkt, dass es viele neue Apps gibt, die mit Schlüsseln der Entwickler signiert sind. Solltet ihr einige Repositorys von Drittanbietern eingebunden haben, z. B. das von IzzySoft, kann es sein, dass sich manchmal die App aus dem Hauptrepository aktualisieren lässt, selbst wenn ihr sie aus einem anderen installiert hattet.
Nachdem wir nun mit viel mehr Testfällen in Berührung kamen als zuvor, trafen wir mittlerweile auch auf viele neue Probleme, die eine Reproduzierbarkeit beeinträchtigen. Glücklicherweise fanden wir für die meisten von ihnen Abhilfe und entwickelten einige Instrumente, um APKs reproduzierbar zu machen, hauptsächlich dank der Mitwirkung von @obfusk. Es gibt immer noch einige offene Fragen und wir bemühen uns sehr, diese zu lösen. Solltet ihr Interesse an reproduzierbaren Builds haben, freuen wir uns immer über Beiträge.