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

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

Я хочу добавить функцию в 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

решение1

Целостность исходного пакета можно проверить без проверки подписи 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

решение2

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

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

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

Связанный контент