何度も繰り返される検索がある。パスワードのアイデア。これは当然のことだ。入力欄 が待っていて、何かをひねり出さなければならず、そのやり方を誰も教えてくれなかったの だから。
問題は、アイデアという言葉そのものがすでに失敗だということだ。良いパスワードとは 良いアイデアではない。背後に何のアイデアもないパスワードのことだ。
これは記事の書き出しのための美しい言い回しではない。攻撃は文字どおりそうやって動く。
あなたが思いつくアイデアの一覧は、相手が最初に試す一覧である
辞書攻撃は aaaaaaaa から始めて数え上げていくわけではない。すでに何百万回も流出した
パスワードから始まり、人名、普通名詞、都市名、サッカークラブ名、4 桁の西暦へと進む。
そしてその土台の上に規則を重ねる。先頭に大文字、末尾に数字か !、a を @ に、
e を 3 に、o を 0 に、単語を逆から、単語を二回。
これらの規則は秘密でも新しいものでもない。何十年も前から書かれていて、どの攻撃ツール にも標準で入っている。言い換えれば、あなたが「パスワードのアイデア」と呼ぶであろう 思いつきの目録は、ほぼその順番のまま、あなたを攻撃する側の設定ファイルなのだ。
ここから先の数字はすべて、当サイトの診断ツールから出ている。前提は 高速ハッシュに対するオフライン攻撃、毎秒 10¹² 回。結果の下に書いてあり、この前提 なしにはどんな時間も意味を持たない。数字はすべて自分で再現できる。例を打ち込んで見て ほしい。
アイデア 1:自分の名前と生まれた年
Sakura1985。10 文字、大文字あり、数字 4 つ。インターネットの半分が要求する条件を
満たしている。
診断ツールは一瞬で二つに割る。Sakura に 「辞書に載っています」、1985 に
「年号か日付のようです」。結果は 280,000 回。この速度なら 1 秒未満 だ。
なぜ天文学的な数ではなく 280,000 なのかに注目してほしい。短いからではない。これは 10 個の決定ではなく、2 個の決定だからだ。どの名前と、どの年か。よくある名前は数千の オーダー、人が実際にパスワードに入れる西暦は数十のオーダー。掛け算して終わり。10 文字 打ったのに、30 万に満たない候補の中から選んだにすぎない。
アイデア 2:「a」をアットマークに置き換える
これは誰もが効くと信じている小細工で、いちばん古びるのが早いものでもある。
S@kur@1985 は 550,000 回。上がった、たしかに。ちょうど 2 倍だ。そして
何もないものの 2 倍はやはり何もない ——診断ツールは相変わらず 1 秒未満と測る——
なぜなら置き換えは新しいパスワードを作っていないからだ。攻撃者がとっくに織り込み済み
の、はい/いいえの質問を一つ足しただけである。この人は a を置き換えたか、否か。
よく見てほしい。診断ツールは判定すら変えない。相変わらず「辞書に載っています」と言い、 今度は 文字を数字に置き換えたもの という但し書きが付く。単語は同じように見つかって いる。
どこまで行くのかを見たければ、定番の例を試すといい。大文字があり、アットマークがあり、
ゼロがあり、よく考えられた雰囲気を漂わせた P@ssw0rd は、17 回で落ちる。17 回。
両手の指と少しの忍耐で数えられる。
アイデア 3:逆から書く
arukas1985 は 280,000 回。最後の桁まで Sakura1985 と同じ数字だ。
逆順にしても効果が薄い、という話ではない。まったく何も変わらない。 単語を逆順に するのは辞書が標準で持っている規則の一つで、診断ツールは同じように見つけ、同じように ラベルを貼る。今度は 逆から書いたもの という但し書き付きで。
繰り返しも同じだ。SakuraSakura は 5,403 回まで下がる。文字数を倍にしたのに
前より悪くなる。「一部を繰り返しています」もまた、名前の付いたパターンだからだ。
アイデア 4:指でキーボードをなぞる
考えたくないとき、人はキーボードを見て形をなぞる。出てくるのは qwerty123、
1qaz2wsx、1q2w3e4r、asdfghjkl。
意味がないのでランダムに感じる。しかしキーボードには固定された、そして非常に小さな 幾何がある。そこをなぞることこそ、プログラムがあなたより得意な作業だ。
qwerty123→ 273 回。1qaz2wsx→ 29 回。
29 回。これらは擦り切れすぎていて、キーボードの規則すら要らない。流出パスワードの一覧 にそのままの形で載っており、診断ツールは素っ気なく「辞書に載っています」と片づける。
アイデア 5:犬と、決して忘れない日付
Toby2015! は経歴のあるパスワードだ。犬の名前、家に来た年、そして入力欄をなだめる
ための感嘆符。1,2 × 10⁸ 回、それでもなお 1 秒未満 である。
よくあるペットの名前は数千程度で、人名と同じ一覧に載っている。末尾の ! が寄与する
のは、全員が守っている規則が寄与する分だけ、つまりゼロだ。
記念日はもっと居心地が悪い。24121985 ——日、月、年—— は 8 桁の数字に見えるが、診断
ツールは「日付が含まれます」とラベルを貼り、14,966 回で片づける。理由はカレンダー
にある。日は 31、月は 12、もっともらしい年は 1 世紀ちょっと。1000 万通りに見える 8 桁
が、実際には 1 万 5 千ほどしかない。
これが日付の罠だ。長さは与えてくれるが、不確実性は与えてくれない。 そして支払われ るのは不確実性だけである。
アイデア 6:車のナンバー、そして診断ツールに見えないもの
4521KDR は別の種類で、立ち止まる価値がある。
ここで診断ツールは 「既知のパターンは見つかりませんでした」 と言い、 3,9 × 10¹⁰ 回と計算する。だがその数字を 上限 として印を付ける。この言葉こそ が肝心だ。あなたのパターンが見つからなかっただけで、あなたにパターンがないことの証明 にはならない。それでもなお、甘く見積もって、時間は 1 秒未満 のままである。
そしてここに、理解すべき隔たりがある。診断ツールはあなたがどんな車に乗っているか知ら ない。あなたを知っている人、あなたの Instagram を開いている人、あなたのナンバーが載っ た流出データを買った人には 3,9 × 10¹⁰ 回など要らない。1 回で足りる。パターンが見つ からないときに表示される数字が測っているのは、赤の他人の無知であって、あなたを調べた 人の無知ではない。
同じことが番地、身分証番号、電話番号、結婚記念日にも当てはまる。
6 つに共通するもの
これらのアイデアは「複雑さが足りない」から失敗するのではない。すべて同じ理由で失敗 する。それらは自叙伝だからだ。 そして自叙伝は当てられる。あなたの名前、あなたの年、 あなたの犬、あなたの車、あなたがキーボードをなぞる癖。どの決定もあなた個人のものに 感じられ、まさにそれゆえに、誰かがとっくに書き出した短い一覧に属している。
複雑さを足しても何も解決しない。あなたが施す複雑さもまたあなたの決定であり、やはり
その一覧に載っているからだ。だから S@kur@1985 はみじめな 2 倍しか稼げず、
arukas1985 はそれすら稼げない。
数字で議論したければ、エントロピーのビットにある。 数えるべきは、あなたが書けたはずのパスワードの数ではなく、あなたの好みについて知ら れていることをすべて差し引いた後に残る数だ。
出口は「もっと良いアイデア」ではない。アイデアをやめることだ
その一覧から抜け出す唯一の方法は、パスワードがあなたの頭から出てこないことである。
それこそが Diceware のやって いることだ。サイコロを 5 個振り、その数字を 7,776 語のリストで引き、出たものを書き 写す。1 回の出目は 12.9 ビットの価値があり、それは正真正銘の 12.9 だ。サイコロには 好みも記憶も、あなたの生まれ年もないからである。6 語でおよそ 77 ビットになる。
それを診断ツールに入れて、何が変わるか見てほしい。サイコロで選ばれたごく普通の 6 語 は「非常に弱い」から 「非常に強い」 に跳ね、時間はもう秒では測られない。凝っている からではない——凝ってなどいない、普通の 6 語だ——あなたが決めていない唯一の部分だから である。ブラウザに振らせたいなら、ジェネレーターが同じ抽選を行い、その場で ビット数を見せてくれる。
だから「パスワードのアイデアをくれ」への正直な答えはこうなる。必要ない、むしろ多すぎる。 足りないのはサイコロだ。
出典:本記事の数字はすべて password.es の診断ツールによるもので、その前提は結果の下に 明示されている——毎秒 10¹² 回、オフライン攻撃、高速ハッシュ——各例を /ja/checker/ に打ち込めば再現できる · パターン解析エンジンは Daniel Lowe Wheeler(Dropbox)の zxcvbn。USENIX Security 2016 で「zxcvbn: Low-Budget Password Strength Estimation」として発表された · 引用した置換・逆順・反復の規則は、 辞書攻撃ツールが標準で備えているものである · Arnold G. Reinhold「The Diceware Passphrase Home Page」(1995)——7,776 語と 1 回の出目あたり 12.9 ビットについて。
写真: RDNE Stock project · Pexels