この記事はSLP KBIT Advent Calendar 2014およびセキュリティ Advent Calendar 2014の5日目の記事になります。
リスト型攻撃というものをご存じだろうか。
これは、様々なWebサービスにおいて、多くの人がパスワードを使い回していることを利用した攻撃手法である。
あるWebサービスから流出したユーザ名とパスワードを使って他のWebサービスにログインし、情報を抜き取ったりアカウントを乗っ取ったりといったことができる。LINE、Dropbox、Google、クロネコメンバーズなどといった、よく使うサービスで実際に起きている。
一般的に、パスワードについては次のようなことが言われている。
- パスワードは8文字以上で、英数字の混在するものを使用する。
- 辞書に載っている単語(Password)や、数字の連番(12345678)、キー配列(qwertyui)等を設定している人が非常に多く、被害に遭いやすい。
- Webサイトごとに違うパスワードを使用する。
しかし、
2ZczQ8rB
gEJn09yL
lD0V8Tug
jShNS6q3
2I4VusIs
などというパスワードを延々と覚えるのは現実的に不可能である。
そこで、リスト型攻撃を回避しつつ、楽にパスワードを運用する方法として、以下の3つを考えた。
- あるサービスのアカウントで他社のサービスにログインする「ID フェデレーション」
- すべてのWebサービスで異なるパスワードを使用し、一元管理する「パスワード管理ツール」
- パスワードとは別にもう一つトークンを使用する「二段階認証」
1. ID フェデレーション
Webサービスを使っていると、「Twitterでログイン」「Facebookでログイン」といった、他社サービスでログインできるボタンを見かけることはないだろうか。たとえば、adventar.orgのログインも、こんな風になっている。
「WebサービスA」にTwitterでログインしてみる。すると、Twitterアカウントを使用する権限を確認する画面が表示される。
丸で囲ったところを見て欲しい。
ログイン先のWebサービスAは、Twitterのパスワードを見ることができないと書かれている。WebサービスA側には、「Twitterに正しいIDとパスワードでログインした」という情報だけが渡る。これで、たとえWebサービスAが標的型攻撃に遭おうが、パスワードは保存されていないので漏洩の心配はない、という寸法である。
もっとも、Twitterから情報が漏洩した場合はすべてのサービスにアクセスし放題になってしまう可能性がある。ID フェデレーションに使用するアカウントのパスワードは厳重に管理しよう。とはいえ、アカウントが2〜3個なら、かろうじて覚えられるのではないだろうか。
2. パスワード管理ツール
上でも言ったように、複雑なパスワードを延々と覚えるのは現実的に不可能である。そこで、まずこれらのパスワードをすべてツールに登録してしまう。Webサイトログイン時にはツールにマスタパスワードでログインし、サイトのパスワードを呼び出して使用する、というのがパスワード管理ツールである。
「1Password」のデモ画面を開いたところ
登録したサイトで拡張機能のボタンを押すと、
ワンクリックでログインができる。
パスワード管理ツールは大きく分けて2種類がある。
1つめは、どこかのサーバにパスワードを預けるクラウド型のものである。製品としては、LastPass、TrendMicro パスワードマネージャ等がある。また、Firefoxには、ブラウザに記憶させたパスワードにマスタパスワードを設定し、同期できる機能が搭載されている。
2つめは、ローカル環境にパスワードを保存するローカル型のものである。製品としては、1Password、KeePass(オープンソース)などがある。1Passwordは、Dropboxなどで同期をさせることで、クラウド型のように使うこともできる。また、Linux系のKDEデスクトップ環境には、KDEウォレットという機能が搭載されている。
クラウド型は、自分の環境が壊れてもパスワードが消えることはない。また、自分のものではないパソコンでサービスにログインする場合、クラウドにログインしてパスワードを確認することもできる。しかし、仮にサービスが攻撃に遭った場合、パスワードが盗まれてしまう可能性がある。
ローカル型では、ローカルで運用している限り漏洩の心配はない。1PasswordのデータフォルダをDropboxで同期している状態で、Dropboxのアカウントが盗まれた場合が考えられるが、パスワードのデータは暗号化されているため、マスタパスワードが漏れない限りは開くことはできないようである。しかし、大学のパソコンを使うときは不便であるし、同期せず使っていて環境が壊れたらすべてのパスワードの再設定を余儀なくされる。
3. 二段階認証
二段階認証は、パスワードの他にもう一つトークンを要求することで、パスワードが突破されても情報を守ることができる。トークンには、主にワンタイムパスワード(一度しか使わないパスワード)が用いられる。SMS等でワンタイムパスワードが送られてくるもの、USBのドングルを使うものなどがあるが、ここではAuthyというアプリを紹介する。
Authyとは、Googleの二段階認証システムを利用したアプリである。Google謹製のアプリと比べて見やすさが格段に違うほか、複数端末の対応、指紋認証(iOSのみ?)等の便利な機能がついている。英語だが、中学英語がそこそこできれば十分読めるのでご心配なく。
登録方法は週アスPlusがまとめてくれているので割愛する。
http://weekly.ascii.jp/elem/000/000/229/229396/
使い方は、2段階認証を要求されたら、
のこれだけ。対応Webサイトもそれなりに多く、WordPressにもプラグインを組み込めば対応ができる。
これなら、割と面倒な二段階認証も続けられる…自分は続けられているが、授業中に携帯を取りだしてパスワードを確認するのは結構面倒である。
まとめ
ここでは3つの方法をあげた。当然、100%の対処法はないし、セキュリティを厳しくするほど利用が面倒になってくる。自分は、主に2と3を使い、公共のパソコンで使う可能性のあるアカウントには十数桁のパスワードと2段階認証を設定し、自分の環境でしか使わないアカウントには何十桁というパスワードを設定している。パスワードの使い回しは避け、自分の利用状況に合わせて、上であげたようなサービスを使い分けてみてほしい。