Was ist die offizielle Methode zum Überprüfen der Integrität eines Quellpakets?

Was ist die offizielle Methode zum Überprüfen der Integrität eines Quellpakets?

Ich möchte Pam eine neue Funktion hinzufügen und dachte, ein guter Ausgangspunkt wäre das Herunterladen der libpam-modulesQuelle. 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-getder öffentliche Schlüssel nicht gefunden werden kann?

Die neuste Version ubuntu-keyringund debian-keyringPakete 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 dscDatei mir sagt, welcher öffentliche Schlüssel zum Überprüfen der Signatur der dscDatei zu verwenden ist.

Ist die GPG-Signatur der dscDatei 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-getandere 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 dscDatei zu validieren.

Jede Installationsquelle hat ein Dateipaar namens Releaseund 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 Releaseist die einzige, die überprüft werden muss.

Die Signatur der dscDatei 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.gpgdie Signatur der Datei ignoriert werden.dsc

So könnte ich die Integrität manuell überprüfen. Soweit ich weiß, apt-get sourcefunktioniert die Validierung genauso.

  1. Herunterladen http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Releaseund http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg.
  2. Ü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)
  3. Herunterladenhttp://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
  4. Vergleichen Sie die Hashes von sha256sum Sources.gzundgrep main/source/Sources.gz Release
  5. Vergleichen Sie die Hashes von sha256sum pam_1.1.8-1ubuntu2.dscundzcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
  6. Überprüfen Sie die in der dscDatei 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-keyringnur der Schlüsselbund des endgültigen Repo bereitgestellt wird ( debian-keyringtatsächlich werden auch die öffentlichen Schlüssel aller seiner Betreuer bereitgestellt), aptkann 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 ( pamistHier), 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.

verwandte Informationen