ここに書くパスワード解析とは、掲示板等の管理者用パスワードをクラックする事。
まあ
それに限った事ではないんだけど、よくある掲示板の管理者用パスワードや記事削除用パスワードは
そのまま記録している訳じゃなく、ある特定の方法を使って暗号化してある事が多い。
平のままデータを保存すると
それを見られただけでパスワードが分かってしまうから危険だしね。(中には平のままパスワードを記録している間抜けな掲示板もあったけど)
Unixの/etc/passwdやApacheの認証ファイルにも暗号化したパスワードを使っているが、ほとんどの掲示板で使っているperlでは、crypt関数(crypt(3))を用いて文字列を暗号化している。
例えば「doraevon」という文字をcryptで暗号化すると「zHGbXs2sUjgd6」となる。
残念だが、この「zHGbXs2sUjgd6」から「doraevon」に戻す事は通常ではほとんど不可能だ。
では掲示板などでは
どうやって照合しているかというと、入力された平のパスワードを
同じように暗号化して、それを比べる方法をとっている。
入力されたパスワードを暗号化して、それが「zHGbXs2sUjgd6」であれば正しいと判断する訳。
ただし「doraevon」という文字を暗号化すると必ず「zHGbXs2sUjgd6」になる訳じゃなく、「uGQlXPcZwTA6I」になったり「A9Wa5RIPZHgMw」になったりもする。(これらは「doraevon」を暗号化したもの)
んじゃどうやって照合するかと言うと、キーワードは始めの2文字。
つまり、「zHGbXs2sUjgd6」と暗号化したパスワード「doraevon」は、頭の「zH」をキーワードに暗号化すれば「zHGbXs2sUjgd6」が出力されるのだ。
このキーワードは通常「SALT」と呼ばれている。解読には当然
正しいパスワードが必要だが、このSALTも暗号化されたパスに合わせなければならない。
この方法の暗号化は64種類(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./)
の文字の組み合わせを使うので、SALTの種類は4096通りにある。つまり、1つのパスワードで4096通りの違った暗号化パスワードが出来るのだ。
また暗号化されたパスワードが「$1$ZM$7IgD.6iQAayZikiZcDf6P0」と言うように、「$」が先頭にあるやたらに長いものもある。これは暗号化の方式の違いなのだが、この後で説明する。
ちなみに「$1$ZM$7IgD.6iQAayZikiZcDf6P0」は「password」を暗号化したもの。
実際の解読
解読作業を手作業でやろうとしても、まず無理だろう。運がよければ出来るかもしれないが、便利な事にそれをやってくれるソフトが存在する。ただし、100%解読出来ると言う訳ではない。誤解しないように。
またパスワードクラックと言うとUGなイメージがあるが、実は世界規模である暗号方式をクラックしよう、と言うコンテストがある。興味のある人は見てね。