テクノ雑学
第80回 あなたのパソコンは大丈夫? - パスワードを強化しよう -
あなたはパソコンにログオンパスワードを設定していますか? 設定していない場合はもちろんですが、設定していても、すでに中身は他人に覗かれ放題……という状態になっているかもしれません。Windowsのパスワード認証の仕組みを利用した、「レインボークラック」と呼ばれる、非常に効率的なパスワード解析手法が広く知られるようになってきたからです。
パスワードの解析手法
最初におことわりしておきますが、パスワード解析技術そのものは“悪”でもなんでもありません。たとえば、重要なファイルが入ったパソコンの起動パスワードがわからなくなってしまった場合のフォローなど、正当なニーズも多々あります。技術そのものには善も悪もなく、問題はその用途です。
パスワード解析手法として昔からポピュラーなのは、「ブルートフォース」式と「辞書利用」です。
ブルートフォースは「力まかせ」の意味で、パスワードに使える文字列を順番に、総当たり式に試してみる解析方法を指します。パスワードに使える文字には制限があり、多くの場合はアルファベットの大文字と小文字、数字、アンダーバーなどの記号となっていることはご存じでしょう。また、文字数にも「4文字以上8文字以下」といった制限があることから、片っ端から試してみることで解析するわけです。
とはいうものの、組み合わせ可能な文字列の量は人間が手入力で試せるレベルではありませんから、コンピュータで専用プログラムを動作させて解析していくことになります。いつか必ずパスワードを発見できる反面、解析効率の面では劣っていますが、現在のパソコンが持つ高い計算能力をもってすれば、現実的な時間で解析できてしまう可能性を無視できなくなってきています。
覚えやすさを重視し、完全にランダムな文字の組み合わせではなく、なんらかの意味のある単語をパスワードに使っている人も多い点に着目したのが、辞書利用型のパスワード解析です。ブルートフォースのように1文字ずつ試していくのではなく、辞書ファイルに登録済みの文字列を順番に試していきます。パスワードが辞書に載っている文字列だった場合は、非常に短い時間で解析できます。
いずれもパソコンの性能向上によって現実的な時間で可能になったものですが、それでも長ければ数週間、数ヶ月という時間が必要になる可能性もあります。また、OS自体のログオンパスワードに関しては、解析プログラムの実行方法の問題もあり、現実的には困難ではありました。
しかし、レインボークラックを使うと、ものの数分程度でパスワードが解析されてしまうのです。
■ パスワードの仕組み
|
一般論として、パスワードはそのまま記憶されるのではなく、「ハッシュ値」に変換されて格納されています。ハッシュ値とは、データが持つビット列をなんらかの関数によって一定長さの文字列に変換したもので、異なるデータから同じハッシュ値が得られることはほとんどありません。そのことから、たとえばソフトウエアをダウンロードする際、落としたファイルと元ファイルのハッシュ値を照合することで正常にダウンロードできたか否かを判断する、といった用途に用いられます。
パスワードをハッシュ値で保存しておく理由は、「ハッシュ値と関数が分かっていても、そこから元データを算出することはできない」という特徴によります。パスワードをテキストではなく、ハッシュ値と所有者情報に変換して格納しておけば、なんらかの手段によってパスワードを保存しているディレクトリにアクセスされてしまった場合でも漏洩が防げることになるからです。
Windows 2000/XPは比較的強固な暗号化システムによってパスワードを保護しているのですが、さまざまなネットワーク機器との互換性を維持するため、Windows 9x/Meで採用されている暗号化方式を使ったLAN Managerハッシュも生成します。
■ レインボークラックとその回避方法
LAN Managerハッシュは「レインボーテーブル」と呼ばれるデータベースに格納されます。このレインボーテーブルに格納されているハッシュ値を読み取り、解析プログラム側が持っているハッシュ値の元データ一覧と照合することにより、非常な短時間でパスワードをクラックしてしまうのがレインボークラックです。
すでにネット上には、レインボークラックを可能とするソフトウエアと、それ用のデータベースが出回っています。試しに手持ちのパソコンで試してみたところ、10文字程度のパスワードはものの数分で解析されてしまいました。
あくまでログオンパスワードを解析するものですから、現時点では物理的にパソコンにアクセスしなければ解析される恐れはありませんが、非常に短時間で解析出来てしまうことから、会社で離席している間に……といったケースは十分にありえます。パソコンを紛失してしまった、盗難にあったといった場合は、まず確実に解析されてしまうことにもなります。
もちろんMicrosoft社もこの点は認識しており、レインボークラックを回避する方法を公開しています。
もっとも簡単で確実なのは、パスワードの長さを15文字以上に設定することです。Windowsがハッシュを記憶しておくのは14文字までのパスワードに限られるので、15文字以上にすればレインボークラックの被害を避けることができます。これも手元で実験してみましたが、見事に解析不可能となりました。
Microsoftは、ほかにもログオンパスワード解析を回避する方法を公開していますから、ご参考の上、使用環境に適した方法でパスワードを保護するようにしましょう。
【 参考リンク 】
■Windows でパスワードの LAN Manager ハッシュが Active Directory とローカル SAM データベースに保存されないようにする方法
Windowsのログオンパスワードは上記の方法で保護できますが、今後も増え続ける便利なネットワーク上のサービスなどを利用する上で、パスワードの“強さ”は常に意識しておく必要があります。
一般論として、「OSのログオン、メール、ネットワーク上のサービスなどで、それぞれ異なるパスワードを使う」ことが大前提となります。また、メールなどUNIX系サーバ上で用いられるパスワードは、見かけ上16〜24文字まで使えるようになっていても、実際には先頭の8文字しか使ってないこともありますから、最初の8文字を強化しておくことも重要です。
強いパスワードを作るための一般的な指針は、文字列に使用可能な種類の文字をすべて使い、可能な限り長く設定することです。また、ネット上には、乱数表などを使ってランダムな文字列によるパスワードを生成、また複数のパスワードを管理しておけるようなフリーソフトが多く公開されていますから、それらを活用するといいでしょう。
しかし、強い=複雑 or 完全にランダムな文字列からなるパスワードを記憶しておくことはなかなか難しいものです。そこで筆者が提案したいのが「パスフレーズ+語呂合せ+独自ルールによる英数字化」です。
まず、自分にとって覚えやすいパスフレーズを考えます。例として、「アッと驚くタメゴロー」を独自ルールによって英数字化してみます。
アッと 驚く タメゴロー
a!T_0droW9_tamE56
文節の末尾、もしくはアルファベットと数字の境目には大文字を使う。
「驚く」の部分に、最初のO(オー)を0(ゼロ)に置き換え、その後は「drow9」と馴染みのある単語+数字に置き換えて無意味な文字列にしている。
文節区切りにアンダーバーを用いる。
このような独自ルールを用いることで、覚えやすいフレーズから無意味かつ十分な長さを持つ文字列を作り出し、さらにパスワードとしてとしての強度を高めてみました。みなさんも、自分なりのルールによって長く、強く、覚えやすいパスワード作りに挑戦してみてください。
著者プロフィール:松田勇治(マツダユウジ)
1964年東京都出身。青山学院大学法学部卒業。在学中よりフリーランスライター/エディターとして活動。
卒業後、雑誌編集部勤務を経て独立。
現在はMotorFan illustrated誌、日経デジタルARENAなどに執筆。
著書/共著書/編集協力書
「手にとるようにWindows用語がわかる本」「手にとるようにパソコン用語がわかる本 2004年版」(かんき出版)
「記録型DVD完全マスター2003」「買う!録る!楽しむ!HDD&DVDレコーダー」「PC自作の鉄則!2005」(日経BP社)
「図解雑学・量子コンピュータ」(ナツメ社)など
TDKは磁性技術で世界をリードする総合電子部品メーカーです