パスワードのエントロピー
(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ビットになる
一方、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ビットぐらいだと考えられている
もちろんユーザが実際にどういうパスワードを使っているかなどわからないし、ずっと同じだという保証もないのでいい加減なものではある
それぐらいの強度があれば充分ということなのだろうか
これぐらいなら充分安心できるだろう
? [ブログ]: [パスワード]の[エントロピー]