4 votes

Quelle est la méthode officielle pour vérifier l'intégrité d'un package source ?

Je veux ajouter une fonctionnalité à pam, et j'ai pensé que le meilleur point de départ était de télécharger la source de libpam-modules. En téléchargeant, je remarque cet avertissement : gpgv: Impossible de vérifier la signature : clé publique introuvable

Quelle est la méthode officielle pour vérifier l'intégrité des paquets sources, lorsque apt-get ne trouve pas la clé publique ?

La dernière version des paquets ubuntu-keyring et debian-keyring sont déjà installés.

Il existe des moyens de trouver la clé publique correspondante et de l'installer. Cependant, cela ne garantit pas l'intégrité, car en fait, cela revient à faire confiance au contenu du fichier dsc pour me dire quelle clé publique utiliser pour vérifier la signature du fichier dsc.

La signature gpg sur le fichier dsc est-elle une partie critique de la vérification de l'intégrité ? Est-ce qu'un homme du milieu ou un miroir malveillant pourrait servir une version malveillante du fichier où l'avertissement de gpg est la seule indication qu'il y a quelque chose de mal qui se passe ? Ou est-ce que apt-get a d'autres moyens de valider l'intégrité ?

Où puis-je trouver une documentation officielle sur le modèle de sécurité ? Idéalement, j'aimerais comprendre le chemin de confiance complet de l'image d'installation au paquet source que je suis en train de télécharger.

La sortie complète du téléchargement était la suivante :

$ 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

3voto

bokmann Points 694

L'intégrité du paquet source peut être vérifiée sans valider la signature gpg sur le fichier dsc.

Chaque source d'installation possède une paire de fichiers appelés Release et Release.gpg. Ces deux fichiers sont à la base d'un arbre de hachage, qui peut être utilisé pour valider l'intégrité de tout dans l'archive. La signature gpg sur Release est la seule qui doit être vérifiée.

La signature sur le fichier dsc peut servir un but important avant que le fichier ne soit mis dans un référentiel et indirectement signé via Release.gpg. Une fois le fichier dans le référentiel, la signature sur le fichier dsc peut être ignorée.

Voici comment je pourrais vérifier manuellement l'intégrité. Autant que je sache, apt-get source fait la même validation.

  1. Téléchargez http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release et http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg.
  2. Vérifiez la signature en utilisant gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release (La clé publique peut également être trouvée dans /usr/share/keyrings/ubuntu-archive-keyring.gpg)
  3. Téléchargez http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
  4. Comparez les hachages obtenus à partir de sha256sum Sources.gz et grep main/source/Sources.gz Release
  5. Comparez les hachages obtenus à partir de sha256sum pam_1.1.8-1ubuntu2.dsc et zcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
  6. Validez les hachages trouvés dans le fichier dsc : cat pam_1.1.8-1ubuntu2.dsc | sed -e 's/^ //;s/ [1-9][0-9]* / /' | sha256sum -c

1voto

saiarcot895 Points 10489

La raison pour laquelle vous voyez cet avertissement est que les paquets sources sont signés par la clé propre du développeur, tandis que les paquets binaires que vous obtenez du dépôt sont signés par la clé de signature du dépôt. Étant donné que ubuntu-keyring ne donne que le trousseau de clés du dépôt final (debian-keyring fournit en fait également les clés publiques de tous ses mainteneurs), apt ne peut pas trouver la clé et considère le paquet comme non authentifié.

Par conséquent, la solution ici est d'importer la clé depuis un serveur de clés. Vous pouvez également rechercher le paquet source sur Launchpad (pam se trouve ici), cliquer sur l'adresse e-mail de la personne qui a apporté la dernière modification à un paquet, et vérifier l'empreinte de la clé à partir de là.

Dans ce cas, la dernière personne à avoir modifié le paquet était Stéphane Graber, et il se trouve que sa clé est dans debian-keyring (plus précisément, dans /usr/share/keyrings/debian-maintainers.gpg). Vous pouvez installer le paquet debian-keyring, exporter sa clé à partir de ce trousseau de clés, et importer cette clé dans votre propre trousseau de clés afin que apt puisse vérifier qu'elle est correctement signée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X