8.35. Bezogenes Paket verifizieren (GPG-Key)

Installieren Sie ein Paket von einer Paketquelle, greifen eine ganze Reihe von automatischen Überprüfungen, die sicherstellen, dass die von Ihnen bezogenen Daten vertrauenswürdig sind. Mit den nachfolgend beschriebenen Vorgehensweisen können Sie die entsprechenden Einzelschritte selbst nachvollziehen und durchführen.

Diese Überprüfungen stellen sicher, dass ein von Ihnen bezogenenes Debianpaket dem Paketmirror so entnommen wurde, wie es von der Distribution in der Veröffentlichung zur Verfügung gestellt wurde. Sie schließen damit aus, dass zwischenzeitlich Veränderungen von einer dritten Partei oder auf dem Paketmirror stattgefunden haben. Weiterhin wissen Sie danach ebenfalls, dass das Paket vollständig zu Ihnen übertragen wurde und dass das Paket auf dem Weg vom Paketmirror zu Ihnen nicht verändert wurde. U.a. bilden diese Schritte die Vertrauensbasis für die von Ihnen bezogene Software.

Aus diesem Grund sind sowohl die offiziellen Paketquellen von Debian, als auch die darüber referenzierten Quellpakete signiert (siehe dazu Abschnitt 3.12, „Paketquelle auf Echtheit überprüfen“). Die Signaturen werden mithilfe der Public-Key-Kryptographie erststellt. Mit dem entsprechenden öffentlichen Schlüssel (engl. Public Key) können Sie (und jeder andere Benutzer ebenso) überprüfen, ob das Paket vertrauenswürdig ist.

8.35.1. Basis

Die Grundlage dazu bildet die Vertrauenskette bei Debian, die sich vom Entwickler zum Build-Daemon (kurz „buildd“) bis hin zum FTP-Master-Server, den Paketlisten, dem Debian-Archive-Keyring und dem Debian-Keyring erstreckt. Genutzt wird dabei eine Kombination aus kryptographischen Hashsummen und einer digitalen Signatur.

Auf den Debian-Spiegelservern befindet sich pro Veröffentlichung eine digital signierte Datei namens Release. Sie beinhaltet die Namen der Paketlisten (heutzutage meist Packages, Packages.gz und Packages.xz, früher oft auch noch Packages.bz2) sowie deren Hashsummen als MD5-, SHA1- und SHA256-Variante. Mit der digitalen Signatur der Release-Datei und den darin enthalten Hashsummen wird sichergestellt, dass diese Dateien nicht verändert wurden.

Die Datei Packages (wie auch deren komprimierten Varianten) beinhaltet wiederum eine Liste von Paketen bzw. deren Dateien, die für diese Veröffentlichung zur Verfügung stehen – und deren Hash-Summen. Dies stellt wiederum sicher, dass die Paketdateien aus der Liste nicht verändert wurden.

Durch die gesamte Kette aus Paket-Hashsummen in den Paketlisten und Paketliste-Hashsummen in der Release-Datei garantiert die einzelne digitale Signatur auf der Release-Datei die Integrität sämtlicher Pakete einer Veröffentlichung.

Vertrauenswürdige Schlüssel verwalten Sie mit dem Programm apt-key aus dem Paket apt. Dazu gehört ein Schlüsselring von öffentlichen GnuPG-Schlüsseln, sog. „Public Keys“, mit denen die Signaturen in der Datei Release.gpg auf den Debian-Spiegelservern überprüft werden können. Dieser Schlüsselring ist im Paket debian-archive-keyring enthalten und lokal in Dateien im Verzeichnis /etc/apt/trusted.gpg.d gespeichert.

Dazu kommt noch die Datei /etc/apt/trusted.gpg, welche heutzutage nur noch manuell per apt-key add hinzugefügte Schlüssel enthält. Bei früheren Veröffentlichungen war diese Datei die alleinige Quelle zur Überprüfung von Veröffentlichungssignaturen.

Die Signaturen der von Ihnen verwendeten Paketquellen zeigen Sie mit dem Aufruf apt-key finger'{empty}footnote:[Da die Datei `/etc/apt/trusted.gpg teilweise für normale User nicht lesbar ist, kann es sein, dass Sie dieses Kommando mit Root-Rechten ausführen müssen.] an. Nachfolgend sehen Sie beispielhaft die Signaturen zum Opera Software Archive, dem Mendeley Desktop Team und dem Debian Archive für die beiden Veröffentlichungen Wheezy und Jessie.

Liste der Signaturen (Ausschnitt). 

# apt-key finger
/etc/apt/trusted.gpg
- -------------------
pub   1024D/30C18A2B 2012-10-29 [verfallen: 2014-10-29]
  Schl.-Fingerabdruck = ABCD 165A F57C AC92 18D2  872B E585 066A 30C1 8A2B
uid                  Opera Software Archive Automatic Signing Key 2013 <packager@opera.com>

pub   2048R/6F036044 2011-02-21
  Schl.-Fingerabdruck = 26BB 0219 1EF4 588D 3A7B  C30F D800 C7D6 6F03 6044
uid                  Mendeley Desktop Team <desktop@mendeley.com>
sub   2048R/F9CE0BFD 2011-02-21

/etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg
- -------------------------------------------------------
pub   4096R/518E17E1 2013-08-17 [verfällt: 2021-08-15]
  Schl.-Fingerabdruck = 75DD C3C4 A499 F1A1 8CB5  F3C8 CBF8 D6FD 518E 17E1
uid                  Jessie Stable Release Key <debian-release@lists.debian.org>

/etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg
- ----------------------------------------------------------
pub   4096R/46925553 2012-04-27 [verfällt: 2020-04-25]
  Schl.-Fingerabdruck = A1BD 8E9D 78F7 FE5C 3E65  D8AF 8B48 AD62 4692 5553
uid                  Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>

/etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg
- -------------------------------------------------------
pub   4096R/65FFB764 2012-05-08 [verfällt: 2019-05-07]
  Schl.-Fingerabdruck = ED6D 6527 1AAC F0FF 15D1  2303 6FB2 A1C2 65FF B764
uid                  Wheezy Stable Release Key <debian-release@lists.debian.org>

#

TODO: gui-apt-key/curses-apt-key doppelt gemoppelt: Auch schon in Abschnitt 3.12, „Paketquelle auf Echtheit überprüfen“ aufgeführt.

Für eine graphische Darstellung nutzen Sie stattdessen das Werkzeug gui-apt-key aus den gleichnamigen Paket [Debian-Paket-gui-apt-key]. Es existiert auch eine TUI-Variante namens curses-apt-key [curses-apt-key]. Diese ist aber zur Zeit noch nicht offizieller Bestandteil von Debian, da dazu zuerst das Paket gui-apt-key in Bibliothek und Frontend aufgespalten werden müsste. Details dazu finden Sie im Debian-Bugtracker [curses-apt-key-braucht-gui-apt-key-aufsplittung]. In Abbildung 8.25, „Informationen zu einem ausgewählten Schlüssel in gui-apt-key anzeigen“ sehen Sie gui-apt-key mit der Überprüfung des (inzwischen abgelaufenen) Schlüssels für das Opera Software Archive.

Abbildung 8.25. Informationen zu einem ausgewählten Schlüssel in gui-apt-key anzeigen

werkzeuge/paketoperationen/gui-apt-key2.png

8.35.2. Nur ein Einzelpaket prüfen

Aktualisierung der Paketlisten mit erkanntem GPG-Fehler. 

# apt-get update
...
Hole:10 http://deb.opera.com squeeze/non-free i386 Packages [774 B]
Es wurden 1.250 kB in 3 s geholt (329 kB/s)
Paketlisten werden gelesen... Fertig
W: GPG-Fehler: http://deb.opera.com squeeze Release: Die folgenden Signaturen konnten
nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist:
NO_PUBKEY E585066A30C18A2B
#

Abbildung 8.26. Ausgabe einer deutlichen Warnung bei aptitude

werkzeuge/paketoperationen/aptitude-paket-ohne-gpg.png

8.35.3. Alle bereits installierten Pakete und Dateien prüfen

Um eine ganze Installation auf Korrektheit und bzgl. möglicher Veränderungen zu überprüfen, müssen Sie nicht jedes Paket einzeln anschauen. Wie Sie in dieser Situation vorgehen, lesen Sie unter Abschnitt 8.29, „Paket auf Veränderungen prüfen“ nach.