Какой официальный метод проверки целостности исходного пакета?

Я хочу добавить функцию в PAM, и я решил, что хорошей отправной точкой было бы загрузить libpam-modules источник. При загрузке я замечаю это предупреждение: gpgv: Can't check signature: public key not found

Каков официальный метод проверки целостности исходных пакетов, когда apt-get не могу найти открытый ключ?

Новейшая версия ubuntu-keyring а также debian-keyring пакеты уже установлены.

Есть способы найти соответствующий открытый ключ и установить его. Однако это само по себе не обеспечивает целостности, поскольку в действительности оно доверяет содержанию dsc файл, чтобы сказать мне, какой открытый ключ использовать для проверки подписи на dsc файл.

Является ли подпись GPG на dsc подать критическую часть проверки целостности? Может ли человек посередине или румяное зеркало подать вредоносную версию файла, где предупреждение от gpg является единственным признаком того, что происходит что-то плохое? Или делает apt-get есть другие способы проверки целостности?

Где я могу найти официальную документацию по модели безопасности? В идеале я хотел бы понять полный путь доверия от установочного образа до исходного пакета, который я загружаю.

Полный вывод из загрузки был такой:

$ 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

2 ответа

Решение

Целостность исходного пакета может быть проверена без проверки подписи gpg на dsc файл.

Каждый источник установки имеет пару файлов Release а также Release.gpg, Эти два файла являются корнем дерева хешей, которое можно использовать для проверки целостности всего в архиве. Подпись gpg на Release это единственный, который необходимо проверить.

Подпись на dsc файл может служить важной цели, прежде чем файл будет помещен в хранилище и косвенно подписан через Release.gpg, Когда файл находится в хранилище, подпись на dsc файл можно игнорировать.

Вот как я мог вручную проверить целостность. Насколько я могу сказать, apt-get source делает ту же проверку.

  1. Скачать http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release а также http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg,
  2. Проверьте подпись, используя gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release (Открытый ключ также можно найти в /usr/share/keyrings/ubuntu-archive-keyring.gpg)
  3. Скачать http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
  4. Сравните хэши, полученные из sha256sum Sources.gz а также grep main/source/Sources.gz Release
  5. Сравните хэши, полученные из sha256sum pam_1.1.8-1ubuntu2.dsc а также zcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
  6. Проверить хэши, найденные в dsc файл: cat pam_1.1.8-1ubuntu2.dsc | sed -e 's/^ //;s/ [1-9][0-9]* / /' | sha256sum -c

Причина, по которой вы видите это предупреждение, заключается в том, что исходные пакеты подписаны собственным ключом разработчика, а бинарные пакеты, которые вы получаете из репо, подписаны ключом подписи репо. поскольку ubuntu-keyring дает только брелок для окончательного репо (debian-keyring на самом деле также предоставляет открытые ключи всех его сопровождающих), apt не может найти ключ и считает, что пакет не прошел проверку подлинности.

Поэтому решение здесь заключается в том, чтобы импортировать ключ с сервера ключей. Вы также можете посмотреть исходный пакет на Launchpad (pam находится здесь), нажмите на адрес электронной почты человека, который сделал последнее изменение для пакета, и проверьте отпечаток ключа оттуда.

В этом случае последним, кто изменил пакет, был Стефан Грабер, и так получилось, что его ключ debian-keyring (в частности, в /usr/share/keyrings/debian-maintainers.gpg). Вы можете установить debian-keyring пакет, экспортируйте его ключ из этого набора ключей и импортируйте этот ключ в свой собственный набор ключей так, чтобы apt можете проверить, что он правильно подписан.

Другие вопросы по тегам