毎年5月第1木曜日の「世界パスワードの日」は過ぎましたが、パスワードのセキュリティに関する議論はまだまだ続いています。当社では、試験的にリサーチャーによって作られたパスワードではなく、現実の世界で一般の人々に使用されているパスワードを分析することを決め、ダークウェブ上で公開されていたパスワードを使用し調査しました。その結果は驚くべきもので、これらのパスワードの59%は、1時間未満で解読することが可能で、必要なのは最新のグラフィックカードとちょっとしたノウハウだけでした。
本日の記事では、ハッカーがどのようにパスワードを解読することができるのか、またその対策と自動的にパスワードの漏えいをチェックする方法について解説します。
パスワードを解読する一般的な方法
まず、「パスワードをクラック(解読)する」とはどういう意味なのかを明確にしましょう。これは、パスワードのハッシュ、いわゆるパスワードを表す一意の文字列を解読することです。企業は通常、ユーザーのパスワードを次の3つの方法のいずれかで保存しています。
- プレーンテキスト:まずは最もシンプルで明確な方法です。ユーザーのパスワードが例えばqwerty12345であれば、それはqwerty12345として会社のサーバーに保存されます。データ漏えいが発生した場合、ハッカーは対応するユーザー名とパスワードを入力するだけでログインすることができます。もちろん、二要素認証(2FA)が未設定の場合の話ですが、それでもサイバー犯罪者はワンタイムパスワードを傍受できることがあります。
- ハッシュ化:二つ目の方法は、MD5やSHA-1のようなハッシュアルゴリズムを利用し、各パスワードを固定長の文字列の形でユニークなハッシュ値に変換し、サーバーに保存します。ユーザーがパスワードを入力すると、システムは入力された文字列をハッシュ値に変換し、サーバーに保存されているものと比較します。両者が一致すれば、パスワードは正しいことになります。パスワードが同じqwerty12345の場合、SHA-1に「変換」すると次のようになります。4e17a448e043206801b95de317e07c839770c8b8.このハッシュを入手したハッカーは、レインボーテーブルなどを使って実際のパスワード、qwerty12345に復号する必要があります。これが「パスワードクラッキング」と呼ばれる段階です。解読されたパスワードは、侵害されたサービスだけでなく、パスワードが再利用された他のアカウントにもアクセスできてしまう可能性があります。
- ソルト付きハッシュ化:これは、美味しいテイクアウトの食べ物とは何の関係もありません。この方法は、ハッシュ化する前に、ソルトと呼ばれるランダムなデータ列を各パスワードに追加するものです。ソルトは、静的なものと動的に生成されるものがあります。パスワード+ソルトのシーケンスがアルゴリズムに入力されると、異なるハッシュが生成されます。したがって、事前に計算されたレインボーテーブルはハッカーにとって無用の長物となります。この方法でパスワードを保存すると、パスワードの解読がより困難になります。
今回の調査のために、私たちはダークウェブ上で公開されているパスワード、1億9300万件を入手し、独自のデータベースを作成しました。私たちはそれを使い、流出の可能性のあるユーザーパスワードをチェックしました。パスワードを保管するヴォールドの内部構造について、そして漏えいを発見する仕組みについては、カスペルスキー パスワードマネージャーをご覧ください。
パスワードクラッキングのコスト
最新のGPUは、パスワードの強度を分析するのに最適なツールです。例えば、RTX 4090 GPUとパスワード回復ツール、hashcatの組み合わせは、ソルト付きMD5ハッシュの一致において、毎秒1,640億ハッシュ(GH/s)を達成します。
例えば、8文字の小文字または8桁の数字で構成されるパスワードを想像してみましょう。単純に36の8乗で計算すると、ユニークな組み合わせの可能性は、2.8兆通りあります。毎秒6.7ギガハッシュ(GH/s)の処理能力を誇る強力なCPUなら、すべてのパスワードのパターンを7分で算出することができます。しかし、前述のRTX 4090 GPUはわずか17秒でこれを達成します。
このような高性能のGPUの価格は、2,000ドル弱ですが、それを手に入れることができない攻撃者でも、1時間あたりわずか数ドルでコンピューティングパワーを簡単にレンタルすることが可能です。しかし、12台のRTX 4090 GPUを一度に借りるとしたらどうでしょうか?膨大なハッシュデータベースのリークを簡単に処理するのに十分なパワーが得られるでしょう。
59%のパスワードが1時間未満で解読可能
私たちは、ブルートフォースアルゴリズムとスマートな類推アルゴリズムの両方を使ってパスワードの強度をテストしました。ブルートフォースは、一致する文字が見つかるまで、可能性のあるすべての文字の組み合わせを順番に繰り返しますが、スマートな類推アルゴリズムは、パスワードのデータセットで訓練され、さまざまな文字の組み合わせの頻度を計算し、最も一般的な組み合わせから最も稀な組み合わせまで選択します。使用されているアルゴリズムについては、Securelistの記事(英語)をお読みください。
解析した1億9,300万件のパスワードのうち、なんと45%(つまり8,700万件のパスワード!)が1分未満で解読することに成功しました。また、59%が1時間未満、67%が1ヶ月未満で、そして本当に強力なパスワードはわずか23%(解読に1年以上必要)に過ぎないことが明らかになりました。
解読にかかる時間 | 解読可能なパスワードの割合 | |
ブルートフォース | スマートな類推 | |
1分未満 | 10% | 45% |
1分以上~1時間未満 | +10% (20%) | +14% (59%) |
1時間以上~1日未満 | +6% (26%) | +8% (67%) |
1日以上~1か月未満 | +9% (35%) | +6% (73%) |
1か月以上~1年未満 | +10% (45%) | +4% (77%) |
1年以上 | +55% (100%) | +23% (100%) |
驚くことに、データベース内のすべてのパスワードを解読する時間は、たった1つのパスワードを解読するのと比べて、それほど変わりありませんでした。各反復で、次の文字の組み合わせのハッシュを計算した後、攻撃者は同じものが一般的なデータベースに存在するかどうかをチェックします。もし存在すれば、そのパスワードは 「解読済み」とマークされ、その後アルゴリズムは他のパスワードを推測し続けます。
スマートな類推アルゴリズムが効果的な理由
人間は予測可能な生き物です。私たちが本当にランダムなパスワードを選ぶことはめったになく、パスワードを生成する試みは、機械に比べれば非常に単純です。例えば私たちは、一般的なフレーズ、日付、名前、パターンに依存しています。まさに、賢いクラッキングアルゴリズムが悪用するように設計されているのです。
さらに、人間の脳は、1~100の間で数字を選ぶよう人々に尋ねると、ほとんどの人が同じ数字を選ぶという調査結果があります。YouTubeチャンネル、Veritasiumを運営するクリエーターが約20万人を調査したところ、最も人気のある数字は7、37、42、69、73、77ということがわかりました。
ランダムな文字列を試す場合でも、私たちはキーボードの真ん中のキーを好む傾向があります。私たちが分析したパスワードの約57%は、辞書的な単語やよく使われる記号の組み合わせを含んでいました。懸念すべきは、これらのパスワードの51%は1分未満、67%は1時間未満で解読でき、1年以上かかったのはわずか12%でした。しかし、辞書的な単語のみで構成されたパスワード(1分以内に解読される可能性がある)は、少なくとも数個しかありませんでした。私たちが遭遇したパスワードパターンの詳細については、Securelistの記事(英語)をご覧ください。
スマートなアルゴリズムは、辞書配列を含むほとんどのパスワードを短時間で処理します。「パスワード」の代わりに「pa$$word」と書いたり、「admin」の代わりに「@dmin」と書いたりしても、パスワードはそれほど強化されません。よく使われる単語や数字の羅列を使うのも同様に危険です。私たちが調査したパスワードの4%に、以下のようなものが含まれていました。
- 12345
- 123456
- love
- 12345678
- 123456789
- admin
- team
- qwer
- 54321
- password
身を守るために
今回の調査結果のまとめは次の通りです。
- 多くのパスワードは脆弱で、59%が1時間で解読されてしまいます。
- パスワードに意味のある単語、名前、標準的な文字列を使用すると、パスワードの推測時間が大幅に短縮されます。
- 最も解読されやすいパスワードは、数字や単語だけで構成されたものです。
アカウントを安全に保つために、以下の対策を推奨します。
- カスペルスキー パスワードマネージャーを使用して強力なパスワードを作成しましょう。
- パスワードを自分で作成する場合は、意味のある単語の組み合わせや名前、辞書列ではなく、ニーモニックパスフレーズを使用しましょう。
- すべての企業がユーザーデータを安全に保存しているわけではないので、異なるサイトで同一のパスワードを使用しないようにしましょう。
- ブラウザーにパスワードを保存しないようにしましょう。
- パスワードはパスワードマネージャーに安全に保存し、解読されない主要パスワードを作成しましょう。
- パスワードチェッカーやカスペルスキー パスワードマネージャーで、パスワードの耐クラック性を確認しましょう。パスワードチェッカーは、脆弱なパスワードや重複したパスワードを特定し、すべてのパスワードを危険なデータベースと照合して、一致するパスワードが見つかった場合に警告を発します。
- カスペルスキー プレミアムを利用して、自分や家族の電話番号やメールアドレスに紐づくすべてのアカウントをバックグラウンドで継続的に監視し、情報漏えいがないかを確認します。
- 可能な限り2FAを有効にしましょう。ちなみに、カスペルスキー パスワードマネージャーでは、2FAトークンの保存やワンタイムコードの生成も可能です。