web-dev-qa-db-ja.com

ダウンロードしたファイルの整合性を確認するにはどうすればよいですか?

ハッシュ関数を使用してファイルの整合性などを確認していることはわかっていますが、私の質問は、サーバーからダウンロードされているファイルの整合性をどのように確認できるのでしょうか。

15
ame

整合性は、バイトの「正しい」シーケンスが何であるかを伝える信頼できるソースに対してのみ相対的に定義されます 。ハッシュ関数は整合性を作成せず、それをtransportします。基本的に、あなたが持っている場合:

  1. ファイル;
  2. 正しいと推定されるハッシュ値。

次に、ファイルに対してハッシュ関数を再計算して、同じハッシュ値が得られるかどうかを確認できます。

まだどこかから始めなければなりません。一部のソフトウェアディストリビューターは、ソフトウェアと共に、ハッシュ値を含む「チェックサム」(または「md5sum」または「sha1sum」)ファイルを提供しています。 正しいチェックサムファイルを取得したと仮定すると、これにより、最後のビットまで、正しいファイルをダウンロードしたかどうかを確認できます。これは、大きなファイルをダウンロードした方法に関係なく機能します(たとえ怪しげなピアツーピアネットワークなどを経由しても、ハッシュ関数をだますことはできません)。

これで整合性の問題は解決されません。それはあなたが正しいハッシュ値を得たことを確認する問題にそれを単に減らします。ハッシュ値は小さいため(SHA-256の場合は32バイト)、これにより多くの可能性が開かれます。 P2Pシステムからファイルをダウンロードするコンテキストでは、HTTPS Webサイトからハッシュ値を取得できます(HTTPSはSSLを使用してサーバー認証を保証します-意図したサーバーと通信し、完全性をトランスポートすることが保証されます-受信したものは、サーバーが送信したものであることが保証されています。 PGP公開鍵を人と交換する状況では、ハッシュ値(「フィンガープリント」または「サムプリント」と呼ばれることが多い)は、手動で転送するのに十分短い(名刺に印刷され、電話で綴られる...)。

デジタル署名 概念を拡張しますが、それらもハッシュ関数で始まります。すべてのデジタル署名アルゴリズムはメッセージ自体ではなく、メッセージのハッシュに署名します(ハッシュ関数が安全である限り、つまり衝突やプリイメージに耐性がある限り、これは同等に優れています)。

16
Tom Leek

多くのソフトウェアの場合、ファイルのプロバイダーはファイルのハッシュも提供します。これにより、ファイルの整合性を確認できます。

たとえば、FedoraプロジェクトがFedora 19 x86_64 ISOに提供するチェックサムの例を次に示します。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# The image checksum(s) are generated with sha256sum.
6e7e263e607cfcadc90ea2ef5668aa3945d9eca596485a7a1f8a9f2478cc7084 *Fedora-19-x86_64-DVD.iso
ef9eb28b6343e57de292f2b2147b8e74a2a04050655e0dc959febd69b0d5d030 *Fedora-19-x86_64-netinst.iso
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCAAGBQJRzjLNAAoJEAdHfmX7SxjmzQEP/jzXXe4rxRzA9NLrgWtRUp1b
nK+gpMgGXC5+zSWnKTQBUWMx0rx7uys/UQH934hz1rdMOqLkCe1XlVWp+0ya55nC
13OhOeeJhbdECzFvcSAkDh9Aj2Z9AnDeHbDvJXpEjvGiSLLsYWsjifIkMYDoNTRV
QlLWwOTlCCUZtEGEI1x0TWYlr0HUtkL5QAzQ4CSO7xGYE6YH/xwHje/8n7B25NHU
r2sSdlz3KORQyStqYK78cWlR70PT+3o00SO7ReHNVIZwCL8PjsOEm41Q4tjw3BF7
KLp+fcQTOgzLRY1VVk0n0POeJHbVB2TULjIW4F/vCiA3N6Uq595ebNxgSOBg8tRs
t7fkbktVB6+WeBCcGvJI7MWzYq0ukwRBAH+ZBLhpnEIsHOoFF6LRoiE0UncdhGb+
OmZqn8wZKzMf401E/vj7dEy+X3lAST+5mBm0EJQaFz2cbQCzuxfhnSc27w9Zq3ii
3Tgo1ubInXD/fu1WFH/Tu2aOmbNQwDr4YQDYOeuzokA3d/2bETIhEmYxmfGptfMw
fGG/u4QQMdXyPPKvdIkOTAp5d0tWnTucpkbHs1goygsCMz6XWvIZJt4bAbSRwXoa
qYXh8IpJAM0CrU0353RMDCNpDlpSXGeEy5riaFpFCe7SKZBzp2dJ1LsMJl1NJXxn
QavVCbllLFFjaTuYKrDZ
=oBpz
-----END PGP SIGNATURE-----

Instructions も、提供されたチェックサムの使用方法がわからない場合に提供されます。

一般に、ファイルがチェックサムと同じメディアを介して提供される場合、ダウンロードを危険にさらした攻撃者が提供されたチェックサムを置き換える機能も持つため、実際のメリットはほとんどありません。ただし、これは、急流やCDNなどの安全でない接続を介してファイルがダウンロードされる場合に非常に役立ちます。このような状況では、ソフトウェアプロバイダーは、急流やCDNなどのより高い帯域幅の媒体を通じてファイルを提供しながら、サーバーに小さなチェックサムを提供できます。

9
user10211