ソース パッケージの整合性をチェックする公式の方法は何ですか?

ソース パッケージの整合性をチェックする公式の方法は何ですか?

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各インストール ソースには、とという 2 つのファイルがありますRelease.gpg。これら 2 つのファイルはハッシュ ツリーのルートであり、アーカイブ内のすべての整合性を検証するために使用できます。検証する必要があるのは、 の gpg 署名Releaseのみです。

ファイルの署名は、dscファイルがリポジトリに配置され、 を通じて間接的に署名される前に重要な目的を果たす場合がありますRelease.gpg。ファイルがリポジトリに配置された後は、ファイルの署名はdsc無視できます。

整合性を手動で検証する方法は次のとおりです。私の知る限り、apt-get source同じ検証が行われます。

  1. ダウンロードしhttp://dk.archive.ubuntu.com/ubuntu/dists/trusty/Releasehttp://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. ファイル内で見つかったハッシュを検証しますdsccat pam_1.1.8-1ubuntu2.dsc | sed -e 's/^ //;s/ [1-9][0-9]* / /' | sha256sum -c

答え2

この警告が表示される理由は、ソース パッケージは開発者自身のキーで署名されているのに対し、リポジトリから取得したバイナリ パッケージはリポジトリの署名キーで署名されているためです。 はubuntu-keyring最終リポジトリのキーリングのみを提供するため (debian-keyring実際にはすべてのメンテナーの公開キーも提供します)、aptキーを見つけることができず、パッケージは認証されていないとみなされます。

pamしたがって、ここでの解決策は、キーサーバーからキーをインポートすることです。Launchpadでソースパッケージを検索することもできます(ここ) では、パッケージに最後に変更を加えた人のメール アドレスをクリックし、そこからキーのフィンガープリントを確認します。

この場合、パッケージを最後に変更したのは Stéphane Graber 氏で、彼のキーはたまたま にありますdebian-keyring(具体的には にあります/usr/share/keyrings/debian-maintainers.gpg)。debian-keyringパッケージをインストールし、そのキーリングから彼のキーをエクスポートし、そのキーを自分のキーリングにインポートして、apt適切に署名されているかどうかを確認できます。

関連情報