本サイトでもフリーソフトを公開していますが、ダウンロードしたファイルが正しいかどうか、破損がないか、または、改ざんされていないかを確認する方法として、ハッシュ値を比較する方法があります。ハッシュ値は、ファイルの内容からあるアルゴリズムに基づいて算出されるデータ(文字列)で、ファイルの内容が1bit違っているだけでも大きく異なるため、ファイルの同一性の確認に用いられています。
フリーソフトなどのダウンロードサイトでは、ファイルのダウンロードとともに、ダウンロードされるファイルのハッシュ値を公開しているサイトがあります。ダウンロードしたファイルのハッシュ値を算出し、公開されているハッシュ値と比較することで、そのファイルが原本と同一であることがわかります。また、フリーソフトのファイルが、第三者のHPを介して配布されている場合など、そのファイルが本当にオリジナルのものと同一であるか、ハッシュ値の比較で確認することもできます。
以下の章では、ファイルのハッシュ値を調べる方法についてご紹介したいと思います。
ハッシュ値を計算するアルゴリズムには以下のような種類があります。(PeaZip HPより)
CRCはチェックサムと呼ばれ、ビットエラーがないか調べるための単純な算出アルゴリズムですが、悪意のあるファイル改ざんを調べるような場合には、使えません。改ざんを調べるためには、より安全性の高いハッシュアルゴリズムを使います。MD5やSHA-1といったアルゴリズムは世の中ではまだ使われているケースも多いと思いますが、ハッシュ値が同じ2つの異なるファイルの作成にGoogleが成功したというニュースもあり、現在ではより強力な、SHA256 や SHA-3 を使うことが推奨されています。
参考:GoogleとCWI、SHA-1衝突に成功、ハッシュ値が同じ2つのPDFを公開 (Internet Watch 2017/2/24)
ファイルのハッシュ値を調べる方法としては、ハッシュ値を計算するソフトを使う方法や、Windows付属のコマンドで調べる方法などがあります。
ハッシュ値を表示する専用のフリーソフトは多く存在するのですが、そのためだけにソフトをインストールしたくないと思う人も多いかもしれません。PeaZipや7-Zipなどの圧縮ソフトでもハッシュ値を計算する機能がありますので、すでにインストールしている人はそれを使うのが一番簡単だと思います。また、コマンドプロンプトから入力する必要はありますが、Windows付属のコマンドであれば、何もインストールすることなくハッシュ値が得られるということで、こちらを好む方も多いかもしれません。
圧縮ソフト系
ハッシュ値計算ソフト
Windowsコマンド
以下に、PeaZipによる表示方法、certutilによる表示方法について、ご紹介します。
圧縮解凍ソフト PeaZip でハッシュ値を調べることができます。
PeaZipでハッシュ値を調べる場合、調べたいファイルを右クリックし→「PeaZip」→「CRC, hash and file tools」を選択します。
表示される画面で、「Checksum/Hash (common algorithms)」を選択し、OKをクリックします。
Checksum and hash画面が表示されます。この画面でも右にスクロールすると各種ハッシュ値が表示できるのですが、ちょっと探すのがめんどくさいので、「Clipboard」タブを選択します。
すると、以下のように、各種ハッシュ値がテキスト形式で表示されます。ここでは、CRC32, CRC64, MD5, RIPEMD160, SHA1, SHA256, SHA3_256のハッシュ値が表示されます。
上記以外のアルゴリズムのハッシュ値を表示させる場合、アルゴリズムの選択で「Checksum/Hash (all supported algorithms)」を選択します。
Windows付属コマンドの certutil コマンドを使ってもハッシュ値を調べることができます。
certutil でハッシュ値を調べる場合、以下のようにパラメータを指定します。
certutil -hashfile <ファイル名> [<ハッシュアルゴリズム>]
指定できるハッシュアルゴリズムは、MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512 のいずれかです。ハッシュアルゴリズムを指定しなかった場合、SHA1で表示されます。ファイル名にワイルドカードは使えないようです。
実行例は以下の通りです。
D:\>dir ドライブ D のボリューム ラベルがありません。 ボリューム シリアル番号は F28B-25EC です D:\ のディレクトリ 2020/02/23 19:22 100,948 nWOLSetup.1.3.28.0.zip 2020/02/23 19:16 417,792 nWOLSetup_x64.1.3.28.0.msi 2020/02/23 19:16 417,792 nWOLSetup_x86.1.3.28.0.msi 3 個のファイル 936,532 バイト 0 個のディレクトリ 243,097,600 バイトの空き領域 D:\> D:\>certutil -hashfile nWOLSetup.1.3.28.0.zip SHA1 ハッシュ (対象 nWOLSetup.1.3.28.0.zip): ba801931635f49762587e7b83413dc429021c0d8 CertUtil: -hashfile コマンドは正常に完了しました。 D:\>certutil -hashfile nWOLSetup.1.3.28.0.zip MD5 MD5 ハッシュ (対象 nWOLSetup.1.3.28.0.zip): 8a8c0372fa42db78d2d4ae4b3f9587b4 CertUtil: -hashfile コマンドは正常に完了しました。 D:\>certutil -hashfile nWOLSetup.1.3.28.0.zip SHA256 SHA256 ハッシュ (対象 nWOLSetup.1.3.28.0.zip): 0edf64f88b4c8face9c04ff99fd9dc065f68b207b47996b90e3549baefc0f741 CertUtil: -hashfile コマンドは正常に完了しました。 D:\>
@IT記事:WindowsでMD5/SHA-1/SHA-256ハッシュ値を計算してファイルの同一性を確認する (2017/7/18)
【関連記事・関連コンテンツ】