web-dev-qa-db-ja.com

Webサイトがダウンロード可能なファイルのチェックサムを提供しないのはなぜですか?

ユーザーがダウンロードしたサイドファイルのファイルの整合性を保証するために署名されたSHA-2ハッシュをWebサイトが提供することはめったになく、ファイルが操作されていないか、または発生したインシデントなどの悪意のあるバージョンに完全に置き換えられていないことを示しています- CCleaner昨年 。最近提供されたのはJetbrains製品とKeePassだけで、ページの下に隠れているのを見つけるにはかなり遠くまでスクロールする必要がありました。

編集:認証局のように、会社が自社製品に提供するハッシュに署名するハッシュ局がないので、サーバーの乗っ取りの問題劇的に軽減されますか?

8
Azxdreuwa

彼らはします!多くのWindows実行可能ファイルには、Microsoftが信頼するCAによって署名された 組み込みの証明書 があります。オペレーティングシステムは、ソフトウェアを実行する前にこの証明書をチェックします。警告を表示するだけでなく、 署名されていないソフトウェアが実行されないようにする に追加の設定を行うことができます。さらに、Microsoftが信頼する発行元が署名した実行可能ファイルだけでなく、Microsoftが署名した実行可能ファイルのみの実行を許可する、さらに制限を作成することもできます。

Linuxおよび関連するオペレーティングシステムはまだこれをサポートしていません(PE32とは異なり、ELFは埋め込み証明書をサポートしていません)。しかし、ほとんどのソフトウェアインストールは通常ソフトウェアを検証するネイティブパッケージマネージャーを使用して行われるため、そうするためのプッシュはほとんどありません。この場合、信頼できるCAからの証明書はありません。むしろ、署名はソフトウェアリポジトリのメンテナによって提供され、インストール時にパッケージマネージャによって検証されます。

必ずしもパッケージマネージャーによって提供されず、署名を埋め込むことができないセキュリティ上重要なダウンロードの場合、署名付きハッシュがしばしば提供されます。これは、特に起動可能なISOイメージの場合ですが、署名されていないハッシュのみを提供するものもあります。残念ながら、ウェブサイトの管理者が完全性の重要性を理解しておらず、侵害のリスクを過小評価しているため、署名されていない安全でない接続を介して提供される実行可能ファイルの例はまだ数多くあります。

3
forest

あなたはCCleanerについて言及しているので、リンクすることは重要です デジタル署名によってCCleanerの侵害が防止されましたか? 簡単な答えは、この特定の侵害を防止しなかったということです

これは、ハッシュの提供に関する最初の問題を私たちに与えます:誰がビルドに署名することを信頼し、誰がチェックすることを信頼するのですか?署名は単に侵害される可能性のある公式のビルドサーバーを表しますか?それとも、一部の事前に信頼された当事者による実際のセキュリティ監査を表していますか?

ただし、そのようなハッシュが防御する他の攻撃もあります。たとえば、改ざんされたビルドを提供する侵害されたミラーまたは不正なミラーです。この場合、プライマリプロジェクトページでハッシュを公開するだけで十分です。ハッシュは、ミラーによって提供されるダウンロードと照合して検証できます。

ただし、これは、暗号化の難しい問題の1つである2番目の問題につながります:key distribution(または、この場合は、署名の配布) 。

署名されていないハッシュの場合、そのハッシュを表示するページが改ざんされていないことを信頼しているだけです。一見すると署名付きハッシュの方が良いように見えますが、どこかから公開鍵をダウンロードする必要があるため、その鍵のソースを信頼しています。攻撃者がユーザーを偽のダウンロードページに誘導できる場合、選択した公開キーへのリンクを追加することができ、ユーザーは侵害されたダウンロードのハッシュを検証することにより、誤った安心感を得ることができます。

別の方法は、複数の異なるアプリケーションに対して信頼できるいくつかの中央機関を持つことです。これは、Windowsドライバー署名、Linuxパッケージマネージャー、および電話アプリストアの背後にある原則です(HTTPS Webサイトに使用される証明書の背後にもあります)。今、あなたは新たな問題を抱えています:whyこれらの中央当局を信頼していますか?ダウンロードしているファイルのソースコードとビルドプロセスを直接監査していますか?それとも委任実際にソフトウェアを作成している当事者からの何らかの保証に基づいて、副署名付き証明書による信頼ですか?さらに、ルート公開鍵を何らかの方法で取得する必要があります。おそらく、OS /アプリストア/パッケージマネージャーをインストールしたときに、信頼できるインストールメディアに含まれていました。

結局のところ、ハッシュを公開することは、次のような大規模なプロジェクトで最も役立ちます。

  • 同じユーザーが、同じ公開鍵で複数のバージョンまたは異なるアプリケーションをダウンロードして検証する可能性があります。
  • また、公開鍵のソースは、ダウンロードを提供するサーバーとは異なる可能性があります(別のサーバー、または何らかの物理メディア)。

しかし、それでも、CCleanerが実証したように、すべてのエクスプロイトを修正できるわけではありません。ユーザーに誤った安心感を与えるのは危険です。

3
IMSoP

ほとんどのユーザーはとにかくハッシュをチェックしないからです。

署名の検証を自動化して強制的に実行する一般的なダウンロードプロトコルを使用して、実際にマルウェアの蔓延を防ぐことができます。

それでも完璧ではありません。ハッキングされたサーバーが別のハッシュを投稿する可能性もあります。 Windowsドライバーと同様に、ソフトウェア自体に署名することは、おそらく影響を与える可能性が高くなります。どちらも行うことができます。

2
ZOMVID-20

linuxに関連するサイトに、より多くのハッシュ(通常はmd5)が表示されるのを見ています。主に、isoが指定されている場合。

破損したISOからOSをインストールしたくないですか?

Windows 10 ISOのハッシュもダウンロードページにあります。

ハッシュは、ダウンロードされたファイルの完全性をチェックするためにのみここで使用されます。

ファイルが改ざんされていないことを確認する必要がある場合は、深刻なサイトで、GPGキーで確認する必要があるGPGキー署名を提供してください。たとえば、 tails.boum.org はそれを行います。

2
solsTiCe