エントロピーのビットとは何か、そしてなぜ「強度○%」を出さないのか

公開日 著者 David Carrero

強度のパーセント表示とは、小数点以下2桁までついた「感想」です。

あるサイトが「このパスワードは92%安全です」と言ってきたとき、当然浮かぶ疑問はこうです。何に対しての92%なのか。100%とは何なのか。存在しません。ほかのすべてがそれを基準に測られるような「完璧なパスワード」を、誰も発表していない。あの数字は、誰かが火曜日あたりに思いつきで決めた足し算です。大文字で何点、記号で何点。そして本当の仕事はただひとつ、緑色のバーを出してあなたを先に進ませることです。

一方でビットは、いつでもきっちり同じことを意味します。 しかも、実際に使える意味を。

1ビットとは、はい/いいえの質問ひとつ

考え方の全部が一文に収まります。1ビット増えるたびに、あなたのことを何も知らない相手に必要な試行回数が倍になる。

1ビットなら2通り。2ビットで4通り。3ビットで8通り。10ビットで1,024通り、20ビットで100万通り強。この数は増えるのではなく、倍になっていく。そして「倍になる」こそが、人間の直感を崖から突き落とすものです。

だから「40ビットは20ビットの2倍いい」という言い方は、笑ってしまうくらい間違っています。20ビットと40ビットのあいだには20回の倍化、つまり2²⁰倍の差がある。40ビットは20ビットの2倍ではなく、100万倍です。 そして60ビットは20ビットの3倍でもない。40ビットの100万倍です。私たちの頭はこの目盛りを物差しのように読んでしまいますが、物差しではありません。地震のマグニチュードやデシベルと同じで、数字が少し動くだけで現実は跳ね上がる目盛りです。

パーセントに対するビットの利点は、結局そこに尽きます。パーセントが渡してくるのは感触。ビットが渡してくるのは仕事量です。

この言葉の出どころ

情報に対して使うエントロピーという言葉は、1948年の論文に由来します。Claude ShannonA Mathematical Theory of Communication です。

ここは正確に言っておく価値があります。よく間違って引用されるので。Shannon はパスワードのことなど考えていませんでした。当時、わざわざ言及するようなコンピューターのパスワードは存在しません。彼が Bell Labs で取り組んでいたのはまったく別の問題です。メッセージが本当はどれだけの情報を運んでいるのか、壊さずにどこまで圧縮できるのか。そのために、つかみどころのないものを測る必要があった。受け取る側にとっての不確かさです。

彼の発見を乱暴に言えば、情報と驚きは同じものだ、ということです。すでに知っていたメッセージは何も教えてくれない。予想がまるでつかないメッセージは、たくさんのことを教えてくれる。エントロピーは、メッセージを生み出す源にどれだけ驚きがあるかを測る量で、単位はビットです。

それがパスワードに使えるのは、ほとんど幸運な事故です。パスワードとはまさに、予想がついてはいけないメッセージなのですから。

ダイヤル式の鍵

この記事に出てくる唯一の数式です。無料なので安心してください。

H = L × log₂(N)

対数のことはいったん忘れて、自転車のダイヤル式の鍵を思い浮かべてください。開けようとする相手を困らせる方法は2つあります。

  • ダイヤルの数を増やす。 これが長さ(L)、つまりパスワードの文字数です。
  • 1つのダイヤルに刻む記号を増やす。 これがアルファベット(N)、つまり各桁が数字10個だけなのか、26文字のアルファベットなのか、それとも文字と数字と記号すべてなのか。

対数がやっていることはひとつだけ。「このダイヤルには記号がいくつ刻まれているか」を「このダイヤルは何ビット稼ぐか」に翻訳しているだけです。26文字のダイヤルは約4.7ビット。キーボードの印字可能な95文字が刻まれたダイヤルは約6.6ビットです。

笑いどころはここです。数式のなかで、それぞれがどこに座っているかを見てください。アルファベットは対数のなかに押しつぶされている。長さは外にいて、掛け算をしている。

1ダイヤルあたりの記号をほぼ4倍にしても——26文字から95文字にしても——手に入るのは2ビット足らずです。ダイヤルを1つ足せば、log₂(N) がまるごと手に入る。それがもう一度、また一度、また一度と続きます。だから小文字だけ12文字(約56ビット)のほうが、入力フォームが要求してくるあの大文字・数字・記号入り8文字(約53ビット)に勝つのです。P@ssw0rdcorrecthorsebatterystaple に負けます。しかも僅差ですらありません。

NISTSP 800-63B で、別の道を通って同じ場所にたどり着きました。構成ルール——大文字1つ、数字1つ、記号1つ——を窓から放り投げ、長さと、流出リストとの照合だけを残したのです。言っていないことを言わせないようにしましょう。彼らの論拠はこの数式の話ではなく、人に記号を入れさせても予測不能になるわけではなく、別の形で予測可能になるだけだ、というものです。実際この文書自体、人間が選んだパスワードのエントロピーを見積もること自体を信用していません。理屈は2つ、結論は同じ。強制された複雑さは対数のなかで働く。長さは外で働く。

ほとんど誰も数えない小さな文字

落とし穴があります。そしてこれがこの話のいちばん誠実な部分です。エントロピーはあなたのパスワードを測っているのではない。それを作った過程を測っている。

4$Kp!9zQ が53ビットあるのは、見た目が難しそうだからではありません。95個のキーから本当にランダムなくじ引きで出てきた場合に——その場合にかぎって——53ビットなのです。あなたがランダムっぽく見せようとして自分で打ったのなら、この式は当てはまりません。あなたはくじ引きではないからです。大文字は先頭に置き、数字は最後に付け、記号は ! にする。攻撃する側は各桁で95通りを試したりしません。まず、人間がやることから試します。

ここからパスワードのセキュリティにつきまとう、居心地の悪い非対称性が生まれます。エントロピーは天井であって、床ではない。機械が生成したなら、その天井は本物です。あなたが自分で選んだなら、わかるのは「それより下にいる」ことだけで、どれだけ下かはわかりません。

だから道具は1つではなく2つあるのです。ジェネレーターは本当にくじを引いています。だから真顔でビット数を出せる。ダイヤルが何個あるか(L)を知っていて、各ダイヤルに記号がいくつあるか(N)も知っていて、その掛け算をあなたの目の前でやってみせる。スライダーを動かして数字が上がるのを見るとき、あなたは L が押し上げているところを見ています。チェッカーのほうは、すでに存在するパスワードに対して同じことはできません。それがどう生まれたのかを知りようがないからです。だから唯一まともなことをします。辞書と人名とキーボードの並びのなかを探し、最悪を想定するのです。

持ち帰るもの

3つだけ。

  • 1ビットは倍化ひとつ。 10ビット増えれば手間は1,000倍、20ビット増えれば100万倍。
  • 長さは掛け算、アルファベットはほとんど足し算ですらない。 単語を1つ足すほうが、感嘆符を1つ足すより価値がある。
  • ビットが意味を持つのは、ランダムが本物のときだけ。 機械はそれを約束できる。手で打つあなたには約束できない。

Shannon が探していたのは、1つのメッセージにどれだけの驚きが収まるか、でした。七十数年たってみると、それはパスワードにとってまさに正しい問いだったわけです。複雑そうに見えるかどうかではなく、あなたのことを何ひとつ知らない相手にとって、そのなかにどれだけの驚きが入っているか。


出典: C. E. Shannon,「A Mathematical Theory of Communication」, Bell System Technical Journal, 1948 · NIST SP 800-63B, Digital Identity Guidelines (Authentication and Lifecycle Management) · password.es のジェネレーター。H = L × log₂(N) を計算し、L、N、および結果のビット数を表示します。

← ブログに戻る