ハッシュでファイルの整合性を検証する方法
ソフトウェア、ファームウェア、重要な文書をダウンロードしたとき、ファイルが配布元の意図したとおりのものだとどうやってわかるのでしょうか? ファイルのハッシュ化は暗号学的フィンガープリント — ファイルのバイトが 1 つでも変われば変わる固有の文字列 — を提供します。
ファイルハッシュの仕組み
ハッシュ関数はファイルのすべてのバイトを読み、固定長の文字列を生成します。同じファイルからは常に同じハッシュが得られます。バイトを 1 つでも変えれば、ハッシュは完全に変わります。
例:
- 元ファイルのハッシュ:
e3b0c44298fc1c14... - 同じファイルでバイトを 1 つ変えたもの:
d7a8fbb307d7809c...
これで検証はシンプルになります:ハッシュを生成し、公開されているハッシュと比較すれば、ファイルが本物かどうか即座にわかります。
ファイルを検証する方法
- 公式ハッシュを見つける — ソフトウェアの配布元はたいていダウンロードページにハッシュを掲載しています(「SHA-256 checksum」「MD5 sum」と書かれていることが多いです)。
- ダウンロードしたファイルをアップロード — ハッシュ計算機で選択します。ハッシュはブラウザ内でローカルに計算されます。
- ハッシュを比較 — 計算されたハッシュが公式のものと完全に一致すれば、ファイルは本物で破損していません。
ファイルハッシュを検証すべきとき
- ソフトウェアのダウンロード — インストーラーや更新が、ダウンロード中に改ざんや破損していないか確認する
- ファームウェア更新 — 破損したファームウェアはデバイスを「文鎮化」させることがあります。書き込み前に必ず検証してください
- ISO イメージ — OS イメージは、USB に書き込んだりインストールしたりする前に検証すべきです
- 法務 / 財務文書 — 重要文書が署名や共有の後に変更されていないことを確認する
- バックアップの検証 — バックアップファイルが元のファイルと同一であることを確認する
対応アルゴリズム
| アルゴリズム | 長さ | 推奨度 |
|---|---|---|
| MD5 | 32 文字 | レガシー用途のみ — 安全でない |
| SHA-1 | 40 文字 | レガシー用途のみ — 安全でない |
| SHA-256 | 64 文字 | 推奨される標準 |
| SHA-384 | 96 文字 | 高セキュリティ |
| SHA-512 | 128 文字 | 最大セキュリティ |
ヒント
- 同じアルゴリズムを使う — 配布元が SHA-256 を提供しているなら、ファイルから SHA-256 を生成しましょう。アルゴリズムが違えば、同じファイルでも完全に異なるハッシュが得られます。
- コピー&ペーストで比較 — 長い文字列を目視で比較しないでください。両方のハッシュを比較ツールに貼り付けるか、片方からもう片方を検索しましょう。
- 大きなファイルでも問題なし — ハッシュ化はブラウザ内で動作するため、サイズ制限もアップロードもありません。唯一の制約はデバイスの速度です。
- インストール前にハッシュ化 — 重要なダウンロードは実行前に検証する習慣を付けましょう。数秒で済み、改ざんされたソフトウェアのインストールを防げます。
よくある質問
ファイルのハッシュを公式のものとどう比較しますか?
ハッシュを生成したあと、配布元(通常はダウンロードページ)が公開しているハッシュと文字単位で比較します。すべての文字が一致すれば、ファイルは本物で破損していません。1 文字でも違えば、ファイルは変更されています。
どのハッシュアルゴリズムを使うべきですか?
SHA-256 がファイル検証の標準です。配布元が提供しているアルゴリズムを使いましょう。選択肢があるなら、SHA-256 がセキュリティとパフォーマンスのバランスが良好です。
破損したファイルが正しいハッシュを持つことはありますか?
理論的には可能(衝突)ですが、SHA-256 では統計的に無視できるほどの確率です。可能性が天文学的に低いため、実用上はハッシュが同じならファイルも同じだと保証できます。
ファイルはサーバーに送信されますか?
いいえ。ハッシュは完全にブラウザ内で計算されます。ファイルがデバイスから出ることはなく、機密文書を含むあらゆる文書で安全に使えます。