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
同じ検証が行われます。
- ダウンロードし
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release
てhttp://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg
。 - 署名を以下で確認します
gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release
(公開鍵は以下でも確認できます/usr/share/keyrings/ubuntu-archive-keyring.gpg
) - ダウンロード
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
sha256sum Sources.gz
から取得したハッシュを比較するgrep main/source/Sources.gz Release
sha256sum pam_1.1.8-1ubuntu2.dsc
から取得したハッシュを比較するzcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
- ファイル内で見つかったハッシュを検証します
dsc
。cat 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
適切に署名されているかどうかを確認できます。