« パスワードは8文字で、大文字、小文字、数字、特殊文字を含む必要があります。 »
私たちは皆、このルールを知っています。しかし、サイバーセキュリティにおいて、これは「セキュリティ・シアター(見せかけのセキュリティ)」と呼ばれています。P@ssw0rd1! のようなパスワードはこれらのルールすべてに準拠しています。ですが実際には、よくある単語を予測可能な形で置き換えただけのもので、それこそがクラッキングツールが最初に試すものです。
真のセキュリティは、恣意的な見た目のルールに依存するのではなく、容赦のない数学的現実、つまり エントロピー に依存しています。
クロード・シャノンによるエントロピー
パスワードの強度を理解するには、情報理論の父であるクロード・シャノンに目を向ける必要があります。エントロピーは、情報の不確実性または予測不可能性の度合いを測定します。
パスワードに適用される場合、エントロピーは ビット(bits) で計算されます。ビット数が多いほど、コンピューターにとってパスワードは予測不可能になります。ランダムに生成されたパスワードのエントロピー(E)の簡略化された計算式は次のとおりです:
E = L × log2(R)
- L はパスワードの 長さ です。
- R は プールのサイズ(小文字は26、大文字と数字を含めると62、印字可能なすべての記号を含めると94)です。私たちの生成ツールの4種類の文字種は合計91文字です。記号が29文字だからです。
プールのサイズを増やす(記号を追加する)とエントロピーは増加しますが、長さを増やす(文字を追加する)と劇的に増加します。 ただし、長さが複雑さに勝つのは、1つの条件を満たした場合のみです。それは、パスワードが完全にランダムに生成されていることです。
ブルートフォース攻撃 vs. 辞書攻撃
単語や予測可能な構造を使用する場合、純粋な長さのルールは崩壊します。
ハッキングソフトウェアは、すべての文字の組み合わせを1つずつ試すわけではありません(これは ブルートフォース と呼ばれます)。それらは、過去のデータ漏洩で流出した実際のパスワードの巨大なリストと、よく使われる単語やフレーズを使用します。これが 辞書攻撃(Dictionary Attack) です。
パスワードが長くても、辞書の単語や予測可能な置き換えで構成されている場合、その実際のエントロピーは理論的な数学的エントロピーよりも劇的に低くなります。
下の表は1つのルールに従っています。1秒あたり1000億回の試行、つまり私たちの生成ツールのページが高速なハッシュへのオフライン攻撃として想定する速度です。時間は平均値(全組み合わせの半分)で、そのページと同じ計算式で切り下げています。各パスワードで最も速い経路を太字にしています:
| パスワード | すべての文字がランダムだった場合のエントロピー | ブルートフォース(平均) | 辞書攻撃(私たちの推定) |
|---|---|---|---|
password123 | 56 ビット(11文字、小文字と数字) | 7 日 | 1秒未満 |
S3cr3t!99 | 58 ビット(9文字、4種類すべて) | 24 日 | 1秒未満 |
correct horse battery staple | 133 ビット(28文字、小文字とスペース) | 1兆 年以上 | 1 分 |
gL7!pQ9z#vX2 | 78 ビット(12文字、4種類すべて) | 5.1万 年 | 近道なし |
辞書攻撃の列は推定値です。攻撃者の推測が各パスワードの構造に沿っていること、そして各基本単語が最もよく使われる1,000語に含まれることを前提にしています:
password123: よくある単語1つと数字3桁。1,000 × 1,000で、約100万回の推測です。S3cr3t!99: よくある単語1つに、大文字にするかどうか、各「e」を「3」に置き換えるかどうかを組み合わせ、さらに任意の3文字の接尾辞を加えたものです。約70億回の推測です。correct horse battery staple: よくある単語4つ。このフレーズを有名にしたxkcdのコミックは、2,048語のリストから選んだ4単語を44ビットと数えています。同じ速度なら平均88 秒で、切り下げると1 分です。gL7!pQ9z#vX2: 単語もパターンもないため、ブルートフォースが最も速い経路です。
これらの推定は、各パスワードが攻撃者に知られていないことを前提としています。この記事のパスワードはすべて公開されたため、どれも辞書に入るべきものです。公開されたパスワードは「焼けた」パスワード、つまりもう使えないパスワードです。
Leetspeak(リートスピーク)の幻想と変異ルール
S3cr3t!99 を例にとってみましょう。視覚的には複雑で堅牢に見えます。しかし、これは単に辞書にある単語「secret」の ’e’ を ‘3’ に置き換え、非常に一般的な接尾辞(!99)を追加しただけのものです。これを leetspeak(リートスピーク) と呼びます。
辞書攻撃に対しては、このパスワードは1秒も持ちません。長さから想像される24日ではありません。最新のクラッキングソフトウェア(Hashcatなど)は、静的な単語リストをテストするだけではありません。彼らは自動的に 変異ルール(mutation rules) を適用します。辞書にあるすべての単語を取得し、可能なすべてのleetspeakの組み合わせをテストし、大文字を入れ替え、年や記号を追加します。Leetspeakは誤った安心感を与えます。
キーボードシフトのトリック(Keyboard Shift)
覚えやすいフレーズを複雑にするために、キーボードの配列をシフトするトリックを使う人がいます。たとえば、my-cat というフレーズを覚えます。しかし、それを入力するときに、オペレーティングシステムをAZERTY(フランス語)に設定したまま、物理的なQWERTYキーボードに指を置いて入力します。
- 頭の中の単語:
my-cat - 入力された結果:
,y)cqt(’m’ キーは ‘,’ に、’-’ は ‘)’ に、‘a’ は ‘q’ になります)。
これはOPSECにおいて良いアイデアでしょうか?いいえ、この方法を単独で使用した場合は不十分です。 leetspeakと同様に、キーボード配列のずれは固定された置き換えです。それを疑う攻撃者は、すべての推測に同じ対応を当てはめるだけです。OPSECにおいて、これは「曖昧さによるセキュリティ」です。アマチュアの攻撃者を遅らせることはできますが、標的を絞った装備の整った攻撃を止めることはできません。
すでに強力なパスワード(長いランダムなパスフレーズなど)と組み合わせても、上乗せはわずかです。攻撃者が1,000通りの配列の組み合わせを試すとしても、増えるのは10ビット未満です。log2(1,000) ≈ 9.97 だからです。強さは、あくまで土台のパスフレーズから生まれます。
マスターパスワードの構築(約250ビット)
単語リスト、leetspeak、入力のトリックに限界があるとしたら、長く使えるマスターパスワードをどのように構築すればよいでしょうか?私たちの生成ツールでは、すでに80ビットを「強い」、100ビットを「非常に強い」と評価しています。数十年使い続けるマスターパスワードについて、この記事ははるかに高い目標を掲げます:約250ビットのエントロピー です。その理由と、この余裕が保証しないことは、下の量子のセクションで説明します。
ニーズに応じて、これを達成するための2つの方法があります:
1. ランダムな文字(パスワードマネージャー用)
完全にランダムに生成された文字列。機械が突けるパターンはありません:
8}8,_$-p)M&n,XvUCT0o+.5hDE6P^w6b@U-evS0
私たちの生成ツールの91文字からランダムに選んだ39文字:≈ 253 ビット。この記事のために生成したため、すでに公開されています。絶対に使わないでください。
2. ランダムなパスフレーズ(覚えて使うパスワード用)
ランダムな単語は、ランダムな文字より覚えやすいものです。7,776語のEFFリストから選ぶ単語1つにつき約12.9ビットが加わるため、エントロピーは単語の数で決まります。12単語で ≈ 155 ビットとなり、生成ツールの「非常に強い」の基準を大きく上回ります。普通の単語だけで250ビットを超えるには20単語が必要です。
生成ツールの上限は12単語です。より少ない単語で250ビットを超えるには、「各単語の後にランダムな数字」にチェックを入れ、区切り文字に「数字 + 記号」を選びます。すると11単語で ≈ 260 ビットになります:
depletion78$sporting14~overlap11>macaw86>paced95,paramedic41}blot41$flagstone07;uncanny92/broadways77#say2
まさにこの設定で、この記事のためにランダムに生成したものです。公開されたパスワードは「焼けた」パスワードです。これも、目にしたどの例も、絶対に使わないでください。数に入るのはランダムに選ばれた部分だけです。各単語の先頭を大文字にしても何も増えず、自分で選んだ単語はランダムな単語よりはるかに弱くなります。
量子の脅威:グローバーのアルゴリズム
今日のスーパーコンピューターをすでにブロックしている128ビットがあるのに、なぜ250ビットを目指すのでしょうか?その答えは、大規模な量子コンピューターが登場する可能性にあります。
暗号化において、グローバーのアルゴリズム(Grover’s algorithm)を使用すると、量子コンピューターは古典的なコンピューターよりもはるかに高速に未ソートのデータベースを検索できます。具体的には、グローバーは対称鍵またはパスワードの 実効セキュリティレベルを効果的に半分にします。
グローバーのアルゴリズムを実行する量子コンピューターに対しては、128ビットのエントロピーを持つパスワードは、理論上、64ビット相当の耐性しか提供しません。これは、はるかに薄い余裕です。
エントロピーを2倍にすれば余裕は保たれます:約256ビットなら、グローバーのアルゴリズムに対しても約128ビットが残ります。この記事の250ビットという目標はここから来ています。これはこの記事が選んだ予防措置であり、何らかの標準から取った数値ではありません。
この余裕にも限界があります。グローバーのアルゴリズムによる高速化は二乗の程度にとどまり、無制限ではありません。その各ステップでは依然としてサイトのパスワードハッシュを計算する必要があり、しかもそれを実行できるほど大規模な量子コンピューター上で行わなければなりません。比較として、私たちの生成ツールのページが想定する毎秒1000億回の試行では、100ビットの平均的な探索だけでも少なくとも2000億年かかります。
この考え方は Harvest Now, Decrypt Later (HNDL) に似ています:盗まれたパスワードハッシュのデータベースは、今日保管しておき、後により優れたマシンで攻撃することができます。より大きな余裕は、それに対するハードルを引き上げます。ただし、恒久的な保証ではありません。
Arpokrat Password Generator:自分だけのパスワードを作る
アクセスのセキュリティを偶然に任せないでください。私たちの無料の生成ツールは、ランダムなパスワードとパスフレーズを作成します。それぞれについて、エントロピーのビット数と、探索にかかる平均時間を表示します。
このツールは生成するだけで、すでにお使いのパスワードを評価することはありません。上記の250ビットの目標には、4種類すべての文字種を使った39文字のパスワードを選んでください。生成ツールでは「≈ 253 ビット」と表示されます。
ブラウザ内で動作します。生成された内容が送信されたり保存されたりすることはありません。
最後の弱点:使い回しとアクセス管理
数学的エントロピーは人為的ミスから保護するものではありません。250ビットのパスワードも、一度流出すればその価値を失います。複数のサイトで使い回している場合(クレデンシャルスタッフィング(Credential Stuffing) と呼ばれる攻撃)や、二要素認証(2FA)で保護していない場合は、同じことが起こります。
デジタルハイジーン(デジタルの衛生管理)の黄金律は、覚えるべきパスワードは たった1つ、つまり250ビットのマスターパスワード(上記のようなランダムなパスフレーズ)だけにすることです。その他のすべてのアクセス(銀行、ソーシャルネットワーク、サーバー)には、それぞれ専用に生成した固有のランダムなパスワードを使用する必要があります。
覚えられないこれらのパスワードをすべて保管するには、パスワードマネージャーを使いましょう。同期する前に端末上で保管庫を暗号化するもの(「ゼロ知識」、Zero-Knowledgeとも呼ばれます)を選び、できればオープンソースで、独立した監査を受けているものを。
