Skip to content

Instantly share code, notes, and snippets.

@mala
Created March 7, 2013 15:38
Show Gist options
  • Star 21 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mala/5108900 to your computer and use it in GitHub Desktop.
Save mala/5108900 to your computer and use it in GitHub Desktop.
攻撃者が生パスワードまず復元できないだろという状況でも全ユーザーのパスワードリセットしたほうが良い10の理由

Evernoteの話ですけど。「強固なパスワード暗号化技術を採用」していて、攻撃者がまず生パスワード復元できないだろう、という状況であっても、パスワードリセットはしたほうがいい。

2011年のLastpassのケースでは、強固なパスワード使っている人は大丈夫だけど、そうじゃない場合はブルートフォースでマスターパスワード取得されうるということを発表していた。これはハッシュ値生成のアルゴリズムが、既知 or 推測しやすい or ソースコードも含めて漏洩している、という時にこの状態になる。

"If you have a strong, non-dictionary based password or pass phrase, this shouldn't impact you - the potential threat here is brute forcing your master password using dictionary words, then going to LastPass with that password to get your data. Unfortunately not everyone picks a master password that's immune to brute forcing."

で、Evernoteのケースは「弊社は強固なパスワード暗号化技術を採用しておりますが」と言っている。

ソースコード含めて漏洩していることの確信が持てる場合は「弊社は強固なパスワード暗号化技術を採用しておりますが」なんてことは書かないだろう。弱いパスワードを使ってる場合は容易に復元しうるので急いで変更してくださいとか他のサービスのパスワードも変更してくださいとか、まあ要するに、もっと危機感のある書き方をするだろう(と思う)。侵入されたっていうんだからそりゃ最悪のケースは想定すべきだけど、どういう手口で何が取得され得たのか、はある程度はっきりしていて、ソースコード漏れてるのかと言われたら「可能性は否定できないが極めて低いと考えている」といったステータスなんじゃないか。

md5使ってるっつったって、それは md5(large_random_value + user_id + password) かもしれないし md5( md5("PhilLibin" + password) + large_random_value + password + "PhilLibin" + md5(password + "PhilLibin") ) かもしれないわけですよ。

ハッシュ化アルゴリズムが攻撃者に知られているかどうかで、どの程度のリスクがあるのかが変化する。

アルゴリズムが漏れていない場合には、そもそも辞書攻撃もブルートフォースアタックも出来ない

  • 強固なパスワードを使っている: 影響ない
  • ブルートフォースで突破されうる長さである: 影響ない
  • 極めてよく使われるパスワードである: 影響ない

アルゴリズムが漏れている場合には

  • 強固なパスワードを使っている: いずれにせよ影響ない
  • ブルートフォースで突破されうる長さである: メールアドレスが@whitehouse.govだったら心配したほうが良い
  • 極めてよく使われるパスワードである: 早くパスワード再設定した上で、同じメールアドレス/パスワードを使っているサービスも変えたほうが良い(そもそも自分の情報が漏洩対象に含まれていないかもしれないが)

ということになる。この状況で全ユーザーのパスワードリセットを要請するのは妥当だと思う。なぜかというと

    1. パスワード勝手に変えられたっぽいんだけど、って問い合わせがあった時に判断がつかなくなるし、やっぱりソースも漏洩していたんじゃ、と疑心暗鬼になるから
    1. この際に届かないメールアドレスを登録している人たちを何とかしたいから
    1. 既にメールアドレスとセットで漏れているパスワードのリストを攻撃者が持っていれば、攻撃の成功率が上がるから
    1. 何らかの手段で追加でハッシュ化アルゴリズムが漏洩した場合に(弱いパスワードを使っているユーザーが)危険になるから
    1. Evernote社員を誘拐して脅迫してEvernoteのソースコードを盗まれた場合に危険になるから
    1. Evernote社員の娘を誘拐して脅迫してEvernoteのソースコードを盗まれた場合に危険になるから
    1. Evernote社員の息子を誘拐して脅迫してEvernoteのソースコードを盗まれた場合に危険になるから
    1. Evernote社員の孫を誘拐して脅迫してEvernoteのソースコードを盗まれた場合に危険になるから
    1. Evernote社員の婚約者を誘拐して脅迫してEvernoteのソースコードを盗まれた場合に危険になるから
    1. Evernote社員の友人を誘拐して脅迫してEvernoteのソースコードを盗まれた場合に危険になるから

攻撃者から見て「あとはハッシュ化アルゴリズムさえ分かれば」という状況になってしまったら、追加で狙われる可能性があるし、攻撃者がギャングだったら社員が危険だ。「生パスワードが復元されるリスクが現実的だから」というよりも、流出したデータをさっさと無意味なものにするために、パスワードをリセットする必要がある。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment