(DL・インストール編から続く)
さて、インストールが終わったらフロントエンドであるKleopatraを起動してみよう。鍵ペアの作成を促されるはずだ。ここで自分の鍵ペアを作っておく必要がある。"New Key Pair"をクリックして鍵の作成に取りかかる。注意点が二点あるが後述する。
その前に、一応GPGの鍵ペアの仕組みについて簡単に確認しておく。鍵ペアは公開鍵と秘密鍵の二つの組み合わせである。その名の通り公開鍵を他者に公開して暗号化して貰い、自分だけ所有する秘密鍵で解読する。例えれば、開いた状態の南京錠を配布して箱をロックして貰い、マスターキーを持つ自分だけが開けられる、と言うイメージがわかりやすいだろう。
そして今回メインで行うファイルの署名の検証は、逆に秘密鍵でファイルを署名して貰い、その署名ファイルと公開鍵からファイルの検証を行う。正しい署名が出来るのは秘密鍵の持ち主、つまり所有者だけである、と言う考え方だ。
鍵ペアの作成自体は名前とメールアドレスを入れて、ほぼデフォルトのままで進めて構わない。興味があれば詳細設定でアルゴリズムや有効期限を弄ってもいい。
そしてパスワードである。パスワードは当然使い回しなどしてはいけない。十分強度の高いモノを作成しよう。
これで鍵ペア完成する。ここで注意点その1,必ず"Make a Backup Of Your Key Pair"で鍵ペアのバックアップを取っておくこと。秘密鍵を失うとデータがそこにあってもほぼ永久に読めないことになる。
(なお上に表示されているキーはチュートリアルのために作ったものなので、私の本来のPGP/GPG鍵のFingerprintとは異なる)
そして注意点その2,鍵の失効証明書を作っておくこと。失効証明書とは、秘密鍵が流出、あるいは紛失した場合などに、「この鍵はもう使うな」と言うことを宣言するためのファイルである。自分の鍵を右クリックして詳細を表示し、"Generate revocation certificate"から作成する。先ほど作った鍵ペアのバックアップと一緒に大事に保管しておかなければならない。
さて、本来であればこのあと、作成した公開鍵を公開鍵専用サーバにアップロードし、世界中の人々があなたの公開鍵を入手できるようにする…のだが、ハッキリ言えばオススメしない。一旦アップロードした公開鍵は削除することが不可能であり(だからこそ失効証明書が必要なのだ) 、またメールアドレスが公開されることになるのでSPAMが送られてくることがある、などの理由だ。
そういうわけで、他ユーザの公開鍵の取得・署名ファイルの検証の説明に入る。何がいいか迷ったが、ここはオーソドックスにWindows用Tor Browserをダウンロードし、ファイルの検証をして見よう。
https://www.torproject.org/index.html
Downloadをクリックすればすぐにダウンロードページに入る。ここで日本語版を選択し、"DOWNLOAD"で本体を、右下にある小さい"sig"で署名ファイルを保存する。署名ファイルは単にクリックするとテキスト形式で開かれてしまうことがあるので、その場合は「名前を付けてリンク先を保存」をすれば良い。
ダウンロードが終了したならば、本体のファイル"torbrowser-install-win64-8.0.3_ja.exe"と署名ファイル"torbrowser-install-win64-8.0.3_ja.exe.asc"を同じフォルダに置いた状態で、署名ファイルをダブルクリックする。Kleopatraに関連付けられているはずなので、自動で検証が始まるはずだ。しかし、
"This date could not be verified"、つまり検証不可である。署名しているTor Projectの公開鍵を持っていないので当然である。なのでここでSearchを押して公開鍵サーバから公開鍵の検索を行う。
さて、検索の結果このような鍵が表示された。この鍵が本当にTor Browser Developersの鍵なのか、あるいは何者かがその名を騙ってサーバにアップロードしたものか判断しなければならない。鍵ペアにはその信用性を担保する16進法40桁160ビットの「フィンガープリント(Fingerprint)」があり、これが一致すればよい。…のだが40桁は長すぎるので、かつては「フィンガープリント」の下8桁、今では16桁の鍵ID(Key-ID)を使う。上の画面でも右端に"4E2C6E8793298290"と言う値が表示されている。
ではここでTor ProjectのWebサイトに戻り、この鍵IDが正しいか確認してみる。
www.torproject.org
上の方に確かに"0x4E2C6E8793298290"(0xは16進数の意味)という鍵IDが表示されている。よってこの鍵は確かにTor Browser Developersの鍵だと考えていい。「インポート」を押してこの鍵をダウンロードする。さらに確認画面が出るはずだ。
「はい」を押す。この鍵を本当に認証するか、と言う確認画面が出る。ここでは16桁の鍵IDだけでなく、「フィンガープリント」が正しいかまで確認する。
先ほどのTor ProjectのWebサイトで、鍵IDだけでなく「フィンガープリント」も掲載されているので確認する。
"EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290"が「フィンガープリント」である。これは確かに一致するので、「フィンガープリントを検証しました」にチェックを入れて進む。
これはデフォルトの「自分自身のためだけに署名する」でいい(後述)。「署名」を押す。あなたの鍵ペアのパスワードの入力を求められるので、入力して署名する。
さぁこれで、"torbrowser-install-win64-8.0.3_ja.exe"の検証が完了した。間違いなくTor Browser Developersがこのファイルを作成して署名して以降、ファイルが改ざんされていないことが証明されたのである。これでGpg4winによる署名の確認法は以上である。基本的に同じことをすれば良い。
ここから余談:
勘のいい人は気付いたはずだ。「フォートミードやラングレーにいる攻撃者がファイルだけでなく、鍵IDやフィンガープリントを表示するページも改ざんしていたらどうするのか?」と言う問題である。
解決策として二種類のアプローチがある。まず一つは、DL・インストール編でGpg4winをダウンロードしたときに使った「何かしらを完全かつ無条件に信頼する」という方法である。しかし、MicrosoftやMozilla、Googleを本当にそこまで信用していいのだろうか? そして一方、OSすら信用できないのであれば何を信用するのか。と言うジレンマが生じる。
そこでもう一つのアプローチが、PGP/GPGが使う「信頼の網("Web of Trust")」モデルである。簡単に言えば「友達の友達は信用できる」というヤツだ。Tor Browser Developersの公開鍵を署名するときにデフォルトの「自分自身のためだけに署名する」を選択するように指示したが、ここで「見る人全てのために署名する」を選び、鍵サーバにアップロードすると、「あなたがこの鍵を信用した」と言うことが今後Tor Browser Developersの鍵をダウンロードした人すべてに伝わる。そうすればあなたの知り合いは安心して使える、と言う理屈である。欠点は言うまでもない。あなたはTor ProjectのWebサイトを見て署名しただけなので攻撃者により騙されているかもしれない。
あるいはKleopatraから証明書ファイルを右クリックして詳細からCertificationsを見ると、上のようにこの鍵に署名してくれている人がたくさん出てくる。しかし、あなたの友達は多分1人もいないだろう。
これら二つのアプローチはどちらも有用だが完璧ではない。弱点がある、と言うことを踏まえた上で利用する必要がある。もし邪悪な国家権力が腐敗している証拠をジャーナリストに渡すのであれば、これを踏まえた上でさらに手順を踏む必要があることを忘れないでいただきたい。