3.13. Paketquelle auf Echtheit überprüfen

3.13.1. Basiswissen

Paketquellen und Repositories sind im Prinzip Fileserver mit einer vorab festgelegten, spezifischen Struktur, deren Inhalt öffentlich zugänglich ist [Debian-Wiki-Debian-Repository-Format]. Vereinfacht betrachtet muss bei dessen Abruf sichergestellt werden, dass die von dort bezogenen Daten echt sind und auch mit den Originaldaten übereinstimmen, aus denen die Distribution besteht. Daher sind in der Paketverwaltung mehrstufige Mechanismen integriert, welche die Echtheit und Vollständigkeit der empfangenen Paketlisten und Pakete überprüfen (Authentizität).

Hintergrund dafür ist einerseits, dass eine Paketquelle Paketarchive unterschiedlichster Herkunft umfasst. Die Daten könnten aus einer wenig vertrauenswürdigen Quelle stammen und auch Schadcode enthalten. Ebenso nimmt die Zuverlässigkeit von Speichermedien (Datenträger) mit der Zeit ab und sorgt für fehlerhafte Bitfolgen. Desweiteren erfolgt der Transport über Leitungsnetze unterschiedlichster Art, wobei hier gekippte Bits und somit Übertragungsfehler und verfälschte Daten auf dem Transportweg nicht vollständig auszuschließen sind.

Daher sind sowohl alle Veröffentlichungen (siehe Abschnitt 2.10, „Veröffentlichungen“), als auch die Paketquellen (siehe Abschnitt 3.1, „Paketquellen“) mit den Paketlisten und die darüber bereitgestellten, einzelnen Pakete jeweils separat digital signiert. Eine digitale Signatur („Schlüssel“, GPG-Key) besteht aus zwei Teilen — einem öffentlichen und einem privaten, geheimen Schlüssel. Die Paketlisten werden zunächst vom Verwalter des Repositories mit seinem privaten Schlüssel signiert und der dazugehörige, öffentliche Schlüssel bekanntgegeben bzw. als Paket hinterlegt. Mit Hilfe dieses Signatur-Paares überprüfen Sie einerseits die Echtheit der Paketquelle und andererseits über die Hashsummen jeden einzelnen Pakets in den Paketlisten auch jedes einzelne Paket daraus (siehe auch „Bezogenes Paket verifizieren“ in Abschnitt 8.32.1, „Prüfung eines Paketes auf Unversehrtheit“).

APT und aptitude haben diesen Vorgang in ihre internen Abläufe integriert und nehmen Ihnen diesen Verifizierungsschritt vollständig ab. Falls die Signatur korrekt ist, dann wird der Paketmirror bzw. das bezogene Paket als glaubwürdig eingeschätzt. Falls nicht, erhalten Sie eine deutliche Warnung.

3.13.2. Schlüsselverwaltung mit apt-key (Überblick)

Die Verwaltung der Schlüssel erfolgt mit dem Programm apt-key. Dazu gehört ein Schlüsselring mit allen GPG-Schlüsseln der Paketquellen, aus denen Pakete bezogen wurden. Bei Debian sind diese Schlüssel Bestandteil des Pakets debian-archive-keyring [Debian-Paket-debian-archive-keyring], bei Ubuntu heißt das Paket hingegen ubuntu-keyring [Ubuntu-Paket-ubuntu-keyring].

Der primäre Schlüsselring für lokale, als vertrauenswürdig eingestufte Schlüssel ist die Datei /etc/apt/trusted.gpg. Für zusätzliche Schlüsselbunde und Dateifragmente weiterer vertrauenswürdiger Schlüssel ist das Verzeichnis /etc/apt/trusted.gpg.d/ vorgesehen. Insbesondere o.g. Schlüsselbund-Pakete speichern ihre Schlüsselbund-Dateien in diesem Verzeichnis.

Die einzelnen Dateien in /etc/apt/trusted.gpg.d/ gelten als Konfigurationsdateien, können also vom lokalen Administrator verändert oder gelöscht werden. Deswegen sind diese Schlüssel zusätzlich auch noch in der Datei /usr/share/keyrings/debian-archive-keyring.gpg gespeichert.

Die Schlüssel haben eine begrenzte Gültigkeit oder können auch zurückgezogen werden. Daher sind in der Schlüsselbund-Datei /usr/share/keyrings/debian-archive-removed-keys.gpg auch noch die abgelaufenen oder zurückgezogenen Schlüssel vergangener Debian-Veröffentlichungen verfügbar.

Ähnliche Schlüsselringe gibt es auch für andere Veröffentlichungen, bspw. debian-edu-archive-keyring für Skolelinux/DebianEdu [Skolelinux] und debian-ports-archive-keyring für das Debian-Ports-Projekt (siehe Abschnitt 1.2.1, „Debian-Ports-Projekt“).

3.13.3. Unterkommandos von apt-key

Mit apt-key greifen Sie auf ihren gespeicherten Schlüsselring zu. Damit lassen Sie sich bspw. die gemerkten Schlüssel anzeigen, fügen neue Schlüssel zum Schlüsselring hinzu oder entfernen diese daraus wieder. Diese Vorgänge kommen meist dann zum tragen, wenn Sie Ihr Debian-System von Ballast befreien und nicht mehr benötigte Schlüssel austragen oder weitere Paketquellen einbinden möchten, deren Schlüssel (noch) nicht offiziell hinterlegt ist.

Die vier Unterkommandos list, finger, export und exportall haben rein informativen Charakter. Mit den ersten beiden zeigen sie zu den gespeicherten, vertrauenswürdigen Schlüsseln deren Erstell- und Verfallsdatum sowie den Eigentümer bzw. Aussteller des Schlüssels an. Im vorliegenden Fall ist dieser keine Person, sondern eine Debian-Veröffentlichung bzw. deren Verantwortlicher. Als E-Mail-Adresse ist hier diejenige der FTP-Master hinterlegt (siehe Abbildung 3.11, „Auflistung der gespeicherten, vertrauenswürdigen Schlüssel“).

Abbildung 3.11. Auflistung der gespeicherten, vertrauenswürdigen Schlüssel

werkzeuge/paketquellen-und-werkzeuge/apt-key-list.png

Mit dem Aufruf apt-key finger zeigen Sie zusätzlich deren Fingerabdruck an[10]. 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>

#

Mit dem Aufruf apt-key export Schlüssel geben Sie hingegen nur einen bestimmten Schlüssel auf der Standardausgabe als als PGP-Block aus. Der Schalter apt-key exportall führt das gleiche für alle Schlüssel durch.

Mit apt-key add Schlüsseldatei und apt-key del Schlüssel-ID verändern Sie den Inhalt des Schlüsselbundes. Mit ersterem fügen Sie einen neuen Schlüssel aus einer Datei hinzu, mit letzterem löschen Sie den Schlüssel mit der angegebenen Schlüssel-ID aus dem Schlüsselring.

Die Option update synchronisiert hingegen den lokalen Schlüsselbund mit dem Archivschlüsselbund. Dabei werden die Schlüssel aus dem lokalen Schlüsselbund entfernt, die nicht mehr gültig sind. In Ubuntu ist auch die Option net-update anwendbar, die eine Synchronisation mit einem Schlüsselbund über das Netzwerk ermöglicht.

Anmerkung

Ab Debian 9 Stretch ist diese Option als veraltet markiert.

3.13.4. Beispiel: Ergänzung eines Schlüssels

Nutzen Sie beispielsweise den Webbrowser Opera, finden Sie dazu keine Pakete in den offiziellen Debian-Paketquellen. Opera ist nicht als freie Software eingeordnet, aber als deb-Paket von der Herstellerwebseite beziehbar. Daher fügen Sie in Schritt eins die Paketquelle zur Datei /etc/apt/sources.list hinzu (siehe auch Abschnitt 3.4, „Die Datei /etc/apt/sources.list verstehen“):

deb http://deb.opera.com/opera stable non-free

Als Schritt zwei benötigen Sie noch den dazugehörigen Schlüssel der Paketquelle. Der Hersteller empfiehlt auf seiner Seite den Bezug mittels wget wie folgt:

Bezug des Schlüssels zur Paketquelle, hier für Opera mittels wget

# wget http://deb.opera.com/archive.key
--2014-06-17 23:54:43--  http://deb.opera.com/archive.key
Auflösen des Hostnamen »deb.opera.com (deb.opera.com)«... 185.26.183.130
Verbindungsaufbau zu deb.opera.com (deb.opera.com)|185.26.183.130|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 2437 (2,4K) [application/pgp-keys]
In »»archive.key«« speichern.

100%[=======================================================================>] 2.437       --.-K/s   in 0s

2014-06-17 23:54:43 (63,0 MB/s) - »»archive.key«« gespeichert [2437/2437]
#

Unverschlüsselte Übertragung von Schlüsseln

Bitte beachten Sie, dass dieser Schlüssel jedoch nicht über gesicherte Kanäle (z.B. per HTTPS) heruntergeladen wurde und Sie damit nicht hundertprozentig sicher sein können, dass dieser Schlüssel wirklich von Opera ist. Leider scheint der Schlüssel auch nicht mit allzu vielen Signaturen ausgestattet zu sein, sodass eine Verifizierung über die Signaturen ebenfalls nicht möglich ist.

Der bezogene Schlüssel befindet sich nun im aktuellen Verzeichnis in der lokalen Datei archive.key. Diesen Schlüssel fügen Sie nun über den Aufruf apt-key add archive.key Ihrem lokalen Schlüsselbund hinzu:

Hinzufügen des bezogenen Schlüssels mittels apt-key

# apt-key add archive.key
OK
#

Hat alles geklappt, meldet sich apt-key mit einem schlichten OK zurück. Von nun an werden alle Pakete von dieser Paketquelle als vertrauenswürdig eingestuft. Auch Aktualisierungen über APT und aptitude sind problemlos möglich.

Es bleibt jedoch ein unangenehmer Beigeschmack erhalten. Aufgrund der ungesicherten Übertragung des bezogenen Schlüssels können Sie nicht sicher sein, ob der bezogene Schlüssel wirklich von Opera ist und Sie ihm vertrauen können, oder ob nicht zufällig eine Man-in-the-Middle-Attacke im Gange ist.

3.13.5. Abkündigung von apt-key

Seit APT 2.1.8 ist apt-key offiziell abgekündigt. Ersatz ist das Ablegen von Keyring-Dateien im Verzeichnis /etc/apt/trusted.gpg.d/, z.B. als Bestandteil eines Paketes. Solche Pakete heißen typischerweise <herausgeber>-archive-keyring, z.B. debian-archive-keyring, ubuntu-archive-keyring oder pkg-mozilla-archive-keyring.

3.13.6. Alternative Benutzerschnittstellen zur APT-Schlüsselverwaltung

Die Abkündigung von apt-key ist auch einer der Gründe, warum sich niemand mehr darum gekümmert hat, gui-apt-key [Debian-Paket-gui-apt-key], das verwaiste GUI-Frontend zu apt-key, weiterzuentwickeln. Entsprechend ist auch die darauf aufbauende, curses-basierende TUI-Programm curses-apt-key [curses-apt-key] nicht mehr weiterentwickelt wird.



[10] 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.