ネットでダウンロードしたフリーソフトやアプリ、ドライバーなどが改ざんされていないか?や、正常にダウンロード出来たか?などをファイルのハッシュ値(hash value)をcertutilコマンドで計算して確認する方法です。
Windowsのコマンドプロンプトで簡単にハッシュ値を計算して確認できるので、セキュリティを高めるために是非活用しましょう。
ハッシュ値とは
ハッシュ値(hash value)とは0と1で構成されるデジタルデータを一定の法則(アルゴリズム)で同じ長さに不可逆的に短縮した16進数の数値のことです。
ハッシュ値の16進数の数値は、元のデジタルデータが同じ場合は同じ値が算出されますが、元のデータに1バイトでも違いがある場合は全く違う値となります。
このことを利用してファイルの改ざんや、複数のファイルの同一性のチェックに利用されます。
日常の利用方法としては以下のようなケースがあります。
- プログラムを公開する作者が、プログラムの改ざんやダウンロード失敗によるインストールエラーを防ぐためにハッシュ値をダウンロードサイトに表示する。
- プログラム利用者が正常にダウンロードできたかハッシュ値で確認する。
- プログラム利用者が、作者のサイトから直接ダウンロードしたファイルと、ネット上の他のダウンロードサイトからダウンロードしたファイルなど、複数の入手経路でダウンロードしたファイルの同一確認に利用する。
ハッシュ値の計算方法
※ここではダウンロードフォルダにダウンロードした「free-soft-v1.0-x64.msi」というファイルのハッシュ値(SHA1)を計算する例で解説します。
※Windows10の場合、ハッシュアルゴリズムを指定しない場合はデフォルトの「SHA1」となります。
ドラッグ&ドロップでハッシュ値を確認する方法(オススメ)
デスクトップの左下の検索画面に「cmd」と入力してEnterキーでコマンドプロンプトを開きます。
コマンドプロンプトに「certutil -hashfile 」と入力します。※最後のスペースを忘れずに。
1 |
>certutil -hashfile |
ダウンロードフォルダの「free-soft-v1.0-x64.msi」をコマンドプロンプト内にドラッグ&ドロップします。
これでEnterキーを押せばファイルのハッシュ値が表示されます。
この値を正常なハッシュ値と見比べてファイルの整合性を確認しましょう。
全て手動で入力する場合
デスクトップの左下の検索画面に「cmd」と入力してEnterキーでコマンドプロンプトを開きます。
cd %USERPROFILE%\Downloads でダウンロードフォルダに移動します。
1 |
>cd %USERPROFILE%\Downloads |
dir コマンドでダウンロードフォルダのファイル一覧を表示してファイルを確認します。
1 2 3 4 5 6 7 8 9 10 11 |
<span class="line"><span style="color: #F97583">></span><span style="color: #E1E4E8">dir</span></span> <span class="line"><span style="color: #E1E4E8"> ドライブ C のボリューム ラベルがありません。</span></span> <span class="line"><span style="color: #E1E4E8"> ボリューム シリアル番号は ■■-■■ です</span></span> <span class="line"></span> <span class="line"><span style="color: #E1E4E8"> C:\Users\■■■■■\Downloads のディレクトリ</span></span> <span class="line"></span> <span class="line"><span style="color: #E1E4E8">2019/02/11 21:52 </span><span style="color: #F97583"><</span><span style="color: #E1E4E8">DIR</span><span style="color: #F97583">></span><span style="color: #E1E4E8"> .</span></span> <span class="line"><span style="color: #E1E4E8">2019/02/11 21:52 </span><span style="color: #F97583"><</span><span style="color: #E1E4E8">DIR</span><span style="color: #F97583">></span><span style="color: #E1E4E8"> ..</span></span> <span class="line"><span style="color: #E1E4E8">2019/01/23 05:49 1,818,624 free-soft-v1.0-x64.msi</span></span> <span class="line"><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">1</span><span style="color: #E1E4E8"> 個のファイル 1,818,624 バイト</span></span> <span class="line"><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8"> 個のディレクトリ 55,322,431,488 バイトの空き領域</span></span> |
「certutil -hashfile」で「free-soft-v1.0-x64.msi」のハッシュ値(SHA1)を取得します。
1 2 3 4 |
<span class="line"><span style="color: #F97583">></span><span style="color: #E1E4E8">certutil -hashfile free-soft-v1.0-x64.msi</span></span> <span class="line"><span style="color: #E1E4E8">SHA1 ハッシュ (対象 free-soft-v1.0-x64.msi):</span></span> <span class="line"><span style="color: #E1E4E8">f687fb6fa998dfaffd58cf8ff6b5ceeae9b268b3</span></span> <span class="line"><span style="color: #E1E4E8">CertUtil: -hashfile コマンドは正常に完了しました。</span></span> |
ハッシュ値が取得できました。
利用できるハッシュアルゴリズム
以下の書式で利用するアルゴリズムを指定することができます。
※Windows10の場合、ハッシュアルゴリズムを指定しない場合のデフォルトは「SHA1」となります。
1 |
<span class="line"><span style="color: #F97583">></span><span style="color: #E1E4E8">certutil -hashfile ファイルのパス アルゴリズム名</span></span> |
【MD5の例】certutil -hashfile C:\temp\free-soft.msi MD5
以下のアルゴリズムが指定可能です。
- MD2
- MD4
- MD5
- SHA1(※デフォルト)
- SHA256
- SHA384
- SHA512
Powershellの場合
ちなみにPowershellの場合は、
Get-FileHash ファイル名 -Algorithm ハッシュアルゴリズム名
でハッシュ値を取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
■MD2を利用する場合 > Get-FileHash ファイル名 -Algorithm MD2 ■MD4を利用する場合 > Get-FileHash ファイル名 -Algorithm MD4 ■MD5を利用する場合 > Get-FileHash ファイル名 -Algorithm MD5 ■SHA1を利用する場合 > Get-FileHash ファイル名 -Algorithm SHA1 ■SHA-256を利用する場合 > Get-FileHash ファイル名 -Algorithm SHA256 ■SHA-384を利用する場合 > Get-FileHash ファイル名 -Algorithm SHA384 ■SHA-512を利用する場合 > Get-FileHash ファイル名 -Algorithm SHA512 |
Linuxの場合
Linuxの場合は以下のコマンドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
■MD2を利用する場合 $ md2sum ファイル名 ■MD4を利用する場合 $ md4sum ファイル名 ■MD5を利用する場合 $ md5sum ファイル名 ■SHA1を利用する場合 $ sha1sum ファイル名 ■SHA-256を利用する場合 $ sha256sum ファイル名 ■SHA-384を利用する場合 $ sha384sum ファイル名 ■SHA-512を利用する場合 $ sha512sum ファイル名 |
以上で解決です。