現在翻訳中です)フリーソフトウェアでは誰もがソースコードを検査し、故意に埋め込まれた欠陥がないか確認できます。Debianではバイナリパッケージをユーザーに提供しています。「決定論的な」「再現可能な」ビルドとは、ビルドプロセスがソースコードからバイト単位で必ず同一のバイナリを再生成できるようにすることで、誰もがこの欠陥がないことを確認できるようにするものです。presentationsPublicity関連プロジェクト将来の展望カーネルや関連パッケージへの影響についてなぜビルド再現性が求められるのか?あるバイナリが特定のソースから改変なく生成されていることを客観的に検証するためまず、ビルド再現性が必須になれば、攻撃者から見てアップロード権限を持つ開発者のシステムを攻撃する動機が低まります。攻撃に成功しても、アップロードされているソースコードに対応しないバイナリをアップロードすることは不可能だからです。攻撃を成功させるにはアップロード済ソースのビルド再現性をチェックするすべてのマシンを乗っ取れなくてはなりません。このことは更に動機を失わせるでしょう。最後に、もし十分な数のサーバーが地理・運営元が分散して稼働するならば、このビルド再現性の確認を通して乗っ取られたシステムを検知することもできるでしょう。訳注:ここの意味がよくわかりません)。デバッグパッケージが作られていないパッケージに対するデバッグシンボルを独立して再生成できます。パッケージがソースからビルドできることの保証にもなります。ビルド再現性のあるパッケージのみをアーカイブにアップロード許可する、としましょう。すると、メンテナは.debのアップロードではなく(手元でのビルドが成功したら).changesのみを更新します。するとbuilddが(独立して)ソースからビルドするという訳です。ハッシュが一致すればアップロードが行われます。Debianミラーやsnapshots.d.oなどでの.debファイル単位の重複除去にも役立ちます。バージョン間でソースパッケージに変更がなければ同じファイルしか生成されないからです。profilesを使うパッケージはプロファイルによらず同じ結果を生まなくてはなりません(訳注:crossビルドプロファイルはそのアーキテクチャのネイティブビルドと同じ結果でなくてはならない、といったこと)。ビルド再現性はその検証法として利用できます。訳注:ここの意味は要再検討ビルドプロセスのQAや分析目的でシステムコールやファイル・ネットワークアクセスのトレースを取る上でも有用です。ビルド再現性があればそれらがビルド結果に影響を及ぼしていないことが確認できるからです。コンパイラ動作の完全性チェックに多様構成での二段ビルド法が使えるようになります。gccをgccやclang(やその他のDebianにあるgccをビルド可能なあらゆるコンパイラ)でビルドし、そのgccでgcc自身を再コンパイルします。この二段目で生成されたgccパッケージも最初の結果と同一ならば完全と言えます。Thompson問題(訳注:始祖となるバイナリに仕掛けが入っている場合、ソース監査で発見できない方法で脆弱性を仕込め続けるという問題)が仕掛けられていないことを検証できます。クロスコンパイルする形でこれを行えば、ハードウェアレベルで同種の仕掛けがないことも検証できます。プロプリエタリなバイナリブロブが(訳注:意図通りの)無改変のフリーソフトウェアに組み込まれていることを検証できます。Extensionsは無改変のFirefoxが動作に必須となっています。builds(ビルドの再現方法)これを行う上でのポイントは2つあります:初回ビルド時にビルド環境の記録が取られている必要があること、そして、その環境を以後のビルド時に再現させることです。environment(ビルド環境の再現方法)これにはsrebuildというsbuildのラッパーが用意されています。これは.buildinfoに記録されているパッケージのバージョンをすべて含むsnapshot.debian.org上の日時を特定し、それら正しいバージョン構成の元でビルドするものです。以下が容易となり、バイナリパッケージへの信頼性が向上すると見込まれます:どこに設置するか、法的にどの管轄下に入るかといった点でbuilddサーバの多様性が向上します。パッケージを開発者のサーバも含む、複数箇所でビルドできるようになります。ユーザーランドから完全に隠れることができるカーネルは各種rootkitの究極の攻撃対象だからですamd64用カーネルを例にします。ビルドシステムに移植性とビルド再現性があるならば、linux-amd64とkfreebsd-amd64のいずれの環境でビルドしても同じイメージとなりますカーネルバージョンが異なる環境を使うこともできます。wheezyホスト内のjessieビルド用のchrootなど多様なビルド環境を担保すると同時に複数環境に影響する攻撃への耐性が向上します。カーネル脆弱性や大規模なrootkitへの感染を起こすためには、複数(OS、バージョン)のカーネルをまたいで攻撃できなくてはならなくなるためです。