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
ソースパッケージの整合性は、dsc
ファイルのgpg署名を検証せずに検証できます。
各インストールソースには、Release
およびRelease.gpg
というファイルのペアがあります。これらの2つのファイルはハッシュツリーのルートであり、アーカイブ内のすべての整合性を検証するために使用できます。検証する必要があるのは、Release
のgpg署名のみです。
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
この警告が表示される理由は、ソースパッケージが開発者自身のキーによって署名されているのに対し、レポから取得したバイナリパッケージはレポ署名キーによって署名されているためです。 ubuntu-keyring
は最終リポジトリのキーリングのみを提供するため(debian-keyring
は実際にすべてのメンテナーの公開鍵も提供します)、apt
は鍵を見つけられず、パッケージが認証されていないと見なします。
したがって、ここでの解決策は、キーサーバーからキーをインポートすることです。また、Launchpadでソースパッケージを検索し(pam
is here )、パッケージの最後の変更を行った人のメールアドレスをクリックし、キーフィンガープリントを確認することもできます。そこ。
この場合、パッケージを最後に変更したのはStéphaneGraberであり、彼のキーがdebian-keyring
(具体的には/usr/share/keyrings/debian-maintainers.gpg
)にあるのは偶然です。 debian-keyring
パッケージをインストールし、そのキーリングからキーをエクスポートし、そのキーを独自のキーリングにインポートして、apt
が適切に署名されていることを確認できます。