エントロピー
https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/CC_Gas.svg/2000px-CC_Gas.svg.png
パスワードの強度を示す「エントロピー」の解説です
/icons/水平線.icon
ある事象がどれぐらい起こりにくいかを示す尺度を情報量という
ランダムに「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/8 * log_2(1/8) -7/8 * log_2(7/8) = 0.5436 ビットになる
ほとんどの場合「1」なのだから平均情報量が$ 1ビット以下だということになる
ふたつの単語「aaa」と「bbb」だけを含む言語があり、ふたつの単語の生起確率がともに$ 1/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ビットぐらいだと考えられている
もちろんユーザが実際にどういうパスワードを使っているかなどわからないし、ずっと同じだという保証もないのでいい加減なものではある
それぐらいの強度があれば充分ということなのだろうか
EpisoPassで30択問題を10個利用するときエントロピーは$ log_{2}({30^{10}}) = 49ビットになる