Signiervorgang

Kryptographische Signaturen, die öffentliche/private Schlüssel verwenden, sind zentrale Bestandteile, wie F-Droid eine sichere App-Auslieferung bereitstellt. Signierschlüssel sind notwendig, um Ihre eigenen Veröffentlichungen mit den F-Droid-Werkzeugen zu erstellen. Speicherort, Sicherheits- und Sicherungsstatus Ihrer Schlüsseldateien sollten sorgfältig bedacht werden. Die Schlüssel müssen für die gesamte Lebensdauer eines F-Droid-Repos oder einer Android-App sicher bleiben. Der Signierschlüssel ist das Hauptmerkmal für die Identität einer Android-App und eines F-Droid-Repos, somit müssen diese Schlüssel zuverlässig, geschützt und gut gesichert aufbewahrt werden! Berücksichtigen Sie dabei auch, dass Googles Hinweise zum Schutz der privaten Schlüssel nur die Minimalmaßnahmen darstellen, die ergriffen werden sollten, um die Schlüssel abzusichern.

Es gibt zwei Arten des Signierens, die im Betrieb eines Repositorys eine Rolle spielen:

  • das Signieren des Repo-Registers selbst
  • der standardmäßige Android-APK-Signiervorgang

Repo-Registersignatur

Bei Einrichtung des Repositorys, sollte einer der ersten Schritte die Erzeugung eines Signierschlüssels für das Repository-Register sein. Dabei wird auch ein Schlüsselspeicher erstellt, d. h. die Datei, die die Signierschlüssel enthält.

fdroid init wird automatisch einen neuen Signierschlüssel für ein F-Droid-Repo erstellen. Es ist möglich, genau wie bei der Erstellung von Android-Signierschlüsseln, Schlüssel mit einem Befehl wie dem folgenden manuell zu erstellen:

keytool -genkey -v -keystore my.keystore -alias repokey \
  -keyalg RSA -keysize 2048 -validity 10000

Im o. g., ersetzen Sie my.keystore durch den Namen der Schlüsselspeicherdatei, die erstellt werden soll, und „repokey“ durch den Namen, über den der Repo-Registerschlüssel identifiziert wird. Sie werden dazu aufgefordert werden, ein Passwort für den Schlüsselspeicher UND ein Passwort für den Schlüssel festzulegen. Sie sollten nicht dieselben sein. Daneben werden Sie gebeten werden, einige kennzeichnende Einzelheiten zu nennen, die in das Zertifikat einfließen werden.

Die beiden eingegebenen Passwörter wandern als keystorepass bzw. keypass in config.yml. Der Pfad zur Schlüsselspeicherdatei wird in keystore abgelegt und das für den Schlüssel von Ihnen ausgewählte Alias gelangt unter der Bezeichnung repo_keyalias ebenfalls in diese Datei.

APK-Signatur

Die F-Droid-Tools können automatisch APK-Signierschlüssel für jede von ihnen verwaltete Anwendung erzeugen und verwalten. Wenn die Repo-Index-Signierung konfiguriert ist, muss nur noch das Feld keydname in config.yml so gesetzt werden, dass es die gleichen identifizierenden Details enthält, die Sie zuvor eingegeben haben. Aus diesen Angaben wird für jede erstellte Anwendung ein neuer Schlüssel generiert. Wenn ein bestimmter Schlüssel für eine bestimmte Anwendung benötigt wird, kann dieses System durch die Konfigurationseinstellungen keyaliases überschrieben werden.

Um fdroid publish einzurichten, führen Sie diese Schritte auf demselben Rechner aus, auf dem Sie APKs kopieren und fdroid update ausführen. Zuerst setzen Sie keydname in config.yml, es sollte ungefähr so aussehen:

keydname = "CN=beispiel.de, O=Beispiel GmbH, C=DE"

Erstellen Sie ein Verzeichnis namens unsigned/ neben den Verzeichnissen metadata/ und repo/, und führen Sie diese Befehle aus, um das APK mit einem neuen Namen basierend auf Application ID und Version Code zu verschieben:

$ cd /pfad/zum/repobasedir
 $ touch metadata/de.beispiel.app.yml
 $ mkdir unsigned
 $ cp /pfad/zum/app-release-unsigned.apk unsigned/de.beispiel.app_1234.apk
 $ fdroid publish --verbose
 $ fdroid update --verbose
 $ fdroid server update --verbose

Paketsignatur

Alle Pakete, die mit F-Droid-Tools erstellt und/oder verteilt werden, können auch von PGP mit GnuPG signiert werden, von APKs bis hin zu Mediendateien. Dieser Prozess wird mit fdroid gpgsign ausgeführt. Fügen Sie gpghome und gpgkey zu Ihrer config.yml hinzu, um sie zu konfigurieren, weitere Informationen finden Sie in examples/config.yml.

Hardware-Sicherheitsmodule

Hardware-Sicherheitsmodule (Hardware Security Modules, HSMs) sind speziell für die sichere Speicherung und Verwendung von kryptographischen Schlüsseln entwickelte Hardwarekomponenten. Sie bieten Nur-schreib-Speicher, so dass ein privater Schlüssel nur auf das HSM geschrieben und nie ausgelesen werden kann. fdroidserver unterstützt die Verwendung von HSMs für die Repo-Signierung von Schlüsseln.

Informationen zur Konfiguration eines F-Droid-Repos für die Verwendung eines HSM finden Sie in den Abschnitten „Smartcard“ von examples/config.yml, insbesondere keystore und smartcardoptions. Höchstwahrscheinlich muss OpenSC als PKCS11-Provider für Java eingerichtet werden.

Ausführlichere Informationen finden Sie unter * fdroidserver Konfigurationsdatei-Beispiel: examples/config.yml