Überprüfen der Signatur

Aus Freifunk Köln, Bonn und Umgebung
Version vom 3. Februar 2015, 16:53 Uhr von Nunatak (Diskussion | Beiträge) (Neuer GPG-Key für 2015 ergänzt)
Zur Navigation springen Zur Suche springen

Damit sichergestellt ist, dass die heruntergeladene Freifunk-Firmware auch wirklich die ist, welche wir erstellt und zum Download angeboten haben, sollten unbedingt die Hash-Werte (d.h. ein eindeutiger Fingerabdruck) der Firmware-Dateien und die korrekte Signatur der von uns bereitgestellten Hash-Wert-Datei geprüft werden. Dieses ist vermutlich der schwierigste Teil der Installation und wird von Einzelnen gelegentlich übergangen, getreu der Kölschen Lebensweisheit "Et hät noch immer joot jejange". Darauf sollte man sich aber in heutigen Zeiten nicht verlassen.

Die Datei mit den Hash-Werten ist mit unserem GPG-Schlüssel signiert. Der heimliche Austausch einer Freifunk-Firmware und des entsprechenden Hash-Wertes ist also nicht möglich, da die Signatur nur bei unveränderter Hash-Wert-Datei gültig bleibt. Unser öffentliche GPG-Schlüssel ist auf gängigen Keyservern hinterlegt.

Wer sich mit GPG noch nicht auskennt, kann sich z.B. unter www.gnupg.org aufschlauen.

Unseren (alten) GPG-Schlüssel bekommt man z.B. unter Linux/Unix von der Kommandozeile aus so:

# gpg --recv-key  '0FA27C6E4'

Achtung: Der alte Schlüssel ist nur noch bis Ende 2014 gültig gewesen, so dass die Überprüfung der Signatur aus 2014 zu einer Warnung führt:

gpg: Good signature from "Freifunk-KBU Release Signing Key (Used by jenkins.kbu.freifunk.net) <info@kbu.freifunk.net>"
gpg: Note: This key has expired!
Primary key fingerprint: E3B3 AF2B 6B54 149B 9313  4EC0 E782 EAC7 FA27 C6E4

Den seit 2015 gültigen GPG-Schlüssel für Signaturen aus 2015 erhält man entsprechend:

# gpg --recv-key 0xFEE7BD18

Künftige Releases werden also mit diesem Key signiert sein.

Nach dem Download der beiden Dateien

prüft man dann einfach die Signatur mit

 $ gpg --verify SHA256SUMS.sign
 gpg: Signature made Wed 27 Aug 2014 10:40:01 PM CEST using RSA key ID FA27C6E4
 gpg: Good signature from "Freifunk-KBU Release Signing Key (Used by jenkins.kbu.freifunk.net) <info@kbu.freifunk.net>"
 gpg: WARNING: This key is not certified with a trusted signature!
 gpg:          There is no indication that the signature belongs to the owner.
 Primary key fingerprint: E3B3 AF2B 6B54 149B 9313  4EC0 E782 EAC7 FA27 C6E4

Die Signatur ist also korrekt.

Den Fingerprint prüft man am besten einmal offline bei unseren regelmäßigen Treffen.

Dann kann man selbst den Hash-Wert der heruntergeladenen Firmware (hier am Beispiel des Routers TL WR841n mit der Hardware-Version 9) berechnen

 $ sha256sum ff-kbu-tl-wr841n-v9-1.2.1b.bin
 2a3df4ea2e10cc9697a80fa0db7cf962fca052ec5d669779ae79e0345da16b30  ff-kbu-tl-wr841n-v9-1.2.1b.bin

und mit dem Hash-Wert in der signierten und zuvor korrekt verifizierten Datei vergleichen:

 $ grep ff-kbu-tl-wr841n-v9-1.2.1b.bin SHA256SUMS
 2a3df4ea2e10cc9697a80fa0db7cf962fca052ec5d669779ae79e0345da16b30  ./ff-kbu-tl-wr841n-v9-1.2.1b.bin
 2a3df4ea2e10cc9697a80fa0db7cf962fca052ec5d669779ae79e0345da16b30  ./untested/barrier_breaker/ff-kbu-tl-wr841n-v9-1.2.1b.bin

Damit ist die heruntergeladenen Datei auch genau die, die wir für Freifunk erstellt und angeboten haben. Unter der Voraussetzung, dass uns niemand den privaten GPG-Schlüssel entwendet und das Passwort zur Sicherung des privaten Schlüssels geknackt hat. Letzteres ist sehr sehr unwahrscheinlich.