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

Я хочу добавить опцию к 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
4
задан 13 April 2017 в 15:23

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
3
ответ дан 1 December 2019 в 09:50

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

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

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

1
ответ дан 1 December 2019 в 09:50

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

Похожие вопросы: