パスフレーズジェネレーターが安全で覚えやすいパスワードを作る仕組み

「推測されにくいパスワードは覚えにくく、覚えやすいパスワードは推測されやすい」という古くからのジレンマを、パスフレーズジェネレーターは単語の組み合わせで解決しようとします。

「diceware」とは何か

サイコロを振って(デジタルでは乱数生成で代用して)大規模な固定単語リストから単語を選び出す方式です。人間が「ランダムっぽい言葉」を頭で考えるのではなく、偏りのない本当の乱数で選ばれる点が重要です。

強度を決めるのは単語の内容より「単語数」

安全性の大部分は、どんな単語が選ばれたかではなく、ランダムな単語が何個連結されているかで決まります。大規模な単語リストから4〜6語選べば、かなり長いランダム文字列に匹敵するエントロピーに達することができます。

単語同士に関連性がないことが重要

各単語が独立してランダムに選ばれていることが安全性の前提です。人間が自然に作る「意味の通るフレーズ」は、単語数が同じでも無関係な単語の並びよりはるかに推測されやすくなります。

区切り記号や大文字化はあくまでおまけ

ハイフンや数字、大文字小文字の混在(例: correct-Horse-42-battery)を加えると多少エントロピーは上乗せされますが、安全性の大部分はあくまで単語そのもののランダム性から来ています。

入力ミスが少なく、正確に打ちやすい

意味のある(ただし無関係な)単語の並びは、ランダムな記号の羅列に比べて明らかに速く、正確にタイプできます。頻繁に手入力するパスワードほどこの差は大きな意味を持ちます。

なぜこの方式が広まったのか

diceware方式は、「ランダムに考えて」と言われても人間はうまくできないという前提のもと、誰でも再現可能かつ計算可能なエントロピー量を持つパスフレーズを作れるよう考案されました。デジタルなジェネレーターは、このサイコロを振る作業を適切な乱数源で自動化しているだけです。

単語数はいくつあれば十分か

大規模な単語リストから単語を1語加えるごとに、加算的ではなく指数的にエントロピーが増えます。数千語規模のリストから5〜6語をランダムに選んだパスフレーズは、通常、現実的な時間で総当たり攻撃するのがほぼ不可能なレベルの安全性に達します。

よくある質問

パスフレーズは同じ長さのランダム文字列パスワードより安全ですか?

全体のエントロピーが同程度であれば理論上の安全性はほぼ同等です。パスフレーズの実質的な利点は、正確に入力・記憶しやすいという運用面にあります。

生成されたパスフレーズに自分で単語を付け加えてもいいですか?

可能ですが、自分にとって意味のある単語(名前やペットの名前など)を加えると、ランダムジェネレーターが本来避けようとしている「推測されやすいパターン」を再び持ち込んでしまい、安全性を下げる可能性があります。