Bookmark による Two-Factor 認証: BeamAuth

OpenIDの一つの弱点として、Phishing (フィッシング)の問題がある。OpenIDでは、認証に認証サーバに飛ぶので、正規サイトに飛ぶ代わりにフィッシングサイトに飛ばされてID/Passwordを詐取されるという問題だ。

これに関しては、Microsoft と Verisign が協調して Cardspace ベースのソリューションを提供しようとしているが、もっとずっとライトウェイトな方式として、Bookmark を使った Two-Factor Authentication も提唱されている。代表的なものが、BeamAuth だ。

BeamAuth を使う場合、ユーザはまず正しいと確認されているページで次のようなブックマークをインストールする。

http://beamauth.org/login#ben@adida.net|8b7c8xcv882340235098142308

上記で、http://beamauth.org/login は、OpenID のAssertion Provider URL である。つまり、Relying Party のサイトにログインしようとすると、通常ここに飛ばされて、Username と Password を入力するわけだ。

ところが、BeamAuthを使うときは、ここでユーザー名・パスワードを入力する代わりに、このブックマークをクリックする。上記のブックマークをよく見て欲しい。Assertin Provider の URL の後ろに #で始まる文字列が記入してある。これは、URLの世界で Fragment と呼ばれるものだ。これをクリックすると、正しいサイトにいるときには、実際にブラウザはデータを再取得しに行かず、URLフィールドだけが更新される。したがって、ページ自体は更新されないが、そのページ内のJavascript は、このURL Fragment にアクセスできるようになる。このJavascriptは、このURL Fragment を取得して、それをキーとしてHMACを計算、ユーザが入力した Username/Password と共にサーバに送る。サーバはこのHMACが無ければ認証はしないように設定する。

一方、間違ったサイト=フィッシングサイトにいるときには、正しいサイトにリダイレクトされてしまう。

つまり、フィッシングを2つの方法で防ごうとしているわけである。

(1)ユーザがブックマークをクリックして認証する習慣が付けば、フィッシングサイトに情報を入力することはなくなる。
(2)もしもユーザがだまされてフィッシングサイトにパスワードを入力したとしても、フィッシングサイトは上記HMACは取得できないので、結局 Assertion の発行を受けることができず、したがって、Relying Party のサービスを利用することもできない。

OpenID Server 側に若干の手を入れなければならないが、クライアントにはブラウザしか必要ないので、かなりお手軽な部類に入る方法といえるだろう。

詳細は英文だが、Benlog で紹介されている。Demoサイトへのリンクなどもあるので、試していただきたい。

と、ここまで書いて気になることが出てきた。

これ、マシにはなるが、依然としてフィッシングは可能である。
フィッシャーがJavascriptを使ってBookmark を盗み出すことなども可能だからだ。Passmark などとの組合せは依然として必要だろう。と、すると、これって役に立ってるんだっけ???

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください