システムに侵入した攻撃者がデータベースダンプからパスワードを取得するには、パスワードハッシュをクラックする必要がある。パスワード解析には長い時間を要することもあるが、統計的な分析を取り入れることで効率を上げる手法があるそうだ(
Praetorian Security Blogの記事、
本家/.)。
現在ではユーザーに複雑なパスワードの作成が要求されるようになっており、システム側もより高度なハッシュアルゴリズムを使用するようになってきていることから、効率の良いパスワードクラック手法が必要となる。通常は短時間で完了する辞書の総当たりから始め、単語と数字や記号を組み合わせたハイブリッド方式、マルコフ連鎖によるパスワード生成など、より時間のかかるものを順に試していくことになる。しかし、大文字や数字、記号の位置、同じ文字種の連続といったパスワードの構造について、どれから試していくのかによって所要時間が大きく異なる。そこで、パスワードの構造を統計的に分析したものを利用することで、効率の良いパスワードクラックが可能になるという。
過去に流出した3,400万以上のパスワードについて構造を解析した結果、13種の構造のみで全パスワードの50%を占めていたそうだ。また、パスワードの作成時に求められる要件によっても、選択されるパスワード構造に偏りがみられるとのこと。たとえば、大文字のアルファベットを1文字以上使用することがパスワードの要件となっている場合、90%以上が大文字を1文字のみ、パスワードの先頭に使用するという。数字を含める必要がある場合、ほとんどのユーザーが2桁の数字をパスワードの末尾に付加しており、次に多いのが4桁の数字を末尾に付加したもの。末尾に1桁の数字を付加したもの、末尾に3桁の数字を付加したものが続く。
よく使われるパスワード構造を避けることで、統計によるパスワードクラックに強いパスワードを生成できるが、ランダムな構造にすると覚えにくくなってしまう。記事では2要素認証のパスワードマネージャーの使用を推奨している。皆さんはクラックされやすそうなパスワード構造を使用していないだろうか。