2013-11-01

xkcd: パスワード強度

xkcd: Password Strength

数字や記号を混ぜた十文字にも満たないような短いパスワードは、普通に文章で書いた数十文字の長いパスワードよりも、はるかに弱い。

以下は弱いパスワードの例である

ub3rpa$$
amaz1n8$$%^&
qwerty1234!@#$

以下は強いパスワードの例である

Calm down. Count up the prime numbers and calm down
FUCK YOU nVidia for your proprietary binary blob drivers
Shut up you scumbag. I will smite your mouth with this mighty mjollnir

これらのパスワードは覚えやすく、数十文字の長さがあり、数字や記号を使わないことを考慮しても、短いパスワードよりはるかに強度がある。

ちなみに、パスワードの定期的な変更は、確率的に強度に無視できるほどの微々たる向上しかもたらさないが(数文字長いパスワードを使ったほうがマシだろう)、私はそのへんには詳しくないので、解説は他人に譲る。

6 comments:

  1. 最近は「パスワードの暗号化すらしないサービスとかどんな情弱だよwww」って風潮ですけど、どんなに強力なパスワードでも強度はハッシュのビット数(たとえばSHA-256なら256ビット)以上には絶対なりませんね。

    ReplyDelete
  2. まあ、それはそうですが、人間は256ビットのビット列を覚えているわけではなく、
    何らかの文字コードの印字可能な文字列で覚えているわけで、
    さらにこの手のハッシュ関数は、人間が手で入力する程度の情報量で簡単に衝突しないように工夫されていますので。

    10文字の覚えにくいパスワードより、20文字の覚えやすいパスフレーズの方が強度的には高いのです。

    ReplyDelete
  3. そういう原因ではなく、リモートから攻撃する場合にクライアント側からはハッシュコードを送れないから元のパスワードを知る必要があること、ハッシュが逆算できないことが原因です。

    短い方から総当たりや辞書攻撃されると、ハッシュの強度から期待されるより遙かに先にパスワードがバレることが問題なのです。

    ReplyDelete
  4. 辞書攻撃の存在を忘れていませんか?
    辞書攻撃を考慮すると、強度ってどうなるんでしょう。

    ReplyDelete
  5. 辞書攻撃って基本的には単語でしか攻めないので、あまり関係ないのでは。

    ReplyDelete
  6. >辞書攻撃って基本的には単語でしか攻めない
    真面目な辞書攻撃は総当りで使用可能文字を連結する代わりに辞書単語を連結して攻めたりするから、連結後の文字数制限などで弾かれない限り普通に命中するよ。

    >辞書攻撃を考慮すると、強度ってどうなるんでしょう。
    ランダム英数字N文字は62^Nに対して、N単語文章だと辞書収録単語数^Nになるから、文字数相当の単語数を確保するならかなり強度が上がる。
    最終的な総文字数辺りで見れば強度はおもいっきり下がるし、単語辞書に加えて単語の連鎖を統計した単語選択辞書まで用意されると微妙だけど、そこまで行くと辞書のチューニングコストが凄いことに…
    本当にフレーズでパスフレーズ作る人口考えたら、当分は単語連鎖情報の統計から有意義な傾向を抽出出来ないんじゃないかと。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.