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
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.
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release
et http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg
.gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release
(la clé publique se trouve également dans /usr/share/keyrings/ubuntu-archive-keyring.gpg
).http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
sha256sum Sources.gz
et grep main/source/Sources.gz Release
sha256sum pam_1.1.8-1ubuntu2.dsc
et zcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
dsc
: cat pam_1.1.8-1ubuntu2.dsc | sed -e 's/^ //;s/ [1-9][0-9]* / /' | sha256sum -c
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é.