パスワードは全て異なるものにするしかない
目次
共通パスワードは恐ろしい
1年くらい前から、全てのウェブサービスのパスワードをユニークな(=全て異なる)パスワードにしました。100以上の利用サービスがあるので、達成するまでは手間でしたが、達成後はかなりの安心感を得ることができました。
どうやったのかは後で説明しますが、なぜそうしたかというと、あるとき、同じパスワードを使い回すのが恐ろしくなったんですよね。
どういうことかというと、「サービスA」「サービスB」があるとします。パスワードが同じだと、サービスAのパスワードが流出したときに、サービスBにまで被害が広がる恐れがあります。流出しなくても、サービスAの管理者が悪意を持っていれば、サービスBにアクセスできてしまします。
これを現実世界の鍵に例えると、「家の鍵と、貸しロッカーの鍵が同じ」みたいなものです。こう思うとヤバいでしょ?家の鍵穴は秘密でも、貸しロッカーには管理者が別にいて、信用できるかどうかは謎です。
全ての管理者を信用してはいけない
正確な出自は覚えてないので話半分に聞いてほしいのですが、とあるウェブサービスの管理者が、「試しにユーザーDBを使って某大手SNSにログインを試してみたら、半分以上通った」という噂を聞きました。えー、行為も結果も含めてまじで?って感じですよね。でも普通にあり得ると思います。人間だもの。
そもそも、そんなことやるなよ!パスワードを平文で保存しとくなよ!とも思うわけですが、結局、生(なま)パスワードが保存されているのか、されていないのか、適切に扱われているのかなんて、利用者にはわからないわけですよ。
よくサービス開発の基本として、生パスワードは特別な事情が無い限りは保存するなという教えがありますが、これがいくら正しくて、どんなに周知されていても、本当にそうされているかどうかなんて、ソースコードを開いてみない限りはわかりませんからね。
全てのパスワードをユニークにすると、もしものときの被害が最小限になる
以上のことから、利用者側は「パスワードは平文のままで保存されている前提で行動する」のが合理的です。そうした場合、もしものときの被害を広げないための有効な自衛手段は、全てのサービスのパスワードをユニークにすることしかありあせん。
もちろん一意にしたところでそのサービスのパスワードが漏れることはあり得るわけですが、不正アクセスされるのはそのサービスだけになるので、被害が最小限に抑えられるのです。これは大きなメリットです。
重要度別パスワードは実情の変化に追随できない
一意にするまでは10近い種類のパスワードを重要度別に分けていました。ですが、パスワードを決めるのはサービス利用時ですし、そのとき重要じゃなくても、あとから重要になったりするのですよね。
僕の場合、twitterなんかがいい例でした。DMなんてそんなに使わないだろうし、TLは公開情報だけだから、低重要度なパスワードを選択していましたが、DMが意外に使われまくって、合わなくなりました。
KeePass(キーパス)でランダムでユニークなパスワードを自動生成、一元管理
さて実際に全てユニークにするにはどうしているかというと、KeePassを使ってランダムなパスワードを自動生成し、KeePassのDB(データベース)機能で管理しています。KeePassのDB自体は長〜いパスワードで暗号化されています。
DropboxにDBファイルを入れておけば、スマホとの連携も容易です。
一元管理は、適切に扱えば低リスクで抑えられる
ちなみにDBファイルとパスワードが漏れたらおしまいですが、信用できるかどうかわからない管理者に共通パスワードを預けて、大小様々なリスクを撒き散らすよりはいいと思います。
というかまず、このDBファイル自体へアクセスするまでに高いハードルがあります。アクセスできたとして、ファイルの暗号化を突破しないといけません。そこまでして僕個人を攻撃しようとする人は、いたとしたらそれはそれで驚きですが、普通はよっぽど重要な人物でなければ攻撃されないでしょう。
ここはもう利便性とのトレードオフなので、TrueCrypt等の仮想暗号化ドライブを併用したりしてさらに暗号化をかけてもいいと思います。あと、お金が絡むような超重要なパスワードに関しては、DB+記憶という合わせ技もアリですね。マトリクス表が配られるオンラインバンクなら、マトリクス表はDBには入れない、という選択も可能です。このあたりは工夫でどうとでもなると思います。
共通パスワードに不安がある方はぜひどうぞ。やりきると気持ちのよいものですよ。
( 写真素材 足成:鍵穴 http://www.ashinari.com/2007/06/01-002264.php )
ツールに頼るといざというときに使えないと困るので、
私の場合は法則を作って覚えています。
例えばサイトのタイトルやURLから数文字拾ってきて、
それに自分の覚え易い固定の文字列を付け足すとか。
さらに大事なサイトだったらそれを二回繰り返して数字を付け足すとか。
[...] パスワードは全て異なるものにするしかない [...]
[...] この記事にある@akiyanさんの例え [...]