広く使用されているLinuxディストリビューションはバイナリパッケージをチェックしますか?

広く使用されているLinuxディストリビューションはバイナリパッケージをチェックしますか?

すべてのパッケージビルドが再現可能でない場合、ユーザーが同じバージョンとアーキテクチャの2つの異なるバイナリを実行しないことをどのように保証しますか?

答え1

バイナリパッケージがソースコードに記載されているように動作するかどうかを確認する方法はありません(これは理論的にも実際的にも解決できない問題です)。しかし、バイナリパッケージがどのように生成されるのかを知ると、それがソースコードをコンパイルした結果であることを確認できます。これには信頼が必要です。

  1. コンパイルツール(コンパイラ自体だけでなく、ビルドプロセスに関連する他のすべてのツール(例maketar):次のものが必要です。彼らが引き受けたことを正しくしたと信じてください。;
  2. コンパイルが発生したマシン(コンパイルツールが期待どおりに実行されることを信頼する必要があります)
  3. コンパイルを実行するコンピュータからパッケージを使用するコンピュータまでの配布チェーン。

主なディストリビューションは、ディストリビューション自体のコンパイラを使用して厳密に制御されたインフラストラクチャ(少数の管理者のみがこれらのシステムにアクセスできます)からバイナリパッケージを構築します(コンパイラにバグやバックドアがなく、システムの使用によって感染する人ない限り)。問題が発生します)パッケージが構築されると、同じシステム(または厳密に制御されている同じインフラストラクチャで実行されているシステム)が暗号化方式でパッケージに署名します。暗号署名は、エンドユーザーのコンピュータにインストールされているパッケージがビルドインフラストラクチャで生成されたパッケージと正確に一致することを確認します。すべての主要なパッケージ管理ツール(apt、yum、dnfなど)はパッケージの署名を確認します。

したがって、ディストリビューション自体は、(1)を検証せず(できない)、(2)を検証する代わりに(3)を検証することを保証します。

再現可能なビルドは(2)を達成するのに役立ちます。ビルドが期待どおりに機能するかどうかを独立した検証で提供し、ビルドインフラストラクチャが破損するのを防ぎます。

(1) に対してスタンドアロンコンパイル方式が提案されているが、ほとんど実用的ではない。ほとんどの言語にはスタンドアロンの実装はありません。

関連情報