Ubuntu-Downloads überprüfen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Voraussetzungen
  2. Vorgehen
  3. Problembehebung
  4. Links

Wenn man eine ISO-Datei von Ubuntu heruntergeladen hat, kann man die Korrektheit des Downloads mit Hilfe einer Prüfsumme überprüfen, wobei im weiteren Verlauf dieses Artikels die SHA256 Prüfsumme genutzt wird. Über die Prüfsumme wird festgestellt, ob z.B. Übertragungsfehler aufgetreten sind ("bit flip"). Allerdings garantiert die Prüfsumme alleine nicht, dass es sich um die original ISO-Datei von Ubuntu handelt. Hätte sich z.B. jemand Zugang zum Download-Server verschafft und die ISO-Dateien manipuliert, so wäre es ein Leichtes auch die Prüfsumme entsprechend anzupassen, so dass diese zur manipulierten ISO-Datei passt. Außerdem sind alle ISO- und Prüfsummen-Downloads unverschlüsselt, und somit anfällig für Man-in-the-Middle-Angriffe.

Für diesen Zweck bietet Ubuntu seinen offiziellen GPG-Key zum Herunterladen an. Dieser kann anhand seines Fingerprints über eine HTTPS-verschlüsselte Webseite geprüft werden. Mit diesem sicheren GPG-Key wird dann die Prüfsummendatei verfiziert.

Die Kette zum Überprüfen der ISO-Datei sieht wie folgt aus:

  1. Ubuntu-Schlüssel vom Ubuntu-Schlüsselserver herunterladen

  2. Schlüssel anhand des Fingerprints prüfen

  3. Signatur der Prüfsummendatei verifizieren

  4. ISO-Datei prüfen

Voraussetzungen

Es wird das Kommandozeilenprogramm gpg benötigt, welches aber bei Ubuntu standardmäßig bereits installiert ist. Sollte das Programm fehlen, ist die Installation auf der Seite GnuPG beschrieben. Dort findet man auch weitere Informationen rund um das Programm und GPG.

Vorgehen

Nach dem Herunterladen der ISO-Datei lädt man zusätzlich die beiden Dateien SHA256SUMS und SHA256SUMS.gpg herunter. Die Dateien befinden sich auf dem Download-Server im gleichen Verzeichnis wie die ISO-Datei, für Ubuntu 16.04 auf http://releases.ubuntu.com/16.04/. Die Dateien müssen im gleichen Verzeichnis gespeichert werden wie die ISO-Datei.

Anschließend lädt man die zwei GPG-Schlüssel vom öffentlichen Ubuntu-Keyserver herunter und fügt sie in seinen Schlüsselbund hinzu[1]:

gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092" "C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451" 

Hinweis:

Der Keyserver verwendet das HKP-Protokoll auf TCP-Port 11371. Sollte der Befehl nicht funktionieren, ist eventuell dieser Port nicht auf der Firewall freigeschaltet (s. Problembehebung weiter unten).

Bei neueren GnuPG-Versionen kann der Parameter "--keyserver hkp://keyserver.ubuntu.com" allerdings auch weggelassen werden. Es wird dann der Standard-Keyserver über das HTTPS-Protokoll verwendet, welches auf den meisten Firewalls freigeschaltet sein dürfte. Nähere Informationen darüber stehen im Wiki-Artikel Web of Trust inkl. möglicher Problembehebungen.

Im nächsten Schritt muss der Fingerabdruck der Schlüssel geprüft werden:

gpg --list-keys --with-fingerprint 0xFBB75451 0xEFE21092 

Ist alles korrekt, bekommt man für jeden Schlüssel eine Ausgabe wie im folgenden gezeigt:

pub   4096R/EFE21092 2012-05-11
      Schl.-Fingerabdruck = 8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid                  Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>

pub   1024D/FBB75451 2004-12-30
      Schl.-Fingerabdruck = C598 6B4F 1257 FFA8 6632  CBA7 4618 1433 FBB7 5451
uid

Wichtig ist dass der Wert für die Fingerabdrücke genau übereinstimmt. Jetzt kann die Signatur der Prüfsummendatei verifizieren werden.

Hinweis:

Da es sich bei SHA256SUMS.gpg und SHA256SUMS um Dateien handelt, muss der Befehl gpg in dem Verzeichnis ausgeführt werden, in dem die beiden Dateien liegen. Standardmäßig liegen heruntergeladene Dateien im Verzeichnis Downloads, daher ist noch der Wechsel dahin mittels cd notwendig. Mit ls prüfen, ob die Dateien SHA256SUMS.gpg und SHA256SUMS zu sehen sind.

cd ~/Downloads
ls 

gpg --verify SHA256SUMS.gpg SHA256SUMS 
gpg: Unterschrift vom Do 03 Aug 2017 15:56:51 CEST mittels DSA-Schlüssel ID FBB75451
gpg: Korrekte Unterschrift von »Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>«
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg:          Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck  = C598 6B4F 1257 FFA8 6632  CBA7 4618 1433 FBB7 5451
gpg: Unterschrift vom Do 03 Aug 2017 15:56:51 CEST mittels RSA-Schlüssel ID EFE21092
gpg: Korrekte Unterschrift von »Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>«
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg:          Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck  = 8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092

Wichtig sind hier die beiden Zeilen "gpg: Korrekte Unterschrift von ... ", welche die Integrität der Datei SHA256SUMS bestätigen.

Im letzten Schritt wird dann die Prüfsumme der heruntergeladenen ISO-Datei mit der Prüfsummendatei verglichen:

sha256sum -c SHA256SUMS 2>&1 | grep OK 

Die Ausgabe für z.B. die ISO-Datei ubuntu-16.04.3-desktop-amd64.iso sieht so aus:

ubuntu-16.04.3-desktop-amd64.iso: OK

Der Ausführung des Befehls kann je nach Rechnergeschwindigkeit ein wenig dauern. Wichtig ist die Ausgabe "... OK". Erscheint diese nicht, stimmt die Prüfsumme der geprüften ISO-Datei nicht, so dass entweder ein Download-Fehler oder eine manipulierte ISO-Datei vorliegt.

Problembehebung

Download des GPG-Keys mit Webbrowser

Der Download des GPG-Keys von Ubuntu ist nicht ganz unproblematisch. GPG verwendet dazu das HKP-Protokoll des Keyservers über TCP-Port 11371. Ist dieser Port auf einer Firewall nicht freigeschaltet, funktioniert der Download nicht.

Alternativ kann man daher die Keys auch über einen Webbrowser herunterladen. Dazu besucht man folgende Adresse: https://keyserver.ubuntu.com/ 🇬🇧

Im Feld "Search String:" gibt man folgendes ein:

Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>

und klickt auf die Schaltfläche "Search!". Es wird daraufhin eine Seite mit den beiden Ubuntu-Schlüsseln angezeigt. Nach einem Klick auf die jeweilige Key-ID wird der entsprechende Schlüssel angezeigt:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.6
Comment: Hostname: keyserver.ubuntu.com
...
-----END PGP PUBLIC KEY BLOCK-----

Bei beiden Schlüsseln muss der gesamte Block (inkl. der Zeilen "-----BEGIN ...-----" und "-----END ...-----") in eine eigene Datei kopiert werden, z.B. ubuntu.key und ubuntu-2012.key

Anschließend importiert man diese beiden Dateien mit GPG[1]:

gpg --import ubuntu-2012.key  

gpg: key FBB75451: public key "Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: no ultimately trusted keys found

gpg --import ubuntu.key 

gpg: key EFE21092: public key "Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no ultimately trusted keys found