パスワードとは、とても古い問いへの答えである。お前は味方か?
これを発明したのはコンピューターではない。ポリュビオスは紀元前2世紀に、ローマ軍が 毎晩、木の板——テッセラ——に書いた語を部隊から部隊へ回し、司令部へ戻していたと 記している。それを知る者は味方だった。知らぬ者は違った。
二千年後、私たちはまったく同じことをしている。変わったのは、誰が問うのか、そして どれだけの速さで答えを推測できるのか、それだけだ。
1961年 パスワードがコンピューターに入る
1961年11月、MITはフェルナンド・コルバトが率いる CTSS(Compatible Time-Sharing System)を披露した。新しい発想だった。非常に高価な一台の コンピューターを、複数の人が同時に共有する。
そこで問題が現れた。機械がみんなのものなら、各自のファイルは各自のものでなければ ならない。コンピューターには、誰が打っているのかを知る方法が必要だった。解決策は もっとも当たり前で、もっともローマ的なものだった。利用者ごとに自分の語を持たせる。
正確に言っておきたい。コルバトはパスワードを発明したのではない。彼が発明したのは 多人数コンピューターにおける利用者ごとのパスワードであって、それは別のことだ。 晩年、彼自身がこれは「悪夢」になったと語っている。
1962年 最初の流出、そして理由は計算時間だった
一年後、同じMITの博士課程にいたアラン・シェアは、きわめて世俗的な問題を抱えて いた。週に四時間しか計算時間を割り当てられず、博士論文にはもっと必要だった。
そこで彼はシステムにパスワードファイルを印刷させた。それだけだ。平文でそこに あり、誰かがそれを求めるとは誰も考えていなかった。印刷を手に、彼は他人のアカウント を使って作業を続けた。
面白いのは手口ではない。動機だ。史上初のパスワード流出は犯罪者の仕業ではなく、 作業を続けたかった人間の仕業だった。六十年後、セキュリティの穴の大半は、いまも まっとうな人間が近道を探すところから生まれている。
1979年 そもそも保存すべきではないと気づく
二十年近く、多くのシステムはパスワードをそのまま保存していた。誰かがファイルを 読めば、すべてを持ち去れた。
1979年、ロバート・モリスとケン・トンプソンは Communications of the ACM に 「Password Security: A Case History」と題した論文を発表した。Unix でやったことに ついてである。今日すべての土台となる二つの考え方だ。
- パスワードを保存せず、そのハッシュを保存する。 システムはあなたのパスワードが 何かを知る必要はない。いま打たれたものが同じ結果を出すか確かめられればよい。
- ソルト:ハッシュ化の前に各パスワードへ乱数を加える。同じパスワードの二人が 同じハッシュにならず、表を事前計算して一網打尽にされることもなくなる。
今日、あるサービスが「あなたのパスワードを知るべきではない」と言うとき、私たちは 1979年の論文を引用している。
2003年 私たちが教わった規則と、その出どころ
2003年、米国NISTのビル・バーが、世界の半分がパスワードをどう求めるかを支配する ことになる文書を書いた。SP 800-63 である。あなたが即座に見分けるものはすべて ここから出ている。
大文字を一つ、数字を一つ、記号を一つ以上。90日ごとに変更すること。
科学のように聞こえた。そうではなかった。バーには実在のパスワードに関するまともな データがなかった——ほとんど存在しなかった——ので、手元にあるものに寄りかかり、 理にかなって見えるほうへ推論した。文字の種類が増えれば、組み合わせが増え、安全に なる、と。
問題は、人間は乱数生成器ではないということだ。大文字を求めれば先頭に置く。
数字を求めれば末尾に置く。記号を求めれば ! になる。三か月ごとの変更を強いれば、
Natsu2024! は Aki2024! になる。
その結果が、複雑に見えて実は自明なパスワードの世代まるごとと、もう限界だから どこでも使い回す疲れ切った利用者たちだった。
2017年 NISTが撤回し、バーもまた
2017年、NISTは SP 800-63B を公表し、ほぼすべてを撤回した。
- 長さは複雑さより重要である。
- 侵害の兆候がない限り、強制的な変更はしない。
- 記号を要求するのではなく、流出リストと照合する。
同じ年、バーは Wall Street Journal に、自分が書いたことの多くを悔いていると 語った。コンピューターセキュリティが生んだもっとも誠実な訂正のひとつである。 ——それでも今なお何千という入力欄が、著者自身が否認した文書のせいで記号を要求して いる。
これが遠い昔の話ではない理由
これらすべてには、きわめて具体的な帰結がある。ここで見ることができる。
私たち自身のチェッカーは、つい最近まで2003年の論理で動いていた。
大文字と数字と記号を数えていたのだ。Contraseña1! ——文字どおりスペイン語の
「パスワード」——に 92 %「非常に強い」 を与え、比べものにならないほど優れた
ランダムな五語のフレーズに 0 %「非常に弱い」 を与えていた。
やってはいけないことを、まさに褒めていた。私たちは入れ替えた。いまは単語・名前・ 都市・キーボードの並びの辞書からあなたのパスワードを探し、実際にどれだけ持ちこたえ るかを告げる。
そして ジェネレーター が百分率ではなくエントロピーのビット数を見せるのも そのためだ。百分率は何も意味しない。ビットは意味する。あなたのことを何も知らない者 が何回試さねばならないか、その数である。
どうすればいいか、二行で
- 長さはひねりに勝つ。 ランダムな四つか五つの単語は
P@ssw0rdを桁違いに 上回る。 - どこでも別のものを、管理ソフトに。 2003年の規則で唯一いまも立っているもので あり、私たちがもっとも守らなかったものだ。
問いは2世紀のローマと同じである。お前は味方か? 変わったのは、問う者がいまや毎秒 十億の答えを試せることだ。あなたの答えが辞書に載っていないことを願う。
出典:F. J. コルバトとCTSS(MIT、1961年)· 1962年についてのアラン・シェア自身の 証言 · R. モリス、K. トンプソン「Password Security: A Case History」Communications of the ACM、1979年 · NIST SP 800-63(2003年)およびSP 800-63B(2017年)· ビル・ バーの Wall Street Journal への発言、2017年8月。