Aufbau eines Servers zur Signierung

Das Modell zur APK-Signierung von Android hat die Erwartung, dass der Signierschlüssel für die gesamte Lebenszeit einer App derselbe sein wird. Das lässt sich an der für einen Android-Signierschlüssel empfohlenen Lebenserwartung erkennen: über 20 Jahre. Darüberhinaus ist es schwierig, eine App zu einem neuen Schlüssel zu migrieren. Da der Signierschlüssel ein essentieller Bestandteil ist, um zu verhindern, dass APKs sich gegenseitig nachahmen, müssen Android-Signierschlüssel für die gesamte Lebensdauer einer App sicher aufbewahrt werden.

Die Repo-Signierschlüssel von F-Droid folgen einem sehr ähnlichen Modell: der Signierschlüssel ist das grundlegende Verfahren, um ein F-Droid-Repo sicher zu identifizieren. Somit gelten für F-Droid-Repo-Signierschlüssel die gleichen Überlegungen wie für APK-Signierschlüssel. Das bietet zudem einige wirklich wertvolle Vorteile. Da die Integrität der Repo-Registerdatei und der APKs durch die Repo-Signatur garantiert wird, können die Dateien über jedwede, gerade am besten passende Methode ausgeliefert werden, und ihre Integrität wird automatisch durch die F-Droid-App, den f-droid.org Bereitstellungsvorgang und Repomaker überprüft werden.

Das bedeutet, die Last der Sicherheit wird vom öffentlichen Online-Webserver auf eine geheime Signiermaschine verschoben. Gerade das Verbergen dieser Maschine vor der Öffentlichkeit trägt weitreichend zur Verbesserung der Sicherheit bei. Es gibt eine Reihe von zusätzlichen Maßnahmen, die ergriffen werden können, um die Sicherheit des Signierprozesses weiter zu verbessern. Hier einige Lösungsansätze, beginnend mit dem einfachsten und am wenigsten sicheren, bis hin zu sichereren Einrichtungen, die mehr Arbeit erfordern, um sie zu installieren und zu betreiben. Signieren ist kein ressourcen-intensiver Vorgang, so wird jeder Rechner funktionieren, selbst ein 10 Jahre altes Laptop für Einsteiger. Wir empfehlen eine Minimalinstallation von Debian und eine Neueinrichtung des Gerätes von Grund auf.

Automatisierter Signierserver mit HSM

Für eine komplett automatisierte Konfiguration zur Signierung, muss der Rechner, der die Signierung ausführt, online und eingeschaltet sein. Idealerweise ist auf den Rechner kein Fernzugriff möglich, wenigstens sollte ein Fernzugriff sehr sorgfältig kontrolliert und überwacht werden. Ein Laptop vereinfacht die Arbeit, selbst wenn der Fernzugriff deaktiviert ist, da es über Tastatur und Bildschirm verfügt. Wenn der Fernzugriff benötigt wird, wird jeder einfache PC gut funktionieren. Die Verwendung eines Hardware Security Module (HSM), um die Schlüssel zu speichern, verhindert deren Diebstahl, sollte in den Server eingebrochen werden. Ein Angreifer könnte nur den Signiervorgang auf diesem Server durchführen.

Im Idealfall wäre diese Maschine nur über Tor erreichbar. Dadurch bleibt der physische Standort des Servers und die Datenübertragung aus dem Netz verborgen. Dies macht es für Angreifer deutlich schwerer, die tatsächliche Maschine zu attackieren.

Für das HSM, empfehlen wir die Nutzung von Nitrokey -Hardware, da es sich um freie Software/Hardware handelt und weitgefächerte Einstellungsmöglichkeiten bietet. Verwenden Sie eine abgetrennte Maschine, um die Signierschlüssel im HSM einzufügen. Ein gutes HSM wird ein Buchungsprotokoll über die Zahl der erstellten Signaturen führen, dessen Informationen zur Schaffung eines automatischen Prüfprozesses genutzt werden können, um Warnungen bereitzustellen, falls zu viele Signaturen hergestellt wurden. Das könnte nämlich bedeuten, dass dieser Server beschädigt und zur Signierung nicht autorisierter Pakete verwendet wurde.

Eine andere Möglichkeit ist die Verwendung einer Konfiguration wie in Fedora’s Sigul , das drei Rechner einbindet.

Basis-Laptop, der fest der Signierung zugeordnet ist

Beginnen Sie mit einem Laptop, der von Grund auf neu aufgebaut werden kann. Am wichtigsten ist dabei, dass Sie auf ihm nur die essentielle Software und sonst nichts installieren. Verwenden Sie keinen Browser, da dies der häufigste Angriffsvektor ist. Es sollte keine Möglichkeit zum Fernzugriff (z. B. SSH oder VNC) installiert oder konfiguriert werden. Um Apps und Repos zu signieren, wird jemand diesen Laptop herausholen, mit dem Netz verbinden und den Signiervorgang ausführen. Die signierten Ergebnisse können dann über die Netzwerkverbindung verteilt werden. Wenn das Signieren abgeschlossen ist, kann der Laptop abgeschaltet, vom Netz getrennt und an einem sicheren Ort verwahrt werden.

Mit einigen angepassten Skripten könnte dies ganz automatisch durchgeführt werden. Die Person, die den Vorgang ausführt, müsste sich lediglich die Maschine nehmen, sie einschalten, verbinden, auf den Abschluss des Vorgangs warten und sie dann wieder beiseitestellen.

Signaturlaptop mit USB-Sticks ohne jede Internetanbindung

Dieser Vorgang verwendet den gleichen minimalistischen Laptop, wie oben erwähnt, aber diesmal wird der Netzwerkzugang vor dem Installationsprozess vollständig deaktiviert. Beispielsweise kann bei vielen älteren Laptops das WLAN-Modul ausgebaut werden. Deshalb ist es sinnvoll, einen Laptop zu verwenden, der keinen LAN-Anschluss hat, da diese normalerweise nicht entfernt werden können. Andernfalls kann es ausreichen, alle Netzwerk-Kernel-Module zu deaktivieren. Da diese Maschine vollständig offline ist, ist der Zusatzaufwand, ein HSM zu verwenden, nicht so wichtig, aber er kann dennoch nicht schaden.

Laden Sie zum Installieren das vollständige CD- oder DVD-Abbild von Debian herunter. Überprüfen Sie unbedingt die GPG-Signaturen und SHA-256-Hashs. Um die Offline-Maschine zu aktualisieren, ist die Einrichtung von „apt offline“ erforderlich.

Um extra vorsichtig zu sein, prüfen Sie alle Programme. Chromebooks sind gute, preiswerte Laptops auf denen Linux nativ läuft. Diese verwenden anstatt einem BIOS Coreboot.

  • Kaufen Sie einen Computer in bar aus dem Regal, meiden Sie den Versandhandel, insbesondere über Landesgrenzen hinweg
  • Kaufen Sie ein von Debain unterstütztes Chromebook mit entfernbarem WLAN-Modul, dass keine proprietären Binärdateien benötigt
  • Installieren Sie eine reproduzierbar kompilierte Coreboot-Version
  • Installieren Sie von einem reproduzierbar erstelltem Debian-Abbild; löschen Sie dabei Chrome OS vollständig

Die physische Umgebung

Der letzte zu betrachtende Aspekt ist der physische Ort, an dem das Signieren stattfindet und wo die nötigen Materialien gelagert werden. Die Siginier-Umgebung muss physisch sicher sein. Andernfalls gibt es keinen Weg, den Verlust oder die Verwendung von Laptops und/ oder HSMs zum Signieren von unpassenden Inhalten zu verhindern. Bei Offline-Maschinen ist die Aufbewahrung in einem verschlossenen Raum ein guter Anfang. Bei einer Online-Maschine ist es sinnvoll, den gesamten Netzwerkverkehr (auch die Fernsteuerung) über Tor zu leiten, um den physische Standort der Maschine vor Netzwerküberwachern zu verbergen.

Bei hochgefährdeten Signierschlüsseln ist die Anwendung mehrerer Schutzmaßnahmen wichtig:

  • Eingeschränkter physischer Zugriff auf HSMs oder Smart Cards
  • Überwachungskameras
  • Wachleute vor Ort
  • Besuchererfassung
  • Ein werkzeugsicherer Safe für Online-Signier-Server

Der Server zum Signieren sollte physisch vom Rest der Infrastruktur abgetrennt sein. Und Protokolle, Maschine und Netzwerk sollten regelmäßig geprüft werden.

Schwierige Entscheidungen

Im Idealfall kommen alle diese Praktiken zur Anwendung, allerdings haben alle diese Sicherheitsmaßnahmen ihren Preis hinsichtlich Erschwernis, Kosten und Umfang. Sie können auch den Vorgang verzögern, regelmäßig Aktualisierungen bereitzustellen. Somit ist die Gefahr, zu strenge Sicherheitsmethoden anzuwenden, genauso gegeben wie das Risiko, nicht genügend umzusetzen.