米国オンラインバンキングのフィッシング対策

The Web Application Security Consortium (WASC)という団体のMLをRSSで購読している。久々にたまっていた記事を見ていたら、バンクオブアメリカBoA、バンカメ)のオンラインバンキングのフィッシング対策(Sitekeyという)の話題で盛り上がっていた。

Sitekeyの仕組みを簡単にいうと、ログインIDをユーザが入力すると、そのユーザがあらかじめ登録した合言葉(画像と文字)を画面に表示する。ユーザはそれを目視して、自身がアクセスしているサイトが確かにBoAのサイトであることを確認し、その後にパスワードを入力するというもの。昔イーバンクが導入して、高木さんにつっこまれていたものを彷彿とさせるが、それとは少々違う点がある。

違いは、Sitekeyでは、合言葉を登録する際に、クライアント(ブラウザ)に永続的なcookieを仕込むこと。ログインの際には、ログインIDとcookieをサーバ側で検証して、不正な場合は合言葉を表示しないようになっているようだ。なお、ここで使われるcookieは、通常のcookieではなく、Flashcookieで、IEのインターネットオプションの「cookieの削除」では削除できないものらしい(私は使ったことがないからよく判らない)。

ユーザが、合言葉を登録したのとは別の端末から利用する際には、当然cookieBoAサーバに送られない。その場合は、パスワードリマインダなどで使われるような、「秘密の質問と回答」への入力が求められ、正しい回答と引き換えに「合言葉」が表示される。

MLでは、このSitekey方式が、中間者攻撃を利用したフィッシングにどの程度の耐性があるか、という点が議題の中心となっていた(でも、BoAのアカウントを持っている人がMLのメンバにはいないようで、方式を推測しながら議論が進む)。議論の中では、以下のような話が出ていた。

  • PASSMARKという製品が利用されている(ZDNETの記事)。
  • 2ファクター認証である。BoA側は、従来のパスワードに加えて、cookie又は秘密の質問への回答でアクセス者を特定する。
  • 秘密の質問と回答は、イーバンク方式と同じで、中間者攻撃によるフィッシング(プロキシタイプのフィッシング)に弱い。
  • cookieは、秘密の質問への回答とはことなり、機械(PC)が自動的にBoAサーバへ送る。cookieは、指定されたドメイン/パスにしか飛ばないため、BoAドメイン外(一文字違いのドメインを含む)のプロキシタイプのフィッシングサイトには送信されない。
  • SSLなら、DNSキャッシュやhosts汚染に弱いし、cookie盗聴の恐れもある。SSLであっても、ユーザがブラウザの警告(サーバ証明書がおかしいよという警告)を無視したら意味が無い。
  • 多くのユーザは、合言葉が表示されなくても気が付かないかもしれない。でも、慎重なユーザだったら気が付くだろう。
  • cookieの値は固定すべきでない。あるいはチャレンジ-レスポンス的な方式だとよい。
  • FLASHcookieって安全なのか?

全体として、簡単な割りには効果的(フィッシング対策として)という意見が比較的多かったように思う。私の感想も大体同じだが、以下に何点か追加したい。

まず気になったのは、FLASHcookieって、どんなもんだろうかということ。クロスドメインの問題や、簡単に盗まれるような脆弱性があれば意味が無い。また、ユーザが自身のブラウザのcookieを参照、消去したり、cookieの受け入れ可否を設定できないとしたら、それはそれで別の問題(プライバシ上の)があるように思う。時間を見つけて調べよう。
次に、Sitekeyが従来のフィッシング対策にとってかわるものなのかということ。従来言われているフィッシング対策は、A.SSLサーバ証明書の(証明書としての)正当性を確認(期間、発行元の信頼性、発行先ドメインとアクセス先の一致)、B.ユーザが意図したドメインにアクセスしているかを確認、というものだと理解している。

Aは、アドレスバーにhttpsではじまるURLが表示されていて、ブラウザが証明書に関するセキュリティ警告を発していないことを確認すればよい。他にもやり方はあるが、いずれにせよそれほど面倒ではない。一方Bは、一文字一文字ドメイン名を確認しなければならないので、面倒だし、紛らわしいドメインでは間違える可能性がある。

Sitekeyは、cookieが指定されたドメイン/パスに送られる機能を利用して、Bの面倒な作業を機械化するものといえるだろう。単純な見間違いがないため、従来の目視による作業よりも安全性は高い。セキュアフラグONのようにcookieSSLでしかサーバに送信されないのであれば、Aについてもユーザの作業が軽減される。ユーザは、ブラウザがセキュリティ警告を発しないことと、あらかじめ登録した合言葉が表示されることだけで、フィッシングサイトでないことを確認する事ができる。ただし、全てにおいて、FLASHcookieの安全性に依存することになる。

また、気になるのは、cookieが使用できない時に用いられる、秘密の質問と回答だ。秘密の質問と回答に答えると、合言葉が表示されてしまう。これは、cookieが使用できない時の安全性を高めるように思えるが、実際のところ意味が無い。意味が無いばかりか、二つの理由で有害といえる。一つは、イーバンクにおいて高木さんが指摘したように、合言葉が表示されることで、ユーザがフィッシングサイトではないと錯覚する可能性があることだ。もう一つは、秘密の質問への回答という、一般的に余り秘密性が確保しにくい情報で、合言葉を表示してしまうことだ。攻撃者は、秘密の質問への回答に成功すれば、合言葉を入手できてしまう。それは合言葉の秘密性を、秘密の質問への回答の秘密性のレベルまで下げてしまうということだ。

最後に、本題とは直接関係無い話を少し。BoAのサイトを見ると、ログインIDをサイトのトップページ(非SSL)で入力するようになっている。しかも、日本のポータルサイトによくある「ログインIDを記憶する」みたいなチェックボックスが堂々とついている。日本のオンラインバンキングでは、考えられない作りだ。オンラインバンキングサイトにも国ごと(?)に違いがあることが、私にとってはちょっとした驚きだった。