今日の投稿はビットコインにとどまらず、様々なソフトをダウンロードしてインストールする際にできれば気をつけたい、ダウンロードファイルの検証を行う方法についてです。特にウォレットなどをソースコードからインストールせずダウンロードするときは、流通元がハックされて悪意のあるコードが仕込まれていないか確認することが重要です。ダウンロードファイルの検証に使われる方法を紹介したいと思います。
ハッシュ値 (MD5チェックサム)
パソコンにソフトをダウンロードするとき、ダウンロードボタンの付近に「c59fc21da2ac0d16419f112dbd75d7d7」のような文字列が表示されているのを見たことがある人は多いのではないでしょうか。これはMD5チェックサムと呼ばれる、ファイルをMD5というハッシュ関数でハッシュして生成した値です。
ダウンロードしたファイルを改めてMD5を使ってハッシュすれば、ダウンロードしたファイルのMD5チェックサムと、サイトに記載されているものを比較することができます。等しくない場合は、ファイルが改変されているか、ダウンロードや保存の過程で破損していることになります。
なお一般的なウェブサービスにおいて、流出対策としてパスワードは通常ハッシュ化して保管し、ユーザーが入力したパスワードのハッシュと比較することでログインを行うのですが、MD5は現代のパソコンで比較的短時間に任意のハッシュ値を持つデータを作成できる程度に脆弱なため今では使用されません。しかし、任意の元データ(改変ソフトなど)に任意のチェックサムを持たせることはできないので、MD5チェックサムはダウンロード検証には有効です。MD5ではなく、ビットコインでおなじみのSHA256が使われることもあります。
取るべき行動:MD5またはSHA256チェックサムがある場合、ダウンロードしたファイルに対してハッシュを計算し、比較する。具体的なやり方はOSなどに依存するので調べてください。
しかしながら、ダウンロードファイルとともにサイト上のMD5チェックサムが攻撃者によって変更された場合も、ユーザーにはファイルが正常に見えてしまうため、チェックサムの比較だけでは不安です。そこで、PGP/GPG署名という方式もあります。