パスワード盗難防止ガイド(7)
前回までで書いてきたように、ローカルマシン上での「パスワード」は時に意味のある文字列(「抜けばアカウントを破れる文字列」)であり、時には意味のあまりない文字列(「抜いてもアカウントを必ずしも破れない文字列」)です。「パスワード盗難を防ぐ」をいう言葉は、つまり「クラッカーに『意味のある文字列』を渡さない」という意味であったりします。
最も「意味のある」文字列は、もちろん平文のパスワードです。一部ソフトは「平文のパスワード」つまり「最も意味のある文字列」をHDDなりレジストリなりに記録してしまう。当たり前ですが、それは「抜かれただけでアカウントを破られる情報」です。
また、キーボードによって打ち込まれる瞬間、打ち込まれるパスワードは確実に平文であり「最も意味のある文字列」である、と。故に、キーロガーを仕掛けられればキーボードを使ってパスワードを打つことにより、平文のパスワードは相手に届き、アカウントは破られる。
この連載では扱いませんでしたが、基本的にローカルマシンからサーバーに送信される瞬間も、パスワードは平文です。よってサーバーへの接続時にパケットキャプチャ等を使って通信を覗かれれば、平文のパスワードがバレることになりアカウントを破られてしまう。
次に「意味のある」文字列は、パスワードを一変数双方向関数に代入した値です。それは「関数」と併せられた時「平文のパスワード」となる。「関数」というのは、その暗号化・解読を行っているソフトそのものです。通常、ソフトを手に入れることは誰にでも出来るため、「パスワードを一変数双方向関数に代入した値」を手に入れたクラッカーは「そのソフト」を手に入れることで解読を行うことが出来る。つまり、アカウントを破られてしまう。FFFTPはこのタイプのソフトですね。設定ファイル内のパスワード情報は一見暗号化されているが、「設定ファイルを抜かれる」と「アカウントを破られる」は同値である。
その次に「意味のある」文字列は、パスワードを多変数双方向関数に代入した値です。この場合「平文のパスワード」を手に入れるには「関数」「他の入力」が必要になる。「関数」というのは先ほどと同じように「そのソフト」ですが、「他の入力」はそれほど簡単に手に入れられる物ではない(場合が多い)。パスワードを一変数双方向関数に代入するソフトに比べ、パスワードを多変数双方向関数に代入するソフトは「パスワードを盗難されにくいソフト」と言えるでしょう。
補足として書いておくと、最も「意味のない」文字列は、パスワードを一方向関数に代入した値です。この場合、「設定ファイルを抜かれる」と「アカウントを破られる」は基本的に同値でない。つまり設定ファイルを抜かれてもアカウントを破られることがない。設定ファイル内の文字列を平文のパスワードに解読することは不可能だからです。「『解読が不可能』な文字に何の意味があるのか?」という話ですが、「解読することは出来なくても認証に使用することは出来る」。このへんはこの連載では扱わないので「パスワードクラック概論」を参考にして下さい。「『解読が不可能』な文字列しか入手できなかった場合にどのようにアカウントを破ればよいのか」というのが、いわゆる「(サーバーに対する)パスワードクラック」の導入部となります。
この連載の最初に書いた通り、上記を知っても「ベストなパスワード管理方法」という絶対の答えを手に入れられる訳ではありません。それは上記を踏まえ一人一人が考えて下さい。その「考え」というのは、「補足」に書いた通り、いわゆる「(サーバーに対する)パスワードクラック」の導入部でもあります。「ローカルマシン上で如何にパスワード盗難を防ぐか」というテーマだけでなく、「パスワード」「暗号化」というキーワードが登場する様々な問いにおける汎用的な知識になるはずです。
・・・と、キレイにまとめておきます。

TrackBack
この記事へのトラックバック