チェックサムとは?
チェックサム(ハッシュ値とも呼ばれます)は、ファイルのすべてのバイトから計算される短い英数字の文字列です。同じファイルからは必ず同じチェックサムが得られ、1バイトでも変わればまったく異なる値になります。そのため、ファイルの中身の「指紋」として使えます。
ソフトウェアの配布元は、ダウンロードリンクの近くにチェックサムを掲載しています。ダウンロードしたファイルのチェックサムを計算してそれと一致すれば、破損や改ざんのない、配布元が公開したファイルそのものだと確認できます。
ダウンロードしたファイルを確認すべき理由
- ダウンロード時の破損:通信の切断やディスクの不具合によって、エラーが表示されないまま大きなファイルが壊れることがあります。壊れたISOイメージは、入手元を忘れたころにインストールの途中で失敗することも珍しくありません。
- 改ざんされたファイル:ダウンロード用のミラーサーバーに侵入した攻撃者が、ファイルをマルウェア入りのものにすり替えることがあります。2016年にはLinux Mintの公式サイトがハッキングされ、ダウンロードリンクの先がバックドア入りのISOに差し替えられました。
- 別のファイル:チェックサムを確認すれば、x64版のつもりがARM版だった、キャッシュから古いバージョンが配信されていた、といった取り違えにも気づけます。
オンラインでファイルのハッシュ値を確認する方法
- ダウンロードしたファイルを上のツールにドロップするか、クリックして選択します。
- ダウンロードページに記載されたチェックサムをコピーし、照合用の入力欄に貼り付けます。
- 一致するかどうかが表示されます。MD5・SHA-1・SHA-256・SHA-512は、チェックサムの長さから自動で判別されます。
9f86d0...0a08 *ubuntu.isoのように、チェックサムファイルの1行をそのまま貼り付けても、チェックサムの部分だけを自動で読み取ります。
プライベートなファイルでも安全な理由
オンラインのハッシュ計算ツールの多くは、まずファイルを自社のサーバーにアップロードします。このツールはブラウザ自体の処理能力でファイルを少しずつ読み込むため、ファイルが端末の外に出ることはありません。アップロードを待つ必要もなく、非常に大きなファイルにも対応しています。
WindowsでMD5・SHA-256のハッシュ値を確認する方法
Windowsでは、PowerShellに標準でチェックサムを計算する機能があります。PowerShellを開き(スタートメニューで検索できます)、ファイルのあるフォルダに移動して、次のコマンドを実行します。
cd $HOME\Downloads
Get-FileHash .\ubuntu.iso既定ではSHA-256のチェックサムが表示されます。ほかのアルゴリズムを使う場合は、-Algorithm MD5、-Algorithm SHA1、-Algorithm SHA512のいずれかを追加します。照合したいチェックサムと1文字ずつ見比べずに比較するには、次を実行します。
(Get-FileHash .\ubuntu.iso).Hash -eq "ここに正しいチェックサムを貼り付け"一致すればTrue、一致しなければFalseと表示されます。従来のコマンドプロンプトを使う場合は、代わりにcertutil -hashfile ubuntu.iso SHA256を実行してください。
MacでMD5・SHA-256のハッシュ値を確認する方法
ターミナル(「アプリケーション」>「ユーティリティ」内)を開き、ファイルのあるフォルダに移動して、次のコマンドを実行します。
cd ~/Downloads
shasum -a 256 app.dmgSHA-1やSHA-512を使う場合は、256を1または512に置き換えます。MD5の場合はmd5 app.dmgを実行します。チェックサムの照合をターミナルに任せるには、次を実行します。
echo "ここに正しいチェックサムを貼り付け app.dmg" | shasum -a 256 -c一致するとapp.dmg: OKと表示されます。チェックサムとファイル名の間には、半角スペースが2つ必要な点に注意してください。
LinuxでMD5・SHA-256のハッシュ値を確認する方法
主要なLinuxディストリビューションには、チェックサムを計算するツールが標準で入っています。ターミナルで次を実行します。
sha256sum ubuntu.isomd5sum、sha1sum、sha512sumも同じように使えます。多くのプロジェクトは、配布しているすべてのファイルのチェックサムをまとめたファイル(SHA256SUMSという名前が一般的)を公開しています。これをダウンロードしたファイルと同じフォルダに置いて、次を実行します。
sha256sum -c SHA256SUMS --ignore-missing一致したファイルごとにubuntu.iso: OKと表示されます。--ignore-missingを付けると、一覧にあってもダウンロードしていないファイルはスキップされます。
MD5・SHA-1・SHA-256・SHA-512の違い
4つとも役割は同じですが、MD5とSHA-1は、意図的に偽造されたファイルを見抜く用途にはもう安全ではありません。それでも偶発的な破損は検出できるため、今も多くのダウンロードページに掲載されています。
| アルゴリズム | 長さ | 安全性 | 主な用途 |
|---|---|---|---|
| MD5 | 長さ32文字 | 安全性破られている。異なる2つのファイルで同じチェックサムを作れてしまう | 主な用途破損したダウンロードや不完全なダウンロードの検出 |
| SHA-1 | 長さ40文字 | 安全性同じ理由で2017年に破られている | 主な用途古いダウンロードページ、Git |
| SHA-256 | 長さ64文字 | 安全性安全 | 主な用途現在のソフトウェア配布における標準 |
| SHA-512 | 長さ128文字 | 安全性安全 | 主な用途一部のLinuxディストリビューションやセキュリティツール |
ダウンロードページに複数のチェックサムが掲載されている場合は、SHA-256かSHA-512を使いましょう。
チェックサムが一致しない場合の対処法
まず、ファイルを開いたりインストールしたりしないでください。そのうえで、可能性の高い順に次の点を確認します。
- 同じアルゴリズム同士で比較しているか確認する。SHA-256のチェックサムがMD5のものと一致することはありません。
- バージョン番号やx64版・ARM版の違いも含め、チェックサムに対応するバージョンをダウンロードしたか確認する。
- ファイルを削除して、もう一度ダウンロードする。できればミラーではなく公式サイトから入手する。
- 公式サイトからダウンロードし直しても一致しない場合は、そのファイルを使わずに配布元に連絡する。
チェックサムでわからないこと
チェックサムが一致すれば、そのファイルがチェックサムの計算元と同一であることは証明できます。しかし、そのファイル自体が安全であることまでは保証されません。攻撃者がWebサイトを乗っ取っていれば、ダウンロードファイルとその横のチェックサムを両方とも差し替えられるからです。
より確実に確認するには、ミラーからダウンロードしたなら公式サイトから、というように、ファイルとは別の場所からチェックサムを入手しましょう。チェックサムファイルにGPGで署名しているプロジェクトもあり、その場合はチェックサムが配布元によるものであることも確認できます。
よくある質問
ファイルを安全に共有する
エンドツーエンド暗号化されたリンクでファイルを送信。無料・登録不要で、送った内容を私たちが見ることはできません。
ファイルを共有