Debianパッケージの信頼性はどのように保証されますか?


8

悪意のある第三者によるDebianミラー内のコードのセキュリティのハッキング/妥協を防ぐため、または取得したパッケージが実際にメンテナが思っているものであることを確認するために、どのセキュリティシステムとプロセスが導入されていますか?

回答:


14

パッケージの確認

ミラーのコンテンツは、PGPキーを使用して、直接的または間接的に署名されます。Debianディストリビューションの「ルート」から始めます。

  • Releaseは、の分離署名で署名されてRelease.gpgおり、すべてのパッケージインデックスのハッシュ(MD5、SHA1、SHA256)とインストーラーハッシュ(InRelease現在は2つを組み合わせたもの)を含んでいます。
  • パッケージ指数(例えばbinary-amd64)パッケージのハッシュ(MD5とSHA256)を含有します。

ハッシュと署名はapt-get、システムに保存されているPGP鍵(によって管理されるapt-key)を使用するなどのツールによってチェックされます。受信システムが健全である限り、アーカイブPGPキーで(間接的に)署名されていないパッケージは、デフォルトではDebianアーカイブからインストールできません。ミラーの侵入者は、関連するPGPキーの制御も持っていないと、バイナリを置き換えることができません。

ミラーの制御

つまり、アーカイブを危険にさらすだけでは、実際にエンドユーザーのシステムを危険にさらすことはできません。また、これらのシステムがすでに信頼しているPGPキーを侵害する必要もあります。(これの当然の結果として、Debianシステムにキーを追加することは軽視するものではありません。)アーカイブのセキュリティはそれほど重要ではないので、これはある程度最初の質問に対処します。それでも、重要なシステム(署名が行われる場所)は厳密に監視および監視されており、アクセスできる人はほとんどいません。

メンテナの期待

パッケージが「実際、メンテナーがそう思っているもの」であることを保証することは、もう少し複雑です。これは、パッケージがたどるパスです。

  • パッケージはメンテナによって準備され、Debianキーリングのキー(つまり、Debianキーリングサーバーにアップロードされ、キーリングメンテナンスチームによってマージされた、アップロードするDebian開発者またはDebianメンテナに属するキー)で署名されます。
  • 署名されたパッケージがアーカイブにアップロードされ、検証されます(特に、使用される鍵は現在の鍵リングにあり、有効期限が切れていない必要があり、署名は有効でなければなりません。パッケージがDMによって署名されている場合は、 DMには、パッケージに関連する権限が必要です。
  • アップロードされたバイナリはそのまま最終的なアーカイブにプッシュされます(ここでは少し簡略化していますが、それが効果です)。
  • 欠落しているバイナリは、builddによってビルドされ、builddのPGPキーによって署名され、最終的なアーカイブにプッシュされます(これにより、有効なbuilddキーが認識され、それらに対してファイルが検証されます);
  • これらすべての更新は、適切なインデックス更新(上記のように署名されている)とともに、最終的にミラーネットワークにプッシュされます。

メンテナがパッケージソースとともにバイナリをアップロードする場合、これらは(当面の間)提供されることになるファイルです。現在、バイナリのアップロードはオプションであるため、それらをスキップすることがますます一般的になり、最終的にアップロードされたバイナリはドロップされます。(Ubuntuでは常にそうでした。)他のバイナリがメンテナの期待と一致するかどうかは、builddネットワークに依存します。そのため、builddも重要なシステムであり、厳密な監視の下、人間のアクセスはほとんどありません。すべてのアーティファクトが署名されているため、ファイルの整合性を常に検証できます。最初にメンテナのキーに対して、次にbuilddsのキーに対して、最後にアーカイブのキーに対してです。

plugwashで指摘されているように、元の署名はミラーで利用できず、DDは不足しているバイナリをアップロードできます。元の署名はdebian-devel-changesアーカイブから取得できます。

要約すると、現在のシステムは完全ではありませんが、ミラーからダウンロードできるすべてのファイルのトレーサビリティを提供します。状況を改善するために多くの努力があります:再現可能なビルド(公開されたソースへのバイナリの対応の独立した検証を可能にします)、メンテナが提供するバイナリを削除します...


見事に包括的ですが、ポスターから離れてドキュメントを読むように合理的に指示することもできます。:-)
Faheem Mitha、

@FaheemMitha躊躇しましたが、どのようなドキュメントですか?ありますwiki.debian.org/SecureAptは、しかし、私は認識していないよ、いくつかの他のドキュメントがありますしない限り、それはすべてをカバーしていない...すべて一緒にそれを組み合せることは、非常に複雑です!
スティーブンキット、2016年

それで、ユーザーが実行するdebian OSは事前に埋め込まれたPGP公開鍵(重要なシステム(署名が行われる場所)の秘密鍵とペアになっています)を持ち、apt-getこれらを信頼するため、これらの事前に埋め込まれた鍵を使用してパッケージを検証しますか?
the_velour_fog 2016年

1
@the_velour_fogはい、それは(ほぼ)そうです。公開鍵はdebian-archive-keyringパッケージで出荷されます。これらのキーを使用してファイルをapt-get検証Releaseし、ReleaseおよびPackagesファイルに含まれているハッシュを使用してパッケージを検証します。
Stephen Kitt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.