Password生成(後編)

いろんなサービスを利用しようとすると困るのがパスワード。ついつい同じものを使い回してはいませんか? これだと万一パスワードが漏れる(破られる)と自分が使っている他のサービスも全部やられてしまう危険性が高い。かといって、サイト毎に凝ったパスワードを考えると忘れてしまう。どこかに記録しておいてもいいが、記録が漏れると全滅。

そこで破られにくいパスワードを1つ用意して、あとはシングルサインオン(SSO:Single Sign On)で共用するというのが比較的よく語られる解決法だと思う。企業内だと、ActiveDirectoryと連携したシングルサインオン(SSO:Single Sign On)ソリューションがあったりする。インターネット上だとOpenIDとかがあるけど、そもそもサイト側がOpenIDを採用してくれないことにはユーザーは楽にはならない。いまどきだと、PCに仕込まれた標準的なICタグリーダーにケータイかざしてサッと認証するような方法も考えられるが、これは標準化がもっと進む或いはデファクトが確立されなければ一般的にはならないだろう。

そこで、自衛のためにPwdHash。これはブラウザ(FirefoxまたはIE6/7)で使えるブラウザ拡張だ。ヒント文字(ユーザーはこれ1種類だけ覚えていればよい)を与えると、ドメイン名・サブドメイン名を判断して、パスワードを画面上で生成してくれる。
PwdHash:
Users tend to use a single password at many different web sites. By now there are several reported cases where attackers breaks into a low security site to retrieve thousands of username/password pairs and directly try them one by one at a high security e-commerce site such as eBay. As expected, this attack is remarkably effective.
例えば、ヒント文字を"xpotechi"とする。生成されるパスワードは以下のようになる。
  • www1.a.com → sCMANDa9sfBI
  • www2.a.com → sCMANDa9sfBI (サブドメインが同じなのでパスワードは同じ)
  • www1.b.com → UlYcXlFXA7S2 (ドメイン名が異なるのでパスワードは変わる)
という具合だ。ヒント文字かどうかは、「カーソルがパスワード欄にあり」且つ「@@または、F2キーに続いて入力」したかどうかで判定されるようだ。パスワード欄に入力された文字がヒント文字だと、カーソルが次の欄に移った(タブキー等でフォーカスを移動した)時点で、ヒント文字が上の"sCMANDa9sfBI"のような生成パスワードに置き換わる。ただ、パスワード欄は*(asterisk)文字なのでそのようなことが行われたかどうか、一見してわかりにくいのが難点といえば難点。

利点を再確認すると、
  • ユーザーはヒント文字(上の例ではxpotechi)さえ覚えていればよい
  • ドメインが変わったら自動的に別のパスワードになるので、漏洩時に一挙全滅とはならない
となる。尚、ブラウザ拡張が使えない場合は、 Stanford PwdHashサイトで手動で生成できる。

pwdhash

いずれにせよ、ちょっとわかりにくいと思うので、上記の手動サイトでいろいろ試してみると動きがわかると思う。

ブラウザ拡張のダウンロードはこちら。
技術的に詳しく知りたい方は、日本語資料として、産業技術総合研究所(独立行政法人)のTetsuji Takadaさんという方のResearch Survey and Memoがあるので、そちらが参考になると思う。

後編終わり。
次回は非ITネタで。