トップページに戻る

Category

AllArchives

Checker

Credit

パスワードクラック概論(5)

前回までで、どのような「関数」がパスワード認証に向いているのか書いてきました。
  • 同じ「入力」に対しても「鍵」によって「出力」を変えられる関数
  • 「出力」から「入力」を求めることが不可能な一方向関数

実は、パスワード認証で使用されている「関数」はほぼ二種類しかありません。両方とも上記二条件を満たす関数です。

□1:DES
二文字の鍵を「XX」とすると出力は「XXYYYYYYY」となる。「Y」が「入力」「鍵」によって変わる。
□2:MD5
八文字(以内)の鍵を「XXXXXXXX」とすると出力は「$1$XXXXXXXX$YYYYYYYY$」となる。「Y」が「入力」「鍵」によって変わる。

特にMD5は「出力」が特徴的であるため、「パスワードデータファイル」を抜いたクラッカーは「そのサイト(なりサーバーなり)で使用されている関数」を推測することができます(逆の言い方をすると、関数の実体を推測されても使うだけのメリット・・・つまり「パスワード認証に使う関数」としての有用性・・・が上記二関数にはある、ということです)。
MD5ハッシュで暗号化されたパスワードは、DES ハッシュで暗号化されたパスワードよりも長いですし、その上$1$という文字で始まるという特徴も持っています
DESのパスワードはこれといって識別可能な特徴は持っていませんが、MD5のパスワードよりは短く、そして$という文字を含まない64文字のアルファベットを使って表現されているので、比較的短い文字列でドル記号で始まっていないものはおそらくDESのパスワードでしょう
FreeBSDハンドブック」内「DES,MD5,とCrypt」より
DES,MD5ともに「出力」を見れば「鍵」は分かる(が「入力」は分からない)という関数であるため、パスワードデータファイルを抜いたクラッカーのすべきことは
  1. そのパスワード認証で使用されている関数がDESなのかMD5なのか(もしくはその他の関数なのか)を判断する
  2. (DESかMD5だったならば出力から)「鍵」を読みとる
  3. 当該「関数」「鍵」に対して何を「入力」とすればパスワードデータファイル内の文字列が「出力」となるのか総当たり試行で探す
ということです。そして3の作業を自動化するのが「パスワードクラックツール」というヤツです。そうしたツールは凄まじい速度で様々な入力を当該関数に代入し代入結果を比較する。
一部のパスワードクラッキングソフトは、最新のPentium 4搭載マシンで毎秒800万件近くの文字の組み合わせを試すことが可能
ZDNet」内「史上最悪のセキュリティホールは、ユーザーのパスワード」より

「毎秒800万件」という数字は二つの意味を持っています。
□1: 辞書に載っているような英単語なら一瞬で「クラック」することができる
例えば僕の手元にある(いわゆる学生向けの)英和辞書は「収録語約6万」ということです。一般的にクラッカーは辞書ファイル(よく使われる文字列が羅列されたファイル)を読み込ませて「パスワードクラックツール」を使用するため、多少数字を組み合わせたところで数時間粘ることすら困難でしょう。
□2:ランダムなパスワードを破ることは現実的に不可能である
印刷可能な95種類のASCII文字を使った8文字のパスワードの組み合わせは6600兆以上。一部のパスワードクラッキングソフトは、最新のPentium 4搭載マシンで毎秒800万件近くの文字の組み合わせを試すことが可能だが、それでも8文字のパスワードを破るには平均で13年以上かかる。
ZDNet」内「史上最悪のセキュリティホールは、ユーザーのパスワード」より
ここまで来てようやく「辞書に出てくるような英単語をパスワードに使うのは危険」というよくある台詞の意味が分かったと思います。「危険」というのは何も「ログインformの『パスワード』に偶然その文字列を打ち込むクラッカーがいるかもしれないから」ではない。「パスワードクラックツールに辞書を読み込ませて総当たり試行させれば一瞬で破られるから」なのです。

「パスワードデータファイル」内の文字列は「正しいパスワードを一方向関数に代入した結果」であるため、理論上「パスワード認証」を破ることは(サーバー内部のパスワードデータファイルを抜いたとしても)不可能です。しかし多くの初心者ユーザーは「辞書に載っているような文字列」をパスワードにしている。ならば、「パスワードデータファイル内の文字列」を逆関数に代入することができなくても(英単語等の「関数」への代入による)総当たり試行によって破ることが可能である。
これが、今日の「パスワード認証」「パスワードクラック」の世界の概要です。

SeeAlso

SameSubCategory

Footprint

Navigation

TrackBack

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

Comment

随分前のことになりますが、MD5にコリジョンが発見されています。
触れられていないようなので、一応お知らせまでに。
http://www.google.com/search?q=MD5+%E3%82%B3%E3%83%AA%E3%82%B8%E3%83%A7%E3%83%B3

vagabond 2005/03/16 15:17:33

ご指摘ありがとうございます。
実はこのテキスト初稿が2002年とかだったりして全く話が古かったりします。うーん、そして、「そうだ」と考えてるんですが、どうなんでしょう・・・。いや、この記事の最後に「ちなみに」とその話を付け足すと、何か「MD5に『解の公式』が発見された」になるような気がするんですよねぇ・・・。この記事自体が導入編だから、ということなんですけど。
機会があれば、そもそも「コリジョン」とは何か、という場所から暗号講座の第二弾を書こうと思います。ご指摘いただきありがとうございました。

tokix 2005/04/02 01:34:24

レインボウ クラックの使い方を
教えていただきたいのですが

[匿名] 2006/02/01 20:17:17

すみませんが当サイトはパスワードクラックツールの使い方を解説するサイトではないです

tokix 2006/02/04 16:00:19

PostForm

情報を登録  
コメントは本文以外省略可能で、当方の承認後掲載されます