2015年11月9日月曜日

YubiKey Neoでメールの暗号化(OpenPGP)

はじめに

久々にYubiKey関連の記事を書きます。
電子メールは便利な技術です。適切に設定してやれば閉じたネットワークでもどこにでも届けることができます。しかし、途中色々なサーバーを経由するので、 誰が途中で盗み見るかもわからず、セキュリティ的にはいまいちです。よくファイルをZIPにパスワードをかけてメールに添付して送っていますが、なんでもいいから暗号化できていればいいというならよいのですが、頼りない気がします。

暗号化してメールを送ればよいのですが、暗号化メールはあまり一般的ではありません。前からメールを暗号化できるOpenPGPには興味がありましたが、パスワードと違って他のPCに持っていくのがセキュリティ上難しいなど、秘密鍵の運用が難しいのですぐに使わなくなってしまいました。

そんな時、YubiKeyのページを久々に見てみたら、なんとお高い方のYubiKey NeoにはOpenPGPの文字があります。正直あまり使っていないYubiKeyですが、私は酔っていた手前何も考えずにYubikey Neo-nという小さいのを6480円でアマゾンですぐにオーダーしました。便利な反面恐ろしい世の中になったと思います。

YubiKey Neo-nについて

さてアマゾンで買って届いたYubiKey Neo-nですが、あまりの小ささに驚きました。こんな小さなものに今までの暗号化関連の機能とNFCまでついているのかと感心したのですが、少し嫌な予感がしました。製品ページを見てみるとやっぱりNFCは入っていません。NFCが入っているのは大きな方のYubiKeyNeoだけとなります。失敗しました。

YubiKeyの小さい方のバージョンはUSBポートに付けると金属製の爪が少 しだけ出るようになっています。金属製の爪に触れると今までのYubiKeyのようにワンタイムパスワードを打ってくれます。

金属の爪に穴があるのです が、紐などを付けなければ、外しにくいです。外す時に爪に触れるので、画面上にはワンタイムパスワードが入力されてしまいます。文章を書いているときなどcfccっせえfkjhtdhhhlヴgtkdhhちfc んltctrbぃdgfjgこんなことになってしまうので、注意が必要です。

OpenPGPについて

OpenPGPについては、去年GoogleがChromeに機能拡張を発表しましたし、現在FaceBookも実験的にサポートしています。割と昔からある技術で、最近Googleのおかげで少し注目を浴びたものの、一般には今一歩普及していません。

使用が難しいと聞くOpenPGPですが、今時はGUIもあるので、そんなには難しいものではありません。難しいのは、使用ではなく秘密鍵の管理や信頼の輪を含んだ運用方法にあると思います。

OpenPGPでは送信相手の暗号化鍵は公開されているので、特に気にする必要はないのですが、暗号化メールの解除に使用する秘密鍵は大切に保管しなければなりません。でも、メールを読むときは秘密鍵がいるので、USBメモリにでも入れて金庫に入れておくわけにはいきません。

また、最近は色々な場所でPCを使用することも多くなっています。秘密鍵をUSBメモリで持ち歩くのは少し不安です。秘密鍵を知らずにコピーでもされたら、秘密だと思っていたメールが知らず知らずのうちに見られてしまうかもしれません。コピーされても秘密鍵にはパスワードを設定することもできますので簡単には使用できませんが、総当たり攻撃でいつしか破られてしまう可能性もあり、あまり気持ちの良いものではありません。

YubiKey Neoを使用すれば、中に入れた秘密鍵をコピーすることはできなくなるので、比較的安全に持ち運ぶことができます。またパスワード(PIN)を3回間違えるとロックされてしまい初期化するしかなくなるので、総当たり攻撃で破られる恐れもありません。※

OpenPGPについて詳しくは FSFのページに載っています。

資料

YubiKeyのサイトですが、お世辞にも情報がまとまっているとは言えません。関連するページをまとめておきましょう。

これを全部読みましょう。というのは面倒なので、今回はThunderBirdを使って簡単にセットアップします。どうしてもコマンドラインでやりたい人はYubiKeyではないですが、 ここがとても参考になります。

使用ソフトウェアのインストール

PGPを有効化するためにYubiKey Neo Manager、キーを操作するためにThunderbirdが必要です。また、ThunderbirdkからPGPを扱うためにGPG4Winが必要です。それぞれ下記のURLからダウンロード、インストールします。
  • https://www.yubico.com/support/downloads/
  • http://www.mozilla.jp/thunderbird/
  • http://gpg4win.org/download.html

PGPの有効化

Neo Managerを起動し、「Change connection mode」ボタンを押します。

CCIDをチェックし、OKボタンを押します。
 
抜き差しするよう表示が出るので、そうします。

OpenPGPをクリックし、 Statusが1.0.10以降であることを確認します。それ以前は脆弱性があります。
 

Thunderbirdのセットアップ

ThunderBirdにEnigmailアドオンをインストールします。ThunderBirdを起動し、メニューからアドオンを選択します。

 「アドオン入手」画面でEnigmailを検索し、インストールボタンを押します。

PINの変更

Thunderbirdのセットアップが完了したら、「Enigmail」メニューのから「スマートカードの管理」を選択します。メニューバーが表示されていなければAltキーを押します。この時にNeo Managerは閉じていてください。エラーが出ます。

なお、スマートカードの管理が表示されない場合は、設定を選択し、「上級者向けの設定とメニューを表示」ボタンを押します。

YubiKeyの情報が出るので、「スマートカード」メニューからPINの変更を選択します。

この画面からPINと管理者PINを変更します。

初期PINは「123456」、初期管理者PINは「12345678」です。そんなことどこにも書いてないですが、初期PINについてはここに記述があります。

私はこれを知らずにロックされてしまい解除方法が分からず困りましたが、このページの通りリセットをすると解除されます。ただし、初期化され秘密鍵も消えてしまうので、注意が必要です。やり方はひたすらコマンドを入力するだけです。

「PINを変更する」を選択して OKボタンを押すと、下記のようなシンプルなPIN入力画面が表示されます。ここには先ほどの初期PIN「123456」を入れます。


次に新しく設定するPINを入れます。別に数字だけではなくアルファベットも使用できます。もう一度新しいPINの入力が求められますので、同じものを入力し、OKボタンを押します。


次に同様に管理者PINを入力します。これは普段は使用しないのですが、キーの生成時やPINブロックの解除時に使用します。管理者PINも通常のPINと同じように設定します。初期管理者PINは「12345678」です。

秘密鍵の生成

PINの変更が完了したら、 とうとう秘密鍵の生成にはいります。「スマートカード」メニューから「鍵の生成」を選択します。設定は特に無いので適当でよいですが、リセットや紛失に備え「カードの外部に鍵をバックアップする」を選択しておいたほうがいいと思います。その場合、バックアップを使用するとき用のパスワードを設定し、忘れないようにします。

有効期限はどうしましょう。ここに「一般的なお勧めは、決して期限の切れることのない主鍵とその主鍵で署名された複数の副鍵を持つこと」と書いてあります。よく分からないのでとりあえず無期限にしました。(手間がかかりるので。)

さて「鍵の生成」ボタンを押して、管理者PINとPINを入力すると鍵の生成が始まります。しばらく待ちましょう。先ほどの画面で設定したはずのバックアップ用のパスフレーズの設定画面が表示されます。細かいことは考えずにパスワードをもう一度設定します。

バックアップしたファイルが表示されるので、大切に保管します。たぶん「C:\Users\ユーザー名\AppData\Roaming\gnupg」にあると思います。最後に失効証明書の保存先を聞かれるのでどこかに保存して、秘密鍵のバックアップと一緒に外部のメディアに大切に保管します。

 暗号化メールを受け取る

さてここまで来たらPGPで暗号化したメールのやり取りを行うことができます。まず自分の公開鍵を相手に知ってもらう必要があります。方法は添付ファイルで公開鍵を送ってもいいし、鍵サーバーで公開して自分にメールを送ろうとしている人が誰でも暗号化できるようにしてもいいです。

添付ファイルで相手に送るには、メールを送るときに「自分の公開鍵を添付」というボタンが画面上にあるので、それを押してメールを送信します。

相手側で公開鍵の添付されたメールをダブルクリックすると、インポートするかと聞かれるので、「インポート」ボタンを押します。なお、相手側でも事前にThunderbirdとGPG4Win、Enigmailをセットアップしておく必要があります。

公開鍵を知らせたら相手側から暗号化メールを送ることができます。暗号化メールを送るには、先ほどの「自分の公開鍵を添付」ボタンの近くの鍵マークのボタンを押してから通常と同じように送信します。鉛筆マークの署名ボタンは秘密鍵を持っている人でないと使用できません。

暗号化されたメールが自分に送られて来たら、暗号化されたメールを見ようとすると自動的にPINを入力する画面が表示されます。YubiKeyに設定したPINを入力すると暗号化が解除されてメールを見ることができます。

なお、一度PINを入力するとPINを憶えてくれるため、しばらくは入力しなくてもよくなるのですが、YubiKeyを途中で抜き差しするとエラーが出て復号化できなくなります。その場合、タスクマネージャーでgpg-agent.exeというプロセスを終了してからPINを入力すると、再び復号化できるようになります。

他のPCで秘密鍵を使用する

せっかくYubiKeyで秘密鍵を持ち歩けるようにしたので、他のPCでも秘密鍵を使ってみましょう。他のPCで秘密鍵を使用するにはまず、先ほどと同じように公開鍵を他のPCでインポートする必要があります。添付ファイルで他のPCに送り、インポートしましょう。

インポートしたらYubiKeyを他のPCに接続します。ドライバーがインストールされるので、インターネットに接続してから作業を行います。

ドライバーのインストールが終わったら、コマンドプロンプトを表示し、「gpg --card-edit」というコマンドを入力します。「General key info...:」のところに自分の公開鍵が表示されたら成功です。Thunderbirdを開き、暗号化されたメールを開くとPINが聞かれ、復号化することができます。
OpenPGPのキーがあれば、ファイルの暗号化や署名、SSHのキーとしても使用できます。色々と便利になると思います。問題はOpenPGPを使用している送り先がいないことでしょうか。

おわり

※とはいえYubiKeyのハードウェア的な耐タンパ性はどうか知らない。

0 件のコメント:

コメントを投稿