web-dev-qa-db-fra.com

Quelle est la méthode officielle de vérification de l'intégrité d'un paquet source?

Je veux ajouter une fonctionnalité à pam, et j’ai pensé qu’un bon point de départ était de télécharger la source libpam-modules. Lors du téléchargement, je remarque cet avertissement: gpgv: Can't check signature: public key not found

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

La dernière version des packages ubuntu-keyring et debian-keyring est déjà installée.

Il y a façons pour trouver la clé publique correspondante et l'installer. Toutefois, cela en soi ne garantit pas l’intégrité, car dans les faits, il fait confiance au contenu du fichier dsc pour me dire quelle clé publique utiliser pour vérifier la signature sur le fichier dsc.

La signature gpg sur le fichier dsc constitue-t-elle un élément essentiel de la vérification de l'intégrité? Un homme au milieu ou un miroir rouge peut-il servir une version malveillante du fichier où l'avertissement de gpg est la seule indication qu'un incident grave se produit? Ou bien apt-get dispose-t-il d'autres moyens de valider l'intégrité?

Où pourrais-je trouver de la 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 télécharge.

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
4
kasperd

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

Chaque source d'installation contient une paire de fichiers nommés Release et Release.gpg. Ces deux fichiers sont la racine d'un arbre de hachage, qui peut être utilisé pour valider l'intégrité de tout ce qui est archivé. La signature gpg sur Release est la seule qui doit être vérifiée.

La signature sur le fichier dsc peut avoir une fonction importante avant que le fichier ne soit placé dans un référentiel et signé indirectement via Release.gpg. Une fois que le fichier est dans le référentiel, la signature sur le fichier dsc peut être ignorée.

Voici comment j'ai pu vérifier manuellement l'intégrité. Autant que je sache, apt-get source effectue 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 se trouve également dans /usr/share/keyrings/ubuntu-archive-keyring.gpg).
  3. Télécharger http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
  4. Comparez les hachages obtenus de sha256sum Sources.gz et grep main/source/Sources.gz Release
  5. Comparez les hachages obtenus 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
3
kasperd

La raison pour laquelle vous voyez cet avertissement est que les packages source sont signés par la propre clé du développeur, tandis que les packages binaires que vous obtenez du référentiel sont signés par la clé de signature du référentiel. Puisque ubuntu-keyring ne donne que le fichier de clés du référentiel final (debian-keyring fournit également les clés publiques de tous ses responsables), apt ne trouve pas la clé et considère le package comme non authentifié.

Par conséquent, la solution ici consiste à importer la clé à partir d'un serveur de clés. Vous pouvez également rechercher le package source dans Launchpad (pam is here ), cliquer sur l'adresse de messagerie de la personne qui a effectué la dernière modification pour un package, puis vérifier l'empreinte de la clé à partir de Là.

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

1
saiarcot895