オルタナティブ・ブログ > 一般システムエンジニアの刻苦勉励 >

身の周りのおもしろおかしい事を探す日々。ITを中心に。

「あなたのパスワードはoxoxです」と親切に教えてくれるサイトは危険?

»

主に海外で利用されているRockYouというサービスで大規模な情報漏えいが発生したようです。

3200万人の個人情報漏洩―RockYouのハッカー侵入への対応は最悪(TechCrunchJapan)

Webサイトにログインするためのパスワードを忘れてしまった場合を想定し、だいたいのサイトが「eメールで通知」という機能を備えていることと思います。その機能を使ってパスワードを復旧させようとすると、多くの場合で「仮パスワードを発行しました」というメールが送付されます。その仮パスワードを使ってログインをすると必ず新しいパスワードを設定するように求められるという流れであるものが多いでしょう。

知っている人には基本中の基本ですが、これはサーバサイドに平文のパスワードを置かないようにするという原則に基づいた処置です。平文というのは人間にとって読める形です。もしハッカーがサーバに侵入してパスワードを保存しているデータベースまでたどりついたとすると、今回の事例のように大量のIDとパスワードが盗まれてしまいます。

それにより何か買い物をされてしまうなどの直接的な被害も発生しますが、先日のbit defender社の皆様も危惧されていたとおり、その本人になりすまして友人をひっかける攻撃も発生する可能性があります。

それを防ぐためにはパスワードをハッシュ化して保存することが原則となります。これにより忘れたパスワードそのものを通知することはできなくなりますが、通常のパスワード認証の処理は行えますし、万一ハッカーに侵入された際もパスワードを盗まれる恐れがなくなります。ハッシュ化されたパスワードはパスワードダイジェストと呼ばれます。

もちろん、パスワードを管理するDBに書き込む権限が低く設定してあったり、そもそもハッカーに管理者権限を奪取されてしまっているような場合には効果が発揮されない可能性もあります。ハッシュ値を出すアルゴリズムが単純だった場合、ハッカーが自分の好きなパスワードのハッシュ関数を計算して(たとえばoxox→123abcとすると)全員のパスワードダイジェストを123abcで上書きをしてしまうと全員のIDのパスワードがoxoxになってしまいます。よく使うパスワードのランキングというのはいろいろなところで公開されていますので、例えば1万人分くらいのパスワードダイジェストを手に入れたらランキングを作成し、よく使われるパスワード上位100のハッシュ値を計算したものと突き合わせることでsaltを(特にsaltを使っていないということを)特定できるかもしれません。何らかのアルゴリズムに従い、入力される文字列ごとにsaltを変更すればこの推測方法も無効になります。

また、元となるパスワードがわからなくてもハッシュ値が一致するまで総当りで適当な単語のハッシュ関数を計算し続けることでも元のパスワードを探し出すことができますし、最初から膨大な単語のハッシュ値を計算しておいたレインボーテーブルというデータも存在します。ここからハッシュ値を検索すれば元のパスワードを引き当てることもできてしまいます。レインボーテーブルに載らないような長いパスワードを設定していた場合は総当りで衝突を探さねばならなくなり危険性が大きく減少します。

また、googleで検索するとインターネットに公開されたレインボーテーブルがヒットしてしまうことがあります。レインボーテーブルは大きなデータですがネットから探せるとなればこれは恐ろしいことです。しかしgoogleで検索するにせよ、直接探すにせよ、実害が生じるのはmd5というハッシュ関数をsaltなしで利用した場合がほとんどであると思われます。saltを適切に使用している場合、コンパイルされたソースからハッシュ値を求める計算のアルゴリズムを特定するのは難しいですから、パスワード盗難の被害は遠のきます。

例)pandaをこちらのサイト(http://tools.fictionlife.com/md5/)でmd5ハッシュ化するとce61649168c4550c2f7acab92354dc6eとなります。これをそのままgoogleで検索するとpandaであることが簡単にわかります。

MD5破りにGoogleを活用

このように、パスワードダイジェストは侵入に成功したハッカーによる成りすましなどの被害を完全に防ぐものではありませんが、大量のパスワードが盗まれるまでの時間稼ぎにはなります。DBの権限設定、ハッシュ関数の使用方法などの組み合わせが適切に運用されていればかなり効果的に被害を抑えることができるでしょう。

(なおパスワード変更時に「このパスワードは最近使いました。違うパスワードを設定してください」と言ってくるサイトがありますが、あれもハッシュ関数で実現することができますので必ずしも平文を保存していることの証拠にはなりません。)

しかしながら、我々はわざわざ仮パスワードを発行するサイトを不便に思い、実パスワードを教えてくれるサイトを便利に感じてしまうものです。それでも今回のようなID/パスワードの盗難事件の恐ろしさを目の当たりにすると「実パスワードを教えてくれるサイトは絶対に使いたくない」と思います。

ただし一般の人からすれば、そもそもハッシュ関数を理解していないと平文のパスワードを知らずにパスワード認証を行う方法があることなど思いつきません。また、実パスワードを表示して教えてくれるサイトが危険であるということにも気づきにくいものと思います。こういったところまで一般のユーザが理解把握することは非常に難しいことですので、セキュリティに詳しい人物がインターネットで脆弱性を発見するたびに指摘して穴を塞ぐ努力をするということが大切であるように思います。googleのページランクのように、セキュリティソフトがソーシャルメディア的に「このサイトは実パスワードを保存しているっぽいから危ない」ということまで教えてくれると嬉しいですね。

Comment(0)