情報ラボ > パスワードの強さ
文字を1つ増やすだけで、破るのにかかる時間はどれだけ変わるのでしょうか。
1文字に使える文字が何種類あるかで、組み合わせの数が決まります。
最後の例は「英小文字だけでも長ければ強い」ことを示しています。覚えやすい言葉をつなげる方法(パスフレーズ)の考え方です。
高性能なGPU(GeForce RTX 4090)1台で、MD5という古い方式で保存されたパスワードを 総当たりで破る場合の目安です。実際の時間は保存方式や機器によって大きく変わります。
参考:Hive Systems「Password Table」(2024年)/NVIDIA RTX 4090 での測定値をもとに算出
「通販サイトから流出させる」を押すと、何が起きるか分かります。
流出したIDとパスワードの組を、別のサービスで次々と試す攻撃を パスワードリスト攻撃(クレデンシャルスタッフィング)といいます。 1か所でも漏れると、使い回している他のサービスがすべて危険にさらされます。 パスワードそのものの強さとは関係なく成立してしまうのが、この攻撃の厄介なところです。
攻撃者がパスワードを手に入れる方法はいくつかあります。代表的なのが総当たり攻撃(ブルートフォース攻撃)です。考えられるすべての組み合わせを、片端から試していく方法です。
単純な方法ですが、コンピュータの速さがあれば十分に成立します。特にGPU(画像処理用の高性能な部品)は、同じ計算を並行して大量にこなせるため、この種の攻撃に向いています。
パスワードの組み合わせの数は、次の式で求められます。
数字だけの4桁なら、10の4乗で1万通りです。英小文字と数字を使った8文字なら、36の8乗で約2兆8000億通りになります。数字が急激に増えるのは、文字数が指数の位置にあるからです。
ここが重要な点です。文字の種類を増やすより、文字数を増やすほうが効きます。 種類を2倍にしても組み合わせは2倍にしかなりませんが、文字を1つ増やすと種類の数だけ倍になります。
サービス側は、パスワードをそのままの形では保存しません。ハッシュ関数という計算で変換した値を保存します。もとに戻せない一方向の計算なので、流出しても直接は使えません。
ただし、どのハッシュ関数を使うかで安全性が大きく変わります。
| 方式 | 特徴 | 8文字(全種類)の解読時間 |
|---|---|---|
| MD5 | 計算が速い。古い方式で、現在は推奨されない | 約1時間 |
| bcrypt | わざと時間がかかるよう設計されている | 約99年 |
出典:Hive Systems の調査(GeForce RTX 4090 を使用した場合の最長時間)
同じパスワードでも、保存方式が違うだけで1時間と99年という差が出ます。利用者側からは選べない部分ですが、サービスを作る側にとっては重大な設計判断です。
どれだけ強いパスワードを作っても、使い回していると意味が薄れます。1つのサービスから流出すれば、同じ組み合わせを他のサービスで試されるからです。
この攻撃をパスワードリスト攻撃(クレデンシャルスタッフィング)といいます。攻撃者は流出したIDとパスワードの一覧を手に入れ、自動化した仕組みで他のサービスに次々ログインを試みます。パスワードの強さは関係ありません。正解を知っているのですから。
実際、確認された情報漏えいのうち相当な割合が、盗まれた認証情報を入口としています。強いパスワードを1つ作って使い回すより、そこそこの強さでもサービスごとに変えるほうが安全です。
覚えやすさと強さを両立させる方法として、単語をつなげるパスフレーズがあります。無関係な単語を4つほどつなげると、20文字前後になり、総当たりでは現実的に破れません。「正しい 馬 電池 ホッチキス」のような、意味のつながらない組み合わせが有効です。
すべてを記憶するのは無理なので、パスワード管理ソフト(パスワードマネージャー)を使うのが現実的です。1つのマスターパスワードだけ覚えれば、残りは自動で管理されます。ブラウザに内蔵されているものでも構いません。
パスワードに加えて、スマートフォンに届く確認コードなどを組み合わせる方法です。パスワードが漏れても、それだけではログインできなくなります。
そもそもパスワードを使わない方法もあります。パスキーは、端末の中の秘密鍵で本人確認を行う仕組みです。パスワードのように「合言葉を相手に渡す」必要がないため、流出も使い回しも原理的に起こりません。
Apple、Google、Microsoftが共通の標準として進めており、対応するサービスも増えています。パスワードの限界を根本から解決する方向として注目されています。
かつては「大文字・小文字・数字・記号をすべて混ぜること」「90日ごとに変更すること」が推奨されていました。しかし現在では、この考え方は見直されています。
アメリカ国立標準技術研究所(NIST)が示した指針では、複雑さを強制するより長さを重視すること、定期的な変更を強制しないことが推奨されています。理由は単純で、複雑さを求めすぎると利用者が覚えられず、紙に書いたり単純な変形(Password1 → Password2)を繰り返したりして、かえって弱くなるからです。
大切なのは、無理なく続けられる方法を選ぶことです。長いパスフレーズと管理ソフトの組み合わせは、この観点からも理にかなっています。
総当たり攻撃の前に、攻撃者はまず「よくあるパスワードの一覧」を試します。これを辞書攻撃といいます。
毎年公開される調査では、「123456」「password」「qwerty」といった単純な文字列が上位を占め続けています。誕生日、名前、電話番号なども同様です。どれだけ文字数が多くても、一覧に載っている組み合わせなら一瞬で破られます。
上のツールで計算される時間は、あくまで「完全にランダムな文字列」を総当たりする場合の値です。意味のある単語をそのまま使っている場合は、この計算より遥かに早く破られると考えてください。
このページのツールに、実際に使っているパスワードを入力する必要はありません。文字数と種類を選ぶだけで計算できるようにしてあります。一般に、自分のパスワードを診断サイトなどに入力するのは避けるべきです。