解読方法を説明する前に、暗号化方法の事をちょっとだけ。
さっきも言ったけど、暗号化されたパスワードには、「zHGbXs2sUjgd6」や「$1$ZM$7IgD.6iQAayZikiZcDf6P0」のような明らかに違うタイプがある。
- DES(Data Encryption Standard)
「zHGbXs2sUjgd6」はこの暗号方法。セキュリティの専門家がいうところの「一方向ハッシュ関数、共有鍵暗号アルゴリズム」を使ったものだが、実は結構古い暗号方法で、1977年にIBMのLucifer(ルシファー)
というアルゴリズムが、アメリカ政府が公募した暗号アルゴリズムの候補になって出来上がったもの。
8文字までしか暗号化出来ないのがネックで、そのため短時間で総当たりで(英語ではbrute
force attackと言われてる。ひでぇ・・・・)強引に解読する事が可能。しかも、すでに解読方法も発見されている。
パスワードが8文字までなのはDESの暗号化する時に使う鍵の長さが56ビットしかないためで、3DES(トリプルDES:DESを3重に繰り返す多重暗号方法)という改良されたものなら16文字あるいは24文字まで有効になる。
またDES-CBC(Cipher Block Mode)では,入力を単純に64bitずつに区切るのではなく,最初の64bitの暗号文出力と次の64bit入力をXORし,これを次段のDESの入力としている。
鍵の種類は2^56(7京2057兆5940億3792万7936)あるが、(xbitの鍵ならば、最低でも2x試せば鍵を見つけられる)現在のスーパーコンピュータでは数時間で全ての鍵を試すだけの処理能力があるらしい。70年代のマシンじゃ確かに大変だったろうが・・・・。
DESの専門的な説明はここ。(パクリ)
- MD5(Message Digest 5:メッセージ要約値)
「$1$ZM$7IgD.6iQAayZikiZcDf6P0」はこっち。RSA Data Security
社の一方向ハッシュ関数を用いた暗号方法で、頭に「$1$が付き、その後の2文字がsaltになる。
PC UnixでLinuxと並んで有名なFree BSDで使われている事が多い。(Free
BSDでもインストールすればDESは使える。Linuxは始めからDESだと思った)
セキュリティレベルはDESより高く、扱うパスワードも8文字以上が可能。その分、解読にかかる時間はDESより長くなる。