ダウンロードファイルの検証に気をつける
今日の投稿はビットコインにとどまらず、様々なソフトをダウンロードしてインストールする際にできれば気をつけたい、ダウンロードファイルの検証を行う方法についてです。特にウォレットなどをソースコードからインストールせずダウンロードするときは、流通元がハックされて悪意のあるコードが仕込まれていないか確認することが重要です。ダウンロードファイルの検証に使われる方法を紹介したいと思います。
ハッシュ値 (MD5チェックサム)
パソコンにソフトをダウンロードするとき、ダウンロードボタンの付近に「c59fc21da2ac0d16419f112dbd75d7d7」のような文字列が表示されているのを見たことがある人は多いのではないでしょうか。これはMD5チェックサムと呼ばれる、ファイルをMD5というハッシュ関数でハッシュして生成した値です。
ダウンロードしたファイルを改めてMD5を使ってハッシュすれば、ダウンロードしたファイルのMD5チェックサムと、サイトに記載されているものを比較することができます。等しくない場合は、ファイルが改変されているか、ダウンロードや保存の過程で破損していることになります。
なお一般的なウェブサービスにおいて、流出対策としてパスワードは通常ハッシュ化して保管し、ユーザーが入力したパスワードのハッシュと比較することでログインを行うのですが、MD5は現代のパソコンで比較的短時間に任意のハッシュ値を持つデータを作成できる程度に脆弱なため今では使用されません。しかし、任意の元データ(改変ソフトなど)に任意のチェックサムを持たせることはできないので、MD5チェックサムはダウンロード検証には有効です。MD5ではなく、ビットコインでおなじみのSHA256が使われることもあります。
取るべき行動:MD5またはSHA256チェックサムがある場合、ダウンロードしたファイルに対してハッシュを計算し、比較する。具体的なやり方はOSなどに依存するので調べてください。
しかしながら、ダウンロードファイルとともにサイト上のMD5チェックサムが攻撃者によって変更された場合も、ユーザーにはファイルが正常に見えてしまうため、チェックサムの比較だけでは不安です。そこで、PGP/GPG署名という方式もあります。
PGP署名
こちらは公開鍵暗号を使ってファイルに署名することで、そのファイルの署名者が証明できるという発想のファイル検証手段です。PGPを使ってダウンロードファイルを検証するのに必要なものは次の3つです:
1.検証すべきダウンロードファイル本体
2.そのダウンロードファイルに対する電子署名ファイル(.asc, .sigなど)
3.電子署名を行った者の公開鍵
2は、ファイルをダウンロードするページに、署名ファイルをダウンロードする手段が用意されているはずです。(例えばElectrumであれば、各バージョンの横の"signature"から、Bitcoin Coreなら「リリースの署名を検証」からダウンロードできます。)
3を入手するにはいくつか方法があります。
第一に、単純にダウンロードする方法。Bitcoin.orgのサイトでは、バージョンに対応したリリース署名キー自体がダウンロードできます。ただし、これはサイトが改ざんされ、リリース署名キーが不正なものに置き換えられる可能性もあります。
第二に、署名ファイルをPGPソフトに渡して、公開鍵を多数登録しているサーバーに問い合わせる方法。サーバーに登録されている情報をトラストする必要があります。問い合わせには署名ファイルの代わりにPGP Key Fingerprintという文字列を使う方法もあります。例えばBitcoin Coreのサイトにある 01EA5486DE18A882D4C2684590C8019E36C2E964 という文字列を入力すると、公開鍵が返ってくるという感じです。
お気づきかもしれませんが、この時点ではまだトラストの必要性を排除できていません。というのも、PGP自体がトラストを前提としている仕組みだからです。(とても古い規格で、当初はメールの暗号化用途で相手から直接、または信頼している媒介を通じて公開鍵を受け取るという考えがあったようです。)
ですので、可能であればもう1箇所、ファイルの配布元とPGPサーバー以外から公開鍵を見つけてきて比較することがベストです。例えばGitHubや会社・大学のサイト、署名者自身のサイトなどが考えられます。
取るべき行動:できれば2通りの方法で入手した公開鍵が同一のものだと確認してから、それをPGPソフトに読み込ませ、電子署名ファイルを検証すると、ダウンロードファイルが実際にその公開鍵の所有者によって署名されたことが確認できます。
はい。大変めんどくさいので、実際にやっている人は100人に1人いないかもしれません。ですが、誰かがやらないと、実際に不正が行われていても発見が遅れる可能性があります。ちなみにGoogle Playなどのアプリは自動的に検証されてるようです。
怠け者のヒューリスティック
どうしても面倒だ、やり方が難しすぎる、という方は、せめて絶対に検索エンジンおよびTwitterなどでダウンロードしたいウォレットやソフトについて、最新の情報を確認してからダウンロードしてください。誰かが不正に気づいていて警鐘を鳴らしているかもしれません。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション