Webサイトでのダウンロードには、MD5チェックサムが含まれている場合があり、ファイルの整合性を確認できます。これは、破損したファイルが問題を引き起こす前に即座に識別されるだけでなく、悪意のある変更を簡単に検出できるようにするためだと聞きました。
私はファイルの破損に関する限りロジックに従いますが、誰かが悪意のあるファイルを意図的にアップロードしたい場合、対応するMD5チェックサムを生成して投稿できます変更されたファイルと一緒にダウンロードサイトでそれを。これは、ファイルをダウンロードしている人がだまされて、改ざんされていないと考えさせます。
チェックサム自体が侵害されているかどうかを知る方法がない場合、MD5チェックサムはどのようにして意図的に変更されたファイルに対する保護を提供できますか?
これは、悪意のある変更を検出できるようにするためだと聞いたことがあります。
さて、あなたは間違って聞いた。 MD5(またはSHAなど))チェックサムは、正しいダウンロードを確認するためだけに提供されます(ダウンロードリンクの隣に、具体的には)。彼らが保証する唯一の目的は、あなたはサーバーと同じファイルを持っています。それ以上でもそれ以下でもありません。サーバーが危険にさらされている場合、あなたはSOLです。それは本当にそれと同じくらい簡単です。
Dpkgなどの一部のパッケージ管理システムで使用されるソリューションは、ハッシュに署名する:ハッシュを公開鍵署名アルゴリズムの1つへの入力として使用します。 http://www.pgpi.org/doc/pgpintro/#p12 を参照してください
署名者の公開鍵がある場合は、署名を検証できます。これにより、ハッシュが変更されていないことが証明されます。これにより、適切な公開鍵を事前に取得するという問題が残ります。ただし、誰かが鍵の配布を改ざんした場合、検証したすべてのものを改ざんしなければならず、それ以外の場合は、何か奇妙なことが起こっていることに気づくでしょう。
あなたの仮定は正しいです。ただし、例外があります。ファイルを提供するサーバーとハッシュのあるページが同じエンティティによって管理されていない場合。その場合、ソフトウェア開発者は「この場所からこれをダウンロードしますが、hash = xxxxである場合にのみ信じる」と言いたいかもしれません。 (これはCDNの例として役立つかもしれません)。これがそもそも誰かがやった理由だと思います。他の人よりも、ハッシュを表示することがどれほどクールであるかを考えただけでした。ファイルとハッシュの両方が同じ場所にあるのではなく、それがどれほど便利であるかについてさえ考えていません。
これを言って、これはそれが何であるか価値があります。他の人がすでに述べたように、セキュリティについてあまり気にしないでください。元のハッシュを完全に信頼できる場合に限り、ファイルは適切です。そうしないと、十分な動機と知識を持つ攻撃者が、ファイルとハッシュの両方を改ざんする可能性があります。これらが異なるサーバーにあり、異なるエンティティによって管理されている場合でも同様です。
チェックサムが安全に提供されることもありますが、ダウンロードは提供されません。 MD5が壊れている なので、MD5チェックサムが提供するセキュリティは、より安全なチェックサムよりも弱いですが、MD5が壊れる前に、安全に提供されたMD5(たとえば、PGP、GPG、またはゲートキーパーで署名されている、またはフェッチされたもの) HTTPS)がダウンロードのMD5と一致した場合、受信したダウンロードがサーバーで利用可能なものであったという強力な証拠でした。
私は何年もの間、安全なチェックサムの嘆かわしい欠如について書いています here 。
MITM攻撃のリスクがあるため、ユーザーは信頼できないネットワーク経由で信頼できない実行ファイルをダウンロードして実行しないでください。たとえば、 P. Ruissen、R。Vloothuisによる「自動更新システム内の不安」。
2014補遺:いいえ、「Webページに投稿されたチェックサムが悪意のある変更を検出するために使用される」ことは間違いありません。これは、IS彼らが実行できる役割です。これらは、偶発的な破損から保護するのに役立ちます。 HTTPS経由で、または検証済みの署名(または両方の方が良い)で提供されると、悪意のある破損から保護できます!HTTPS経由でチェックサムを取得し、HTTPダウンロードと何回も一致することを確認しました。
現在、バイナリは署名付きの自動的に検証されたハッシュとともに配布されることがよくありますが、これでも 完全に安全ではありません です。
上記のリンクからの抜粋:「KeRangerアプリケーションは有効なMacアプリ開発証明書で署名されていたため、Appleのゲートキーパー保護をバイパスできました。」 ...「Appleはその後、悪用された証明書を取り消し、XProtectアンチウイルス署名を更新し、Transmission Projectは悪意のあるインストーラーをWebサイトから削除しました。PaloAlto Networksは、Kerangerがシステムに影響を与えるのを防ぐために、URLフィルタリングと脅威防止も更新しました。テクニカル分析
KeRangerに感染した2つのTransmissionインストーラーは、Appleが発行した正当な証明書で署名されていました。この証明書が記載されている開発者は、IDがZ7276PX673のトルコの会社であり、Transmissionインストーラの以前のバージョンの署名に使用された開発者IDとは異なりました。コード署名情報で、これらのインストーラーは3月4日の朝に生成および署名されたことがわかりました。」
2016補遺:
@Cornstalks:Re。以下のコメント:間違い。リンク先の衝突攻撃に関するWikipediaの記事で現在言及されているように、「2007年に、MD5に対して選択されたプレフィックス衝突攻撃が見つかりました」、「攻撃者は任意に異なる2つのドキュメントを選択し、異なる計算値を追加して、全体として等しいハッシュ値を持つドキュメント。」したがって、MD5が安全に提供されており、攻撃者がそれを変更できない場合でも、攻撃者は選択プレフィックス衝突攻撃を使用できます。これは、MD5が暗号目的で安全ではないことを意味します。これが主に、US-CERTがMD5を「暗号的に破壊されており、今後の使用には不適切であると見なすべきである」と述べた理由です。
さらにいくつか:CRC32はチェックサムです。 MD5、SHAなどはチェックサム以上のものです。それらは安全なハッシュであることを意図しています。つまり、衝突攻撃に対して非常に耐性があるはずです。チェックサムとは異なり、安全に通信される安全なハッシュは、MITMがサーバーとユーザーの間にある中間者(MITM)攻撃から保護します。サーバー自体が侵害された場合の攻撃からは保護されません。それを防ぐために、人々は通常、PGP、GPG、ゲートキーパーなどのようなものに依存しています。
これは本当に問題です。ダウンロードするファイルと同じサイトにチェックサムを表示するのは安全ではありません。ファイルを変更できる人は、チェックサムも変更できます。チェックサムは完全に別のシステムで表示する必要がありますが、チェックサムがどこにあるかを安全な方法でユーザーに伝える方法があるため、これは現実的ではありません。
可能な解決策は、署名されたファイルの使用です。
(ところで:MD5はどこでも安全ではなく、もう使用されるべきではありません。)
これが、投稿されたチェックサムに「ファイルの悪意のある変更から保護することはできない」という免責事項が含まれることが多い正確な理由です。つまり、「故意に変更されたファイルに対して保護を提供することはできません」(ただし、ページがHTTPS経由で配信される場合、HTTPS自体は変更から保護されます。ファイルがHTTPS経由ではなくチェックサム経由で配信される場合)つまり、それは一部には役立つかもしれませんが、一般的なケースではありません)。 Webページに投稿されたチェックサムが悪意のある変更を検出するために使用されていると言った人は誰でも、これは彼らが実行できる役割ではないため、間違っていました。彼らが行うのは偶発的破損、およびレイジーな悪意のある破損から保護するのを助けることだけです(誰かがチェックサムを与えるページを傍受することを気にしない場合)。
意図的な変更から保護する場合は、チェックサムをいじらないようにするか、他のユーザーが有効なチェックサムを生成できないようにする必要があります。前者は、直接または類似の方法でそれを配布することを伴います(したがって、チェックサム自体が信頼されます)。後者はデジタル署名アルゴリズムになります(ダウンローダーに公開鍵を安全に取得する必要があります。TLSでは、これは最終的に認証局を直接信頼し、他の全員を検証することで行われます。信頼のWebを介して行うこともできます。 、しかし重要なのは、ある時点で何かを安全に転送する必要があり、サイトに何かを投稿するだけでは十分ではないことです)。
チェックサム自体が侵害されているかどうかを知る方法がない場合、MD5チェックサムはどのようにして意図的に変更されたファイルに対する保護を提供できますか?
あなたは完全に正しいです。その場合の目標は、「もし」が間違っていることです。ファイルの安全な暗号化ハッシュが侵害されていないことがわかっている場合は、ファイルが侵害されていないこともわかっています。
たとえば、ファイルのハッシュをWebサイトに投稿し、サードパーティのミラーサーバー上のファイルのコピーにリンクする場合—昔ながらの無料ソフトウェア配布で一般的な方法—ユーザーは、いくつかのタイプから保護できます。攻撃の。ミラーサーバーが悪意のある、または危険にさらされているが、Webサイトに問題がない場合、ミラーはファイルを破壊できません。
ウェブサイトがHTTPSを使用している場合、または gpg
でハッシュに署名している場合、ファイルは(ほとんど)悪意のあるWi-Fiホットスポット、不正なTor出口ノードなどのネットワーク攻撃者から保護されます。またはNSA。
ファイルを変更せずにMD5チェックサムを変更することはできません。ファイルをダウンロードしてからハッシュをダウンロードすると、ファイルの計算が指定されたものと一致しません。ハッシュまたはファイルが間違っているか不完全です。
ファイルを作成者、マシンなどの外部の何かに「結び付ける」場合は、証明書でPKIタイプのプロセスを使用して、ファイルをsignedにする必要があります。ファイルの作成者などは、自分の秘密鍵でファイルに署名でき、公開鍵を使用して署名を検証できます。公開鍵は、公開鍵であり、それ自体が作成者と作成者の両方が信頼するCAによって署名され、できれば以下からダウンロードできます。複数の場所。
ファイルを変更すると署名が無効になるため、これを使用してファイルの整合性を確認することもできます。
ハッシュは、ファイルのバージョン(「ダウンロード」)がサーバーのバージョンと異なるかどうかを示します。ファイルの信頼性は保証されません。
デジタル署名(非対称暗号化+ハッシュ関数)を使用して、対応する秘密キーを持っていないユーザーがファイルを変更していないことを確認できます。
ファイルの作成者はファイルをハッシュし、(秘密の)秘密鍵を使用してハッシュを暗号化します。このようにして、対応する(秘密でない)公開鍵を持つ誰でも、ハッシュがファイルと一致することを確認できますが、ファイルの内容は変更できますが、対応するハッシュをファイルと一致するものに置き換えることはできません(ハッシュが公開鍵)-秘密鍵を総当たりしたり、何らかの方法でそれにアクセスしたりしない限り。
「A.Hacker」氏が単にファイルを変更してから、独自の秘密鍵で署名するのを阻止するにはどうすればよいですか?
ファイルを検証するには、そのハッシュを、関連するデジタル署名を復号化して取得したハッシュと比較する必要があります。ファイルが「I.M.Awesome」のものであると思われる場合は、彼のキーを使用してハッシュを復号化します。ハッシュはA.Hackerのキーを使用して暗号化されているため、ファイルと一致しません。
したがって、デジタル署名により、偶発的な変更と悪意のある変更の両方を検出できます。
しかし、そもそもどうやってI.M. Awesomeの公開鍵を取得するのでしょうか。彼/彼女のキーを取得したときに、それが実際にA.Hackerのキーが侵害されたサーバーまたは中間者攻撃によって提供されていなかったことをどのように確認できますか?これが証明書チェーンと信頼されたルート証明書の出番です。どちらも問題に対する完全に安全な[1]ソリューションではありません。どちらもおそらくウィキペディアやSOに関する他の質問で十分に説明されるはずです。
[1]検査の結果、仕事用PCのMicrosoft OSに同梱されていたルート証明書には、米国政府の証明書が含まれています。対応する秘密鍵へのアクセス権を持つ誰でもcough NSA coughなので、「南京錠はありますか?アドレスバーに表示」チェック。実際に南京錠をクリックして、接続を「保護」するためにwho'sキーペアが使用されているのを気にする人は何人いますか?
チェックサムが危険にさらされていないかどうかを知る方法がない場合、MD5チェックサムはどのようにして意図的に変更されたファイルに対する保護を提供できますか?
これは本当に良い質問です。一般に、MD5操作の評価は適切です。しかし、ダウンロードでのMD5チェックサムの価値はせいぜい表面的なものだと思います。おそらく、ファイルをダウンロードした後、Webサイトに対してMD5を確認できますが、並べてMD5ストレージを「領収書」または見た目は良いですが信頼性の低いものと見なす傾向があります。そのため、一般に、ダウンロードしたファイルのMD5チェックサムを気にすることはありませんが、アドホックサーバーベースのMD5プロセスを作成した経験から話すことができます。
基本的に、クライアントがMD5チェックサムのファイルシステムをスイープしたいときに行ったのは、ファイルシステムをファイル名、パス、MD5、およびその他のさまざまなファイル情報を構造化データ形式にマップするCSVファイルに生成して、それを取り込んだことです。比較と保存のためにデータベースに入れます。
そのため、例を使用すると、MD5チェックサムは独自のテキストファイル内のファイルの隣にある可能性がありますが、権限レコードMD5チェックサムは非接続データベースシステムに保存されます。したがって、誰かがファイル共有にハッキングしてデータを操作した場合、その侵入者はMD5権限レコードまたは接続された履歴にアクセスできません。
最近、私は ACE監査マネージャー と呼ばれるライブラリアーカイブソフトウェアの素敵な部分を発見しました。これは基本的にJavaファイルシステムに座って変更を監視するように設計されたアプリケーションです。 MD5が変更されました。また、私のアドホックプロセスと同様の哲学(データベースにチェックサムを保存する)で動作しますが、さらに一歩進んで、MD5チェックサムのMD5チェックサムを作成します ハッシュツリーとして知られています)またはマークルツリー 。
たとえば、コレクションに5つのファイルがあるとします。 ACE Audit Managerのこれらの5つのファイルは、各ファイルの5つのMD5チェックサムから生成されたハッシュである別のチェックサム(「親」と呼びましょう)を取得します。したがって、誰かが1つのファイルのみを改ざんした場合、ファイルのハッシュが変更され、「親」コレクション全体のハッシュも変更されます。
一般に、MD5チェックサムと関連する整合性ハッシュを確認する必要がある方法は、MD5ハッシュ自体の非直接ストレージに接続されていない場合、破損している可能性があることです。そして、長期的なデータ整合性ツールとしてのそれらの価値は、新しい荷物の「無料」になる安価なロックと同等です。荷物のロックに真剣に取り組んでいる場合は、ペーパークリップでは5秒で開けないロックが表示されます。
多くの場合、(a)信頼できない「近くの」コンテンツ配信ネットワーク(CDN)、ミラーサイト、トレントピアなどから大きなファイルをダウンロードし、対応する短いチェックサムファイル(多くの場合、SHA256、古いソフトウェア)をダウンロードする方がはるかに高速です。いくつかの信頼できるソースからのMD5)をよく使用します。 (b)信頼できるソースから直接大きなファイル全体をダウンロードするのは耐え難いほど遅いと感じています。
多くの場合、その人はすべてが検証されていることに気づきます-ソース(信頼されているものと信頼されていないもの)は同じチェックサムに同意し、shasum(またはmd5sum)をそれらの短いチェックサムファイルのいずれかと実行します(それらがすべて同じである場合、どちらでもかまいません) )は、大きなファイルに一致するチェックサムがあることを示します。
マロリーがダウンロードサイトにある大きなファイルを悪意を持って変更した場合、マロリーがsameサイトをダウンロードして、悪意のあるチェックサムファイルでshasum(またはmd5sum)が実行されるようにして、大きなファイルを検証するように見えるようにします。ただし、そのチェックサムファイルは、ダウンローダーが検証に使用する必要がある(唯一の)ファイルではありません。
ダウンローダーがその悪意のあるチェックサムファイルと信頼できるソースからダウンロードされたチェックサムファイルを比較するとき、元のチェックサムが1回でも抜けると、ダウンローダーはすべてがしないことを確認します検証し、何かが間違っていることを知るでしょう。
Cpastが以前に述べたように、信頼できる接続を介して優れた暗号チェックサムが送信されると、セキュリティを提供できます(信頼できる接続から派生)。
Supercatが以前に言ったように、1つのサイトのチェックサムファイルは、同じサイトから大きなファイルをダウンロードする人々を助けず、チェックサムファイルをダウンロードするのと同じように、他のサイトからファイルをダウンロードしたい人々を助けます。
「セキュリティの観点から、MD5などの暗号化ハッシュは、安全でないミラーから取得したデータの認証を可能にします。MD5ハッシュは、署名するか、信頼する組織の安全なソース(HTTPSページ)から取得する必要があります。」 - https://help.ubuntu.com/community/HowToMD5SUM
暗号化チェックサムは、実用的な公開鍵署名の重要な部分です(GnuPGおよびその他のOpenPGP準拠のソフトウェアで実装されています)。公開鍵署名には、チェックサムだけに比べていくつかの利点があります。
この[MD5チェックサム]は、悪意のある変更を簡単に検出できるようにする[...]ためのものだと聞きました。
さて、あなたは聞いていません完全に間違っています。 デジタル署名 は、実際には悪意のある変更を検出するために使用されるものです。いくつかの重要な理由により、 ハッシュ はデジタル署名の基本的な部分です。つまり、ハッシュのみが実際に署名されますであり、元のファイル全体ではありません。
そうは言っても、ソースがハッシュの署名とそれを検証する信頼できる方法を提供しない場合、あなたは正しい、[故意]変更されたファイルに対する保護は提供されませんが、ハッシュはチェックサムとして依然として有用です偶発的破損に対して。
以下に 実世界の例 を示します。次の文章は、この件に関して特に重要です。
古いアーカイブされたCDリリースでは、MD5チェックサムのみが生成されました[...]新しいリリースでは、新しい、暗号学的に強力なチェックサムアルゴリズム(SHA1、SHA256、SHA512)が使用されます