コンピュータセキュリティの足を引っ張っているのはパスワードです。パスワードの強度を高くするには、ユーザー次第です。そのためにはユーザーは、パスワード作成の苦手意識を克服しなければなりません。
ユーザーは強固なパスワードを作成することが相変わらず苦手です。一方、パスワードを解読に利用するツールやハードウェアはどんどん進化しています。
Web サイトのオーナーは、訪問したユーザーが強固なパスワードを設定できるよう、幅広い対策を講じることができます。その中で一般的な対策が、パスワード強度メーターの導入です。
パスワード強度メーターは、訪問者が作成しようとするパスワードが、どの程度の強度なのか知らせるためのものです。
実はその機能は完璧ではありません。
仕組み
パスワードが、どれだけ解読が困難なのかを判断する第 1 の方法は、解読を試みることです。
しかしパスワードの解読を試みるには、膨大な時間と処理能力が必要であるため、Web サイトに設置するパスワード強度メーターとしては現実的ではありません。
第 2 の方法は、破られづらいとされるパスワードの特徴に当てはまっているかどうかチェックすることです。
パスワード強度メーターは、パスワードの長さとエントロピーをチェックします。また大文字と小文字、数字、特殊文字が混在しているといった、パスワードに含めることが推奨される特徴をリスト化しています。
これにより、総当たり攻撃 (パスワードをランダムに推測する攻撃) に対するパスワードの耐性を判定できます。しかし、総当たり攻撃には対抗できても、それ以外の攻撃には有効ではありません。
総当たり攻撃は、すべての推測が等しく良いものであることを前提としています。
しかし、実際には一部の推測は他のものよりも大幅に優れています。これはユーザーがランダムなパスワードを作成しておらず、パターンや癖が隠れているためです。
最新のパスワードクラッキングでは、最小限の作業で最大数のパスワードを解読できるような順序で賢く推測していく手法が用いられています。
攻撃者は、実際に使用されている言葉の巨大なリポジトリをクラッキングソフトウェアに取り込み、ユーザーがパスワードを作成する時と同じ方法で取り込んだ言葉を変化させるルールを作成します。
攻撃者は、使用頻度の高い言葉を把握しています。また、ユーザーの稚拙な手法や悪い癖も分かっています。例えば、「O (大文字アルファベットの O)」を「0 (数字のゼロ)」、「A」を「4」に置き換える方法も、パスワードの先頭と末尾に大文字、特殊文字、数字を使用する傾向にあることも、攻撃者には知られています。
分かりやすく示すため、Web 開発者が Web サイトに組み込むことの多い種類のパスワード強度メーターを使って、いくつかテストしてみました。
テスト
解読されやすいパスワードを 5つ選び、5つの埋め込み可能なパスワード強度メーターを使用してパスワードをテストしました。
選択したパスワード
最も一般的に使われるとされる 10,000 個のパスワードのリストをダウンロードし、パスワード強度メーターが過大評価すると思われる特徴を持つ次の 5 つのパスワードについて調査しました。
- abc123 – リストの 14位。文字と数字の組み合わせでは 1位
- trustno1 – リストの 29位。文字と数字の組み合わせでは 2位
- ncc1701 – リストの 158位。『スタートレック』に登場する USS エンタープライズの登録番号
- iloveyou! – リストの 8778位。英数字以外では 1位
- primetime21 – リストの 8280位。文字と数字を使用した最も長いパスワード
上記のパスワードは間違いなくひどいパスワードであり、効果的な保護手段であるとは全く言えません。短い上にランダムではなく、辞書に収録されている単語が使用されており、最後に数字が付いているのもありがちです。また、インターネットから誰でもダウンロードできるリストに含まれています。
どれ程ひどいパスワードであるかが分からない方のために、証拠をお見せしましょう。
パスワード解読プログラム John the Ripper を使用して、上記パスワードを破るのにかかる時間を計測しました。プログラムの構成には何も手を加えず、2 年落ちのラップトップで実行しました。1 秒未満は四捨五入しています。
パスワード | 解読までの時間 (日:時:分:秒) |
---|---|
abc123 | 0:00:00:00 |
trustno1 | 0:00:00:00 |
ncc1701 | 0:00:00:00 |
iloveyou! | 0:00:00:00 |
primetime21 | 0:00:00:00 |
すべてのパスワードが 1 秒もかからずに瞬時に解読されました。しかも、専門のパスワード解読者であれば適切な機器を使用するはずですが、筆者が使ったのは、2年落ちのラップトップです。
パスワード強度メーターについて
できる限り現実に近い形でテストするため、jQuery プラグインとして提供されている強度メーターでテストしました。
もし、Web サイトにパスワード強度メーターを追加するよう開発者に依頼したとしたら、開発者は非常に高い確率で jQuery プラグインを使用するでしょう。これは、機能拡張を目的として、ほぼすべての Web サイトに組み込むことができるコードです。
筆者は Google で jquery strength meter と検索し、最初に表示された 5 つを選択しました。つまり、Google によれば、この 5 つが最も一般的であるということになります。
パスワード強度メーターで使用されているのと同じ言葉と色を以下の表でも使用しています。
パスワード | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
abc123 | 脆弱 | 脆弱 | 良 | 脆弱 | 脆弱 |
trustno1 | 標準 | 脆弱 | 良 | 標準 | 脆弱 |
ncc1701 | 中 | 脆弱 | 良 | 脆弱 | 脆弱 |
iloveyou! | 中位 | 良 | 良 | 中 | 脆弱 |
primetime21 | 中 | 良 | 良 | 中 | 中 |
前述したとおり、これらのパスワードは 0 秒で解読できます。ダウンロードしたパスワードリストにある他のパスワードもひどいものでした。
5 つのパスワードすべてを脆弱と判断しなかったパスワード強度メーターには、パスワードの強度の測定を任せられません。
テスト結果は、すべてのパスワード強度メーターは不合格でした。そのうえ、テスト結果もそれぞれでした。
テストの結果、信頼できるパスワード強度メーターは 1 つもありませんでしたが、だからといって世の中に 1 つも存在していない訳ではありません。
パスワード強度メーターが期待に応えていないことに気付いたのは筆者だけではありません。
モントリオールの Concordia University が、2014 年に詳細な調査結果を発表しています。その結論は次とおりです。
In our large-scale empirical analysis, it is evident that the commonly-used meters are highly inconsistent, fail to provide coherent feedback on user choices, and sometimes provide strength measurements that are blatantly misleading.
(引用文日本語訳) 大規模な実証分析の結果、一般的なメーターは一貫性が著しく欠如しており、整合性のある結果を提供することはできず、場合によってはあからさまに誤解を招く測定結果を出すことがあるのは明らかです。
ただし、わずかですが希望の光は見えます。
実環境においてパスワードの強化が成功した事例について Microsoft 社が実施した調査は、欠点はいろいろあるものの、パスワード強度メーターの使用はパスワードの強化につながる、という結論に達しています。
Those who saw a meter tended to choose stronger passwords than those who didn’t, but the type of meter did not make a significant difference.
(引用文日本語訳) メーターを見たユーザーは、見ていないユーザーよりも強固なパスワードを作成する傾向がありました。ただし、メーターの種類は大きな影響を及ぼしませんでした。
つまり、パスワード強度メーターは自分のパスワードが解読される危険性を教えてくれる信頼できるガイドではありませんが、最初に作成したパスワードよりも強固なパスワードを作成するようにユーザーをせっつく効果はあるようです。
強固なパスワードを生成できているかを確認する方法を知りたい方は、適切なパスワードを選択する方法を解説したこちらのビデオをご覧ください。
→ このページに動画が表示されない場合は、直接 YouTube から再生してください。音声が聞こえない場合は、字幕アイコンをクリックして字幕を表示させてください。