Ubuntuのバイナリがソースコードからのものであることを確認するにはどうすればよいですか?


25

99%のユーザーと同様に、既製のバイナリからUbuntuをインストールします。

これらのバイナリが実際にUbuntuの元のソースコードからのものであることを確認するにはどうすればよいですか?

NSA /誰かがUbuntuまたはLinode(私のVPSプロバイダー)と協力してバイナリを混乱させていないことを確認するのは良いことです。バイナリを検証できた場合、最初にそれらを呼び出すことは簡単であるため、最初にこれを試みることはほとんどありません。


を使用してソースコードを確認するapt-get sourceか、それを使用して独自のコードをコンパイルできます。この質問を参照してください:askubuntu.com/questions/28372/…–
Wilf

4
おそらく有用:パッケージにインストールされたファイルがオリジナルと一致することを確認する方法は?(Debian、しかしUbuntuに適用できるほど十分に近いはずです)
CVn 14

MichaelKjörling私は...その質問の私たちのバージョンを探していた@
Braiam

1
@Braiamこの特定のケースでは、Debian / Ubuntuは大きな違いをもたらさないと思います。何の違いを確認することは疑問の目的です。上記のリンクは、主にインストール後のある時点で破損したファイルを検出することを目的としていますが、これは悪意を持って置換または変更されたファイル、またはソースコードと一致しないバイナリファイルを検出することを目的としているようです。さまざまな問題。これが、リンクに「おそらく役立つ」タグを付けた理由です。
CVn 14

3
興味深いことに、Gentooでさえこの問題を完全に回避できていると思います。そこでは、ダウンロードしたソースコードのアーカイブを信頼する必要があります。必要なすべての暗号署名を使用します。署名されたものが本物であり、それが意図されているものであると信頼できない場合、実際に行うことはほとんどありません。
CVn 14

回答:


36

ソースコードをダウンロードして、自分でコンパイルできます。しかし、待ってください。CanonicalがNSAと共同作業を行った場合、キーロガーやリモートでアクティブにできるものを許可するコードを入力した可能性があるため、最初にそのソースコードを確認する必要があります。

そう...

  1. ソースコードをダウンロードした後、
  2. すべてのコードを確認する必要があります
  3. コンパイルします!

しかし、待ってください- コンパイラを信頼できますか?


15
「コンパイラを信頼できますか?」それは、接線に出て、「Cコンパイラをゼロからコンパイルする方法」の質問を読んでから、Unix / Linuxをゼロからコンパイルする(および関連する回答)ときです。
CVn 14

17
しかし、ハードウェアを信頼できますか?おそらく、あなたはまた一からコンピュータを構築し、必要があるあなたはいくつかの問題に遭遇しているの...
トーマス

また、VMを実行しているハイパーバイザーを信頼できますか?
フェルナンドコレイア14

1
異なる著者のいくつかの同様のコンパイラでソースをコンパイルし、出力の違いをチェックするのに使用できるとは思いません。しかし、著者がエイリアスの下で実際に同じエンティティではないことをどのように知っていますか?あるいは、これらすべてのコンパイラに共通の破損した祖先がある場合はどうでしょうか?とにかくハードウェアの信頼の問題を解決するものはありません。
キーン14

6
しかし、待ってください-askubuntuがフィルターにかけられたり、NSAによって完全に制御されたりしていない可能性があります。
TheZ 14

9

「Ubuntuがそう言うから」を受け入れたくない場合は、受け入れられません。


2
チェックサムを比較することで、特定のシステムのバイナリがUbuntuのオリジナルのバイナリと一致するかどうかを確認できることを追加します。もちろん、どのような場合でも、適切なルートキットがシステム内から簡単に検出されることはありません。
ペトロス14

2
「元のUbuntuバイナリ」が改ざんされていないことを信頼している場合にのみ機能します。言い換えれば、Ubuntuがそう言っているので、それらが良いと認めるなら。;)
fkraiem 14

5

Ubuntuは、自分のマシンでパッケージをコンパイルする便利な手段を提供します。ただし、ダウンロードしたバイナリパッケージの実行可能ファイルがそのソースコードから取得されたことを確認する方法はありません。Ubuntuが使用する署名プロセスは、サードパーティがパッケージを改ざんするリスクを大幅に減らしますが、ダウンロード可能なソースコードに反映されないコンパイルの前に有害なコードが追加されていないことを信頼する必要があります。

理由は、コンパイルされたパッケージにあるものとまったく同じバイナリを入手するのが非常に難しいためです。これらは正確なコンパイラのバージョン、そのオプションに依存し、おそらくバイナリにコンパイルされたパスまたは環境変数もあります。そのため、コンパイル時に正確に同じバイナリを取得できなくなり、ダウンロードしたバイナリが「検証」されます。

実際、正確にこの問題の周りに小さな研究コミュニティがあります-コンパイルを再現可能にする方法。

とはいえ、ダウンロードしたバイナリと自己コンパイルされたバイナリを手動で比較すると、追加/変更されたコードを検出できるため、バイナリとソースコードを提供する誰かがバイナリ内の何かを隠すのは危険です。

しかし、すでに述べたように、コンパイラを信頼するという問題もあります...


4

2つの異なるマシンでまったく同じバイナリを作成するのは難しい問題です。TORプロジェクトは、ビルドの通常の一部としてこれを行います。彼らがそれを行う方法 の説明があります。DebianFedoraには、このディストリビューションでこれを可能にするプロジェクトがあるようですが、まだ初期段階です。これは、Ubuntuの中で行われるすべての作業があるように見えるしていません

Ubuntuバイナリパッケージを再現するには、作成された環境を可能な限り再現する必要があります。それから始めるには、まず、このパッケージがどこでどのようにコンパイルされているかを調べる必要があります。その情報は簡単に見つけられるようには見えません。


具体的な内容の詳細
ヨーゼフ14

別の投稿と混同して私を無視してください:)
ティム14

0

UbuntuのMD5で確認します。ファイルから取得したMD5がUbuntuによって公開されたMD5と一致する場合、その間のバイナリを改ざんした人はいません。


これはOPの質問ではありません。彼は、Ubuntuによって配布されているソースコードがUbuntuによって配布されているバイナリと同じではないことを心配しています。言い換えれば、彼らは「これがソースです」と言いますが、実際にバイナリを構築しているソースには、追加のNSA導入コードがあります。彼は、ビルド後にバイナリが改ざんされていることを心配していません。
ジョンクリソストム14

OPは、「これらのバイナリがUbuntuの元のソースコードから実際にあることをどのように確認できますか?」答えはその質問に対するものです。もう1つはばかげています。Linuxカーネルが誰にも簡単に改ざんされていないかどうか(NSAまたは誰?)を知ることができます。それ以外の私の答えは、このコメントの冒頭でコピーした質問に対するものです。
YoMismo

引用した質問に答えていません。MD5を使用すると、彼は自分のコンピューターのバイナリーがサーバーのバイナリーと一致することを確認できます。彼らは、彼がダウンロードしたバイナリがUbuntuが提供するソースからコンパイルされたことを彼に確認させません。今、私はあなた(そして他の人)が述べた理由のために彼の質問がばかげていることに同意します。しかし、それは彼の質問でした。
ジョンクリソストム

0

それは大変な仕事です。ここでの信頼はこの複雑な仕事よりも優れていると思います。しかし、あなたは信頼できますか?

オープンソースソフトウェアは、ユーザーがコードを変更するのに多くの自由を与えるため、誰も信頼できません。

この目的のためのシナリオを作成してUbuntu == source codeみましょう、私はそれを確認したいのですが、待ってくださいパッケージをソースと比較しようとしないのはなぜですか?

  1. sourceからUbuntu用のバイナリパッケージをビルドします。
  2. 自己構築のバイナリパッケージとディストリビューションで公開されているパッケージを比較しました。
  3. apt-get -b sourceを使用してsourceをダウンロードします。

しかし、私にとっては、タイムスタンプ、環境が異なるため、マイナーな異なる結果が得られますが、ソースコードからではないことを証明しています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.