暗号ファイルのススメ
山本和彦
IIJ 技術研究所
執筆 2006年1月24日
更新 2006年7月28日
パスワードの管理
ユーザ認証の現実的な方法として、パスワードが普及している。あるシステムがどんなに安全であるよう設計されていても、ユーザが安易なパスワードを選べばもともこもない。一番のセキュリティ・ホールはユーザだということを自覚し、ユーザは安全なパスワードを選ぶ習慣をつけるべきである。
パスワードにどのような文字列が許されているかはシステム次第だが、一般的に以下のようなパスワードが安全であるとされている。
- 英数字、記号を組み合わせてある
- 十分に長い (8 文字以上)
- 覚えやすい
- すばやく打てる
基本的に推測可能なパスワードは、悪いパスワードである。自分に関係ある文字列や数字は論外。なんらかの辞書に載っている単語も危険だ。世の中には、地名やアイドル名といった驚く程さまざまな辞書が存在する。なにかの辞書に載っているパスワードは、あなたが思うよりも、はるかに簡単に推測されてしまう。
短いパスワードは、総当たり攻撃、すなわちすべてのパターンを試す攻撃の標的となる。最低でも 8 文字は必要だ。パスワードは紙に書き留めてはならない。誰かに見られる可能性があるからだ。パスワードは暗記しなければならないが、推測が難しく長いパスワードは覚えにくい。
そこで昔から、「基本となる単語を選び、それにでたらめな数字や文字をうまくちりばめる方法」が推奨されている。
悪い人にとって、パスワードを盗み取る最も簡単な方法は、パスワードを入力する人の後ろに立ち、肩越しに覗き込むことだ。この対策としては、後ろに人がいないことを確かめるのはもちろんだが、盗み見られても覚えられないぐらい速くパスワードを打ち込めばよい。パスワードは素早く打てるように練習しておこう。
インターネット時代のパスワード管理
少し前までは、コンピュータ環境を利用する場合、せいぜい数個のログイン・パスワードを覚えればよかった。しかしながら、現在ではインターネットでさまざまなサービスが提供され、たくさんのアカウントのパスワードを管理する必要がある。
すべてのアカウントに対し、よいパスワードを考えて覚えるのは、もはや無理である。しかしながら、すべてのアカウントに対し、一つのよいパスワードを使い回すのは、直感的に危険であると分かる。
インターネット時代のパスワード管理としては、以下のような方法が現実的だろう。
- 一つだけよいパスワードを考え覚える (マスター・パスワード)
- サービスのパスワードは、サービスごとに、でたらめな文字列を選ぶ
- サービスのパスワードは、ファイルに保存し、マスター・パスワードで暗号化する
- サービスのパスワードを使うときは、暗号ファイルをマスター・パスワードで復号化する
現在では、ノートブックを持ち歩くことが多く、それだけに盗まれる可能性が高い。上記のような暗号の仕組みを使っていなくても、盗まれたノートブックはログイン・パスワードで守られているから大丈夫であると思っている人も多いだろう。しかし、たとえばハードディスクを外して、他の PC につなげば、ハードディスク内のファイルは簡単に読むことが可能だ。だから、大切な情報は暗号化しておく必要がある。
暗号ファイル・システム
MacOS X や Windows 2000 以降には、暗号ファイル・システムの機能が提供されている。マスター・パスワードは、ログイン・パスワードである。すなわち、ファイル・システムの暗号化を指定したファイルは、暗号化された状態になっており、ログインし暗号化されているファイルを利用しようとすると自動的に復号化され、平文ファイルと同様に取り扱える。
暗号ファイル・システムの機能を有効にしておけば、安心してブラウザやメールリーダにパスワードを覚えさせてよい。
MacOS X
MacOS X の暗号ファイル・システム機能は、FileVault と呼ばれている。FileVault は、ユーザのホームディレクトリ以下全体を暗号化する。
FileVault では、パスワードを2つ設定できる。一方がユーザのログイン・パスワードであり、他方は「万が一のためのパスワード」である。MacOS では、この「万が一のためのパスワード」をマスター・パスワードと呼んでいる。本稿で使っているマスター・パスワードと混同しないように。
FileVault の使い方は以下の通り。「アップルメニュー」→「システム環境設定」→「セキュリティ」とたどれば、FileVault の設定画面が現れる。ここで、FileVault の機能を有効にすると、いくつかの情報を入力するための設定画面に移る。設定がすべて終了すると、暗号化が始まり、数十分何もできなくなる。暗号化が終われば、ログイン画面から再スタートとなる。
ちなみに、FileVault は、ログイン・パスワードとマスター・パスワードで暗号化されたディスクイメージとして実現されている。他のユーザでログインして見れば、そのディスクイメージを見ることができるだろう。ダブルクリックして、どちらかのパスワードを入力すれば、デスクトップにマウントされる。
ちなみに、端末からログインしていない状態で、レモートから ssh でログインしても、ホームは暗号化されたままなので、注意が必要だ。
Windows 2000 以降
Windows の暗号ファイル・システム機能は、EFS(Encrypted File System)と呼ばれている。EFS では、ファイルやディレクトリごとに暗号化できる。使い方は、XPのサポートページや技術文書を参照のこと。なお、XP Home Edition では、この機能は提供されていない。
EFS は、Advanced EFS Data Recoveryというソフトで復元できることが知られている。そのため、過度に信用しない方がよいかもしれない。
暗号ファイル
暗号ファイル・システムが提供されてない OS では、暗号ツールを使ってパスワードを保存するファイルを暗号化するとよい。暗号ツールの決定版は、GnuPGである。
実際に GnuPG を使ってみると、意外と面倒だと分かる。たとえば、暗号ファイルに新たにあるサービスのパスワードを追加する場合を考えてみよう。
- 暗号ファイルをマスター・パスワードで復号化し、平文ファイルを取り出す
- エディタで平文ファイルへパスワードを追加する
- 平文ファイルをマスター・パスワードで暗号化することで暗号ファイルを作り、古い暗号ファイルを上書きする
- 平文ファイルを削除する
一番やりそうなのは、平文ファイルを消し忘れることである。これでは、まったくプライバシは守られていない。
そこで、著者は Emacs に対し、上記のような手順を自動的に実行する機能を作成した。拡張子 ".gpg" を持つ暗号ファイル(あるいは新規のファイル)をあたかも平文ファイルのように取り扱える。平文ファイルとの違いは、開くときにマスター・パスワードが必要になることである。保存の際は、マスター・パスワードを入力する必要はない。パスワードは、Emacs が利用するメモリー上に保存されているからである。
復号化された平文ファイルは一時的に、暗号ファイルと同じディレクトリに書き込まれる。残念ながらマスター・パスワードを適切に保護しながら、作業をすべてメモリー上で済ませる方法は、著者の知る限り存在しない。そこで、暗号ファイルの保存先として NFS などのネットワーク・ファイル・システムを利用してはならない。
この機能を実現した Emacs Lisp は、alpaca.el(ver 0.13)である。("gpg.el" から名前が変わった。)ファイルの先頭をよく読んで、インストールして欲しい。