Paketquelle auf Echtheit überprüfen

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 [veroeffentlichungen]), als auch die Paketquellen (siehe [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 [bezogenes-paket-verifizieren]).

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.

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 ([debian-architekturen-ports-projekt].

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 Auflistung der gespeicherten, vertrauenswürdigen Schlüssel).

Mit dem Aufruf apt-key finger zeigen Sie zusätzlich deren Fingerabdruck an (siehe Darstellung der Fingerabdrücke der vertrauenswürdigen Schlüssel). Mit apt-key export Schlüssel geben Sie 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.

apt key list.png
Figure 1. Auflistung der gespeicherten, vertrauenswürdigen Schlüssel
apt key finger.png
Figure 2. Darstellung der Fingerabdrücke der vertrauenswürdigen Schlüssel

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.

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 [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]
#
Important
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.

Alternative Benutzerschnittstellen zur APT-Schlüsselverwaltung

Neben dem Kommandozeilenprogramm apt-key existieren auch noch zwei interaktive Bedienoberflächen dazu: das auf GTK aufbauende gui-apt-key aus dem gleichnamigen Paket [Debian-Paket-gui-apt-key] und das auf Ncurses aufbauende curses-apt-key [curses-apt-key]. Beide besprechen wir hier nur kurz.

gui-apt-key starten Sie zunächst als Benutzer root oder mittels sudo. Im Dialogfenster (Hauptfenster von gui-apt-key) sehen Sie die Inhaber und das Ablaufdatum aller von APT als vertrauenswürdig eingestuften GPG-Schlüssel. Über das Menü haben Sie die Möglichkeit, weitere Schlüssel aus Dateien zu importieren, die Schlüssel gegen den Debian-Archiv-Schlüsselring zu aktualisieren (analog zu apt-key update), einen Schlüssel aus der Liste zu löschen oder Details wie einen Fingerabdruck zu einem Schlüssel anzeigen zu lassen.

gui apt key.png
Figure 3. Hauptfenster von gui-apt-key

curses-apt-key nutzt dieselben Backend-Bibliotheken wie gui-apt-key. Daher bietet es die gleichen Funktionalitäten, braucht jedoch dazu keine graphische Umgebung und eignet sich daher insbesondere für die Nutzung auf Servern (siehe curses-apt-key in einem xterm).

curses apt key.png
Figure 4. curses-apt-key in einem xterm

Derzeit ist curses-apt-key noch nicht Bestandteil von Debian und nur auf GitHub verfügbar [curses-apt-key]. Eine Aufnahme in Debian ist jedoch geplant [curses-apt-key-itp].

results matching ""

    No results matching ""