// Datei: ./werkzeuge/paketoperationen/bezogenes-paket-verifizieren.adoc
// Baustelle: Rohtext

[[bezogenes-paket-verifizieren]]

=== Bezogenes Paket verifizieren (GPG-Key) ===

// Stichworte für den Index
(((Paket, auf Vertrauenswürdigkeit prüfen)))
(((Paket, Signatur überprüfen)))
(((Paket, verifizieren)))
(((Paketsignatur, überprüfen)))
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.

// Stichworte für den Index
(((Debian, Vertrauenskette)))
(((Paketsignaturen)))
Aus diesem Grund sind sowohl die offiziellen Paketquellen von Debian,
als auch die darüber referenzierten Quellpakete signiert (siehe dazu
<<paketquelle-auf-echtheit-ueberpruefen>>). 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.

==== Basis ====

// Stichworte für den Index
(((Debian, Vertrauenskette)))

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.

// Stichworte für den Index
(((apt-key)))
(((apt-key, add)))
(((/etc/apt/trusted.gpg)))
(((Debianpaket, apt)))
(((Debianpaket, debian-archive-keyring)))
Vertrauenswürdige Schlüssel verwalten Sie mit dem Programm `apt-key` aus
dem Paket 'apt' <<Debian-Paket-apt>>. Auf die Bedienung von `apt-key` 
gehen wir unter <<apt-key-unterkommandos>> ein. 

Zu dem Programm 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.

==== Nur ein Einzelpaket prüfen ====

* `apt-key` (siehe <<Debian-Wiki-SecureApt>>)
* empfohlene Vorgehensweise zur Validierung
** ToDo
* was passiert, wenn das Paket keinen gültigen GPG-Key hat
** wie erkenne ich das bzw. bekomme das heraus
** Ausgabe einer Warnung (W) bei `apt-get` und `aptitude` (siehe <<fig.aptitude-paket-ohne-gpg>>)

.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
#
----

.Ausgabe einer 'deutlichen' Warnung bei `aptitude`
image::werkzeuge/paketoperationen/aptitude-paket-ohne-gpg.png[id="fig.aptitude-paket-ohne-gpg", width="50%"]

==== 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
<<paket-auf-veraenderungen-pruefen>> nach.

// Datei (Ende): ./werkzeuge/paketoperationen/bezogenes-paket-verifizieren.adoc
