web-dev-qa-db-ja.com

オンラインでダウンロードしたファイル/ファームウェアをチェックサムに対して検証するのはなぜですか?

オンラインでダウンロードするファイル/ファームウェアがあり、ファイルをチェックするためのチェックサムを提供する場合、ダウンロードしたファイルのチェックサムがオンラインで投稿されたチェックサムと一致することを常に確認します。

しかし、悪意のあるサードパーティがFTPアクセスを持ち、ファイル/ファームウェアを悪意のあるビルドと交換できる場合、HTML/phpなどのWebページにアクセスするための技術的知識とアクセス権が確実にあるはずです。チェックサムをファイルに保存して更新し、悪意のあるビルドに一致させることで、チェックサムの価値をなくします。

ここでポイントを逃したことがありますか?

5
sam

あなたが逃したすべてはハッシュがあなたを保護することになっているところです。攻撃者がサーバー自体にアクセスできる場合、攻撃者はすべてを変更できるというのは正しいことです。

ハッシュがあなたを助けることになっているところは、中間者攻撃に反対です。例えば:

  1. ダウンロードファイル
  2. プレーンテキストmd5またはsha1のWebページを読む
  3. ダウンロードしたファイルをハッシュ
  4. 値を比較する

誰かが真ん中に座っていた場合、理論的には真ん中に座って両方を変更することもできますが、これに対抗するために他の技術的な解決策があります(SSL/TLS(まだMITMに対して脆弱です)およびデジタル署名)。

編集:私が行ってきた一部の顧客修復では、ダウンロードハッシュを使用してMITMを試行および軽減する方法は、ビットをダウンロードし、Webサイトのハッシュが複数の接続で同じように表示されることを確認することです/ computers。これにより、攻撃者が調査者のすべての接続手段を所有する可能性が大幅に減少します。ソースサイトからのハッシュが、さまざまな接続/コンピューターで同じである場合、比較的安全であると見なされます。

5
thepip3r

チェックサムは、ファイル転送中に破損を検出するために提供され、中間者攻撃を検出するためではありません。

6
Teun Vink

言及する価値のあるもう1つの点は、コンテンツの作成者/メンテナのデジタル署名で署名された個別のファイルでチェックサムを提供できることです。

この場合、攻撃者がコンテンツが存在するサーバーを完全に制御し、ペイロードとチェックサムを置き換えても、開発者の署名でチェックサムファイルに署名することはできません(開発者の秘密鍵も取得しない限り)。 。

その後、署名検証プロセスが失敗するため、エンドユーザーは何かが間違っていることを検出できます。

ダウンロードの手順には、次の手順が含まれている必要があります。

  1. ペイロードをダウンロードします。
  2. チェックサムファイルをダウンロードします。
  3. チェックサムファイルの署名を確認します。
  4. ペイロードのチェックサムをチェックサムファイルと照合します。

これにより、ユーザーは、ステップ3または4が失敗した場合にペイロードを破棄することを決定できます。

これにより、許可されていない変更を恐れることなく、コンテンツの元の作成者によって制御されていないサードパーティのインフラストラクチャを介してコンテンツを配布できます。たとえば、多くのLinuxディストリビューションのインストールファイルは、大学や愛好家が所有するパブリックミラーでホストされています。

例: Gentoo Linuxミラーリスト および 公開鍵のリスト により、ユーザーはダウンロードを確認できます。

0
VL-80