フリーソフトやLinux系OSのインストーラのISOなど、インターネット上から自由に入手できるソフトウェアにはよく、”チェックサム”と呼ばれる値がついていることがあります。
このチェックサムとは何かというと、
ある関数を使って特定のデータを計算すると必ず同じ値が得られ、1ビットでもデータが異なった場合は異なった値が出力されるアルゴリズム=ハッシュ関数
によって出された、ダウンロード対象ファイルのハッシュ値のことです。
つまり、公開する側が正規のファイルのハッシュ値を計算したものをを公開しておくことで、そのファイルを入手した人が同じハッシュ関数を使って”本物のファイルが入手できたのか”を簡単に確かめられるようにしてある、ということです。
例えば、もし何らかの方法でダウンロードするファイルが不正にすり替えられていたとしても、1ビットでも異なれば別のハッシュ値が出力されてしまうため、手元のファイルのハッシュ値と比較することで手元のファイルが改ざんされたものかどうかを簡単に調べることができます。
そんなセキュリティ的にも重要なハッシュ関数ですが、WindowsではGUIのツールがデフォルトで用意されているわけではないため、ハッシュ関数の存在を知っていてもセットアップのめんどくささからあまり使わないユーザーも多いのではないかと思います。
実は、コマンドプロンプト上のコマンドによる操作にはなってしまいますが、Windowsに始めからインストールされている、CertUtil というコマンドで簡単にファイルのハッシュ値を求めることができます。
コマンドの使い方としては
CertUtil -hashfile ハッシュ値を出したいファイルのパス ハッシュ関数
のように指定します。
実行すると下記のようになります。
Microsoft Windows [Version 10.0.18362.476]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\hoge>CertUtil -hashfile C:\Users\hoge\Downloads\linuxmint-19.2-mate-64bit.iso sha256
SHA256 ハッシュ (対象 C:\Users\hoge\Downloads\linuxmint-19.2-mate-64bit.iso):
56f2d0c2b54be0fd66a8cf35799a69d02d4bfdf546b4f946a0b8af01cbbbd689
CertUtil: -hashfile コマンドは正常に完了しました。
C:\Users\hoge>
上記の例はLinuxMintのOSのインストーラーイメージをハッシュ関数にかけた時の結果です。
56f2d0c2b…の一行がハッシュ値となります。
このハッシュ値を公式サイトで公開されているハッシュ値と照らし合わせます。
ばっちり合致したので、改ざんがないことがわかりました。
こういったひと手間をかけるだけでも、ウイルスの被害などから身を守ることができますので、是非積極的に利用していきたいですね。