web-dev-qa-db-ja.com

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

Pamに機能を追加したいのですが、良い出発点はlibpam-modulesソースをダウンロードすることだと考えました。ダウンロード時に、次の警告に気付きます:gpgv: Can't check signature: public key not found

apt-getが公開鍵を見つけられない場合、ソースパッケージの整合性を検証する公式の方法は何ですか?

ubuntu-keyringおよびdebian-keyringパッケージの最新バージョンは既にインストールされています。

対応する公開キーを見つけてインストールする ways があります。ただし、dscファイルの内容を信頼して、dscファイルの署名を検証するために使用する公開キーを教えているため、それ自体は整合性を提供しません。

dscファイルのgpg署名は、整合性検証の重要な部分ですか?中間の人または不正なミラーは、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
kasperd

ソースパッケージの整合性は、dscファイルのgpg署名を検証せずに検証できます。

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

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.gzgrep main/source/Sources.gz Releaseから取得したハッシュを比較します
  5. sha256sum pam_1.1.8-1ubuntu2.dsczcat 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
kasperd

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

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

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

1
saiarcot895