Ich möchte Pam eine neue Funktion hinzufügen und dachte, ein guter Ausgangspunkt wäre das Herunterladen der libpam-modules
Quelle. Beim Herunterladen sehe ich diese Warnung:gpgv: Can't check signature: public key not found
Was ist die offizielle Methode zum Überprüfen der Integrität von Quellpaketen, wenn apt-get
der öffentliche Schlüssel nicht gefunden werden kann?
Die neuste Version ubuntu-keyring
und debian-keyring
Pakete sind bereits installiert.
Es gibtWegeum den entsprechenden öffentlichen Schlüssel zu finden und zu installieren. Das allein bietet jedoch noch keine Integrität, da ich mich tatsächlich darauf verlasse, dass der Inhalt der dsc
Datei mir sagt, welcher öffentliche Schlüssel zum Überprüfen der Signatur der dsc
Datei zu verwenden ist.
Ist die GPG-Signatur der dsc
Datei ein kritischer Teil der Integritätsüberprüfung? Könnte ein Man-in-the-Middle oder ein bösartiger Mirror eine bösartige Version der Datei bereitstellen, bei der die Warnung von GPG der einzige Hinweis darauf ist, dass etwas Schlimmes passiert? Oder gibt es apt-get
andere Möglichkeiten, die Integrität zu validieren?
Wo finde ich offizielle Dokumentation zum Sicherheitsmodell? Idealerweise würde ich gerne den vollständigen Vertrauenspfad vom Installationsimage zum Quellpaket kennen, das ich herunterlade.
Die vollständige Ausgabe des Downloads war folgende:
$ apt-get source libpam-modules
Reading package lists... Done
Building dependency tree
Reading state information... Done
Picking 'pam' as source package instead of 'libpam-modules'
NOTICE: 'pam' packaging is maintained in the 'Bzr' version control system at:
https://code.launchpad.net/~ubuntu-core-dev/pam/ubuntu
Please use:
bzr branch https://code.launchpad.net/~ubuntu-core-dev/pam/ubuntu
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 2,043 kB of source archives.
Get:1 http://dk.archive.ubuntu.com/ubuntu/ trusty/main pam 1.1.8-1ubuntu2 (dsc) [2,510 B]
Get:2 http://dk.archive.ubuntu.com/ubuntu/ trusty/main pam 1.1.8-1ubuntu2 (tar) [1,893 kB]
Get:3 http://dk.archive.ubuntu.com/ubuntu/ trusty/main pam 1.1.8-1ubuntu2 (diff) [147 kB]
Fetched 2,043 kB in 6s (316 kB/s)
gpgv: Signature made Fri 31 Jan 2014 11:12:23 PM CET using RSA key ID 64792D67
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./pam_1.1.8-1ubuntu2.dsc
Antwort1
Die Integrität des Quellpakets kann überprüft werden, ohne die GPG-Signatur der dsc
Datei zu validieren.
Jede Installationsquelle hat ein Dateipaar namens Release
und Release.gpg
. Diese beiden Dateien sind die Wurzel eines Hash-Baums, mit dem die Integrität aller Elemente im Archiv überprüft werden kann. Die GPG-Signatur auf Release
ist die einzige, die überprüft werden muss.
Die Signatur der dsc
Datei kann einen wichtigen Zweck erfüllen, bevor die Datei in ein Repository gestellt und indirekt durch signiert wird . Sobald sich die Datei im Repository befindet, kann Release.gpg
die Signatur der Datei ignoriert werden.dsc
So könnte ich die Integrität manuell überprüfen. Soweit ich weiß, apt-get source
funktioniert die Validierung genauso.
- Herunterladen
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release
undhttp://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg
. - Überprüfen Sie die Signatur mit
gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release
(Der öffentliche Schlüssel befindet sich auch in/usr/share/keyrings/ubuntu-archive-keyring.gpg
) - Herunterladen
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
- Vergleichen Sie die Hashes von
sha256sum Sources.gz
undgrep main/source/Sources.gz Release
- Vergleichen Sie die Hashes von
sha256sum pam_1.1.8-1ubuntu2.dsc
undzcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
- Überprüfen Sie die in der
dsc
Datei gefundenen Hashes:cat pam_1.1.8-1ubuntu2.dsc | sed -e 's/^ //;s/ [1-9][0-9]* / /' | sha256sum -c
Antwort2
Der Grund für diese Warnung ist, dass die Quellpakete mit dem eigenen Schlüssel des Entwicklers signiert sind, während die Binärpakete, die Sie aus dem Repo erhalten, mit dem Signaturschlüssel des Repo signiert sind. Da ubuntu-keyring
nur der Schlüsselbund des endgültigen Repo bereitgestellt wird ( debian-keyring
tatsächlich werden auch die öffentlichen Schlüssel aller seiner Betreuer bereitgestellt), apt
kann der Schlüssel nicht gefunden werden und das Paket wird als nicht authentifiziert betrachtet.
Daher besteht die Lösung hier darin, den Schlüssel von einem Schlüsselserver zu importieren. Sie können das Quellpaket auch auf Launchpad nachschlagen ( pam
istHier), klicken Sie auf die E-Mail-Adresse der Person, die die letzte Änderung an einem Paket vorgenommen hat und prüfen Sie von dort aus den Schlüsselfingerabdruck.
In diesem Fall war Stéphane Graber die letzte Person, die das Paket geändert hat, und sein Schlüssel befindet sich zufällig in debian-keyring
(genauer gesagt in /usr/share/keyrings/debian-maintainers.gpg
). Sie können das Paket installieren debian-keyring
, seinen Schlüssel aus diesem Schlüsselbund exportieren und diesen Schlüssel in Ihren eigenen Schlüsselbund importieren, damit Sie apt
überprüfen können, ob er richtig signiert ist.