web-dev-qa-db-ja.com

ファイルにチェックされたmd5ハッシュがあると人々が言うとき、それは正確にはどういう意味ですか?

わかりました、このサイトを読んでいました: http://www.zdnet.com/blog/bott/stay-safe-online-5-secrets-every-pc-and-mac-owner-should-know/ 3542?pg = 4&tag = mantle_skin; content

そして、私はいつも尋ねたかったが決してしなかった何かを考えました。

ファイルにチェックされたmd5ハッシュがあると人々が言うとき、それは正確にはどういう意味ですか?彼らはプログラムをビットに真剣に分解し、ビットをハッシュしましたか?

7
Pacerier

人々が、ファイルのMD5ハッシュが実際にファイルのホストがハッシュをすべきであると言っているのと同じであることを確認したと言ったとき。それらが同じである場合、その間にファイルを台無しにしたものは何もないことがわかります。

これが実際にどのように行われるかは、ダウンロードしたファイルに対して md5sum(wikipedia) のようなツールを実行し、ホストがmd5の合計をどうするべきかとホストが比較することです。通常、ファイルプロバイダーは、自分のページでmd5サムを共有し、ダウンロードした場所から簡単にアクセスできます。

これにより、ネットワークを介してファイルが改ざんされていないこと、およびファイルが格納されているリポジトリが改ざんされていないことがわかっているため、セキュリティが向上します。ただし、md5を表示しているWebサイトが危険にさらされている場合、合計は役に立ちません。

6
Chris Dale

Md5ハッシュの考え方は、それがファイル全体のハッシュであるということです-ビットが変更された場合、それは異なります。それがすべてのファイルである-一連のビットであるため、「ビットに分解する」という意味がわかりません。

ファイルをダウンロードすると、自分のマシンでそのファイルのmd5ハッシュを取得できます。これをオンラインで提供されているmd5と比較すると、正しい未変更のファイルがあることを確信できます。

ファイルのハッシュの値についてこの質問を見てください。

9
Rory Alsop

ファイルにチェックされたmd5ハッシュがあると人々が言うとき、それは正確にはどういう意味ですか?

明確にするために、リンクからの記事はデジタル署名について言及しており、MD5値を持つ図を示すセクションがあります。

デジタル署名とMD5ハッシュは異なります。

MD5は、暗号化ハッシュ値を生成するアルゴリズムです。 MD5は、他の暗号化ハッシュ関数と同様に、ビットのシーケンスを入力として受け取り、入力のサイズに関係なく固定サイズの出力を生成します。ビットのシーケンスはファイルにすることができます。簡単にするために、今後はビットのシーケンスの代わりにファイルを使用します。

他の人が持っているのと同じファイルがあるかどうかを確認したい場合は、ファイルのMD5ハッシュを生成し、他の人が作成したMD5ハッシュと比較できます。

警告次の例は安全ではなく、説明のためだけです!

アリスはボブにファイルを送信します。

  • アリスはfile_aのMD5ハッシュhash_aliceを計算します
  • ボブはアリスに彼にfile_aを送るように頼みます
  • アリスはfile_aをボブに送る
  • ボブはfile_aを受け取ります
  • Bobはfile_aのMD5ハッシュhash_bobを計算します

Hash_bobがhash_aliceと同じ場合、ボブが受信するファイルは、アリスが送信したファイルと同じです。ボブはMD5ハッシュをチェックして、正しいファイルを受け取ったことを確認しました。

次に、マロリーが攻撃者であり、ボブにウイルスを与えたいと仮定します。彼女は交換を監視し、ファイルを傍受することができます。

  • アリスはfile_aのMD5ハッシュhash_aliceを計算します
  • ボブはアリスに彼にfile_aを送るように頼みます
  • アリスはfile_aをボブに送る
  • マロリーがアリスのfile_aを遮断
  • マロリーはウイルスファイルfile_vをコピーし、名前をfile_aに変更します。
  • マロリーは彼女のウイルスファイルfile_aをボブに送信します
  • ボブはfile_aを受け取ります
  • Bobはfile_aのMD5ハッシュhash_bobを計算します

これで、hash_bobはhash_aliceと同じにならず、ボブは誰かが間違ったファイルを送信したことに気付くはずです。

プログラムに複数のファイルがある場合、そのプログラムの単一のmd5ハッシュをどのように計算しますか?

プログラム内の各ファイルについて、ハッシュ値を計算します。

私が持っている場合:main.exe libabc.dll release.txtおよびiconabc.gif

Hash_main.exe、hash_libabc.dll、hash_release.txt、hash_iconabc.gifを計算します

各ハッシュ値は一意である必要があります。

中間セクション:

最初の例の問題は、Bobがhash_aliceを取得する方法を示していないため、hash_bobと比較できることです。 hash_aliceがfile_aと同じ方法で送信された場合、攻撃者は2番目の例でMalloryが行ったのと同様にそれを変更します。

この問題には2つの基本的な解決策があります。安全な(または帯域外チャネル)を使用してハッシュを送信するか、信頼できる証明書(ここでは@nealmcbクレジット)によってハッシュに署名してもらいます。帯域外とは、別の物理的な伝送媒体を使用することを意味します。帯域外の1つの例は、ハッシュ値を出力して郵便で送信することです。安全なチャネルとは、仮想プライベートネットワーク(VPN)やIPSecなどを使用することを意味します。

署名付きハッシュの問題は、ボブが署名を検証するためにアリスの証明書を必要とすることです。アリスがファイルを送信するのと同じ方法で証明書をボブに送信すると、ファイルと同じように証明書が傍受される可能性があります(ここでは@nealmcbクレジット)。

伝送に関する考察:

2つのソリューションについて1分間考えた場合、疑問が生じるかもしれません。

ハッシュを送信するための安全なチャネルがある場合、なぜ同じチャネルを使用してファイルを送信しないのですか?

通常のインターネットを使用してファイルを送信し、安全なチャネルを使用してハッシュを送信する理由:

  • セキュリティで保護されたチャネルは非常に遅く(つまり、ダイヤルアップ)、ハッシュは短いため、すばやく転送されますが、ファイルが大きく、時間がかかりすぎます。
  • 安全なチャネルは高価です。使用された時間または転送されたバイトに対して課金されます。
  • チャネル所有者は、安全なチャネルの使用をハッシュの送信または受信のみに制限します。
3
this.josh

あなたの質問を理解した場合、はい、MD5(または任意のハッシュアルゴリズム)でファイルをチェックすることは可能です。

実際、ハッシュアルゴリズムによって処理される各ファイルはbitsであり、入力データのタイプに依存しません。その他、ハッシュは任意の長さの入力を持つことができますが、固定サイズの値を出力します。

1
M'vy