generated at
パスワードのエントロピー

パスワードの強度を示す「エントロピー」の解説です
(Helpfeelだと数式が表示されないのでこちらを見てください)

水平線
ある事象がどれぐらい起こりにくいかを示す尺度を情報量という
ランダムに「0」「1」が生起するとき、生起確率は1/2で、情報量はそれぞれ-log_2(1/2)=1ビットである。
平均情報量をエントロピーと呼び、この場合は1/2 \times 1 + 1/2 \times 1 = 1ビットになる。
0」の生起確率が1 / 8, 「1」の生起確率が7/8であれば、エントロピーは -{1\over 8} * log_2({1\over 8}) - { 7 \over 8} * log_2({ 7\over 8}) = 0.5436 ビットになる
ほとんどの場合「1」なのだから平均情報量が1ビット以下だということになる
ふたつの単語「aaa」と「bbb」だけを含む言語があり、ふたつの単語の生起確率がともに{1 \over 2}であるとき、その言語のエントロピーは1ビットだと表現する
英単語の出現頻度から情報量を計算してみると11.8ビットになる
Zipfの法則から計算することもできる
一方、aからzまでの文字がランダムに生起する場合、1文字のエントロピーは-log_2(1/{26}) = 4.7ビットになる
単語の平均長4.5をかけると4.7 \times 4.5 = 21.1ビットになる
21.1ビット表現可能なのに実際のエントロピーが11.8しかないのは英単語がランダムではないからである

さて、パスワードの強度についてもエントロピーという概念が利用される
aからzまでの8文字を使うパスワードは{26}^8通りの組みあわせがあるから、完全にランダムな文字列が使われるならエントロピーはlog_2({26}^8) = 37.6ビットになる
しかし実際はパスワードはランダムではないだろうから、エントロピーがどれぐらいなのか? が問題になるらしい
いろいろな根拠から、8文字のパスワードのエントロピーは20ビットぐらいだと考えられている
もちろんユーザが実際にどういうパスワードを使っているかなどわからないし、ずっと同じだという保証もないのでいい加減なものではある
それぐらいの強度があれば充分ということなのだろうか
EpisoPass県名なぞなぞ47択問題を10個利用するとエントロピーはlog_{2}({47^{10}}) = 55.5ビットになる
これぐらいなら充分安心できるだろう


? [ブログ]: [パスワード]の[エントロピー]