では、現実的な強いパスワードの作成に取り掛かろう。「基本方針」は、たったの3つ(図3-1)。これらを実践するだけで、十分破られにくいパスワードを作れる。

図3-1●強化のための「基本方針」
図3-1●強化のための「基本方針」

 まず、使っているパスワードが「ユーザーIDと同じ文字列」あるいは「パスワードなし」の場合には、今すぐ変更すべき。これが、最初の基本方針だ。

 「現状編」で説明したように、これらは、攻撃者が最初に試す文字列であり、簡単に破られるパスワードの代表格。そのまま使い続けるのはとても危険だ。これらの使用をやめて、後述するような文字列に変更すれば、「単純な推測」によるパスワード破りを防げる。

 次に防ぐべきは「辞書攻撃」。辞書攻撃に対抗するには、パスワード破り用の辞書に存在しない文字列にする必要がある。とはいえ、「現状編」で述べたように、頭に思い浮かぶような文字列は、すべて辞書に含まれていると考えた方がよい。

記号を入れれば強くなる

 辞書にない文字列を作る最も簡単な方法は、記号を入れること。それが、基本方針の2番目だ。

 「現在使用しているパスワードの一番最初に記号を1つ挿入するだけでも、格段に強くなる」(セキュリティフライデーの佐内氏)。同様の意見は、今回取材した専門家のほとんど全員から聞かれた。

 実際、認術修業(「現状編」を参照)で「辞書に含まれる」とされた文字列に記号を入れると、いずれも辞書に含まれない文字列と判定された(図3-2)。つまり、総当たり攻撃でしか破られないパスワードになる。

図3-2●記号を入れるだけで強くなる
図3-2●記号を入れるだけで強くなる
「使われがちなパスワード」に記号を入れた文字列を、「認術修業」でチェックした例。記号を入れると、パスワード破り用辞書に含まれない文字列になるとともに、総当たり攻撃にも強くなるので、破られるまでの推定時間が「0秒」から大幅に延びる。

 さらに、「通常、総当たり攻撃を行う際には、記号は後回しにされる」(ラックのコンピュータセキュリティ研究所所長の岩井博樹氏)ため、アルファベットや数字だけで構成された文字列よりも、総当たり攻撃に強くなる。記号を入れることは、辞書攻撃と総当たり攻撃の両方に対して有効なのだ。

 なお、ここでの推定時間とは、「この時間があれば、パスワードを破ることができる」という意味であり、破るまでにかかる最長期間を指していることに注意してほしい。この期間中にパスワードが破られないことを保証するものではない。例えば、認術修業で推定時間が「393年以上」と表示されても、パスワード破りツールによっては、これよりも短時間で破られることはありうる。

 もう一つの注意点は、パスワードのサンプルを、そのまま使用しないこと。これは、この記事に限ったことではない。セキュリティ関連の書籍やWebサイトには、強いパスワードのサンプルが載っていることがある。それらは公開情報であり、攻撃者を含め、誰でも入手できる。このため、サンプルをそのまま使うユーザーを狙って、パスワード破り用辞書に追加されている可能性がある。

ハイフン以外の記号を

 前述のように、冒頭に記号を1文字入れるだけでも、パスワードはぐっと強くなる。最低でもそれはやってほしい。

 ただ、せっかく記号を入れるなら、もう一工夫したい。それによって、パスワードの強度がさらに高まるからだ。その一つが、記号を複数入れること。覚えやすさとは相反するが、入れれば入れるほど強くなる。

 もう一つが、「記号の中でも、パスワード破りに使われる頻度が少ない記号を使うこと」(インターネットセキュリティシステムズの守屋氏)。図3-3は、同社が収集した複数のパスワード破り用辞書で使われている記号の割合を集計したもの。辞書に含まれる記号の総数を100%として、記号ごとの割合を示した。記号によって、差があることが分かる。

図3-3●使われない記号を入れる
図3-3●使われない記号を入れる
パスワード破り用の辞書に含まれる記号の総数を100%とした場合の、各記号が占める割合。インターネットセキュリティシステムズの調査による。辞書に含まれる文字のほとんどはアルファベットの小文字と数字なので、どの記号であっても辞書攻撃に対して十分有効だが、ほとんど使われない記号(0.0%の記号)を含めることで、さらに強くできる。

 同社によれば、辞書に含まれる文字の97%がアルファベットの小文字と数字だったという。このため、どの記号を使っても、辞書に含まれる文字列になる可能性は低いが、頻度の少ない記号を使うことで、さらに強度を高められる。ハイフン(-)は記号の中では頻度が高いので、避けた方がよさそうだ。