「応用情報技術者試験/平成31年春季午前問38」レインボー攻撃

問題

出典:応用情報技術者平成31年春季午前問37

パスワードクラック手法の一種である、レインボー攻撃に該当するものはどれか。

ア:何らかの方法で事前に利用者IDと平文のパスワードのリストを入手しておき、複数のシステム間で使い回されている利用者IDとパスワードの組みを狙って、ログインを試行する。

イ:パスワードに成り得る文字列の全てを用いて、総当たりでログインを試行する。

ウ:平文のパスワードとハッシュ値をチェーンによって管理するテーブルを準備しておき、それを用いて、不正に入手したハッシュ値からパスワードを解読する。

エ:利用者の誕生日や電話番号などの個人情報を言葉巧みに聞き出して、パスワードを類推する。

解説

レインボー攻撃の前提として、「クラッキング先のハッシュ関数」と「クラッキング先のハッシュ値のテーブル」を入手していること。

ハッシュ値から平文は復元できないが、理論上は「平文の対象となる全ての文字の組み合わせ全て」に対してハッシュ関数を取得して、そのハッシュ値と「クラッキング先のハッシュ値」を比較すれば、平文パスワードを知ることができる。

しかし、8文字のパスワード、大文字、小文字、数字、記号という平文の組み合わせは281兆にも及び、さらにハッシュ値に変換すると6700万テラバイトもの膨大なデータ量が必要になる。実際に行うには到底無理なクラッキング方法である。

ここでレインボー攻撃の特徴である還元関数というものが出てくる。この還元関数とはハッシュ値から「元のパスワードリストのどれか」に対応させるものである。「どれか」であるので、元の平文に戻る訳ではない。どれかしらに対応付けられるだけである。

しかし、「どれかの平文に変換する」→「その平文をハッシュ値にする」→「さらにそのハッシュ値を平文にする」という繰り返しが行えるようになったおかげで、「6700万テラバイトもの膨大なデータ量」を保持しておく必要がなくなった。何故なら、還元関数とハッシュ関数と計算をすれば導き出せる値だからだ。

還元関数とハッシュ関数を繰り返し使用し、「平文から導き出したハッシュ値」が「クラッキング先のハッシュ値のテーブル」と合致しているならば、それが正解の平文パスワードとなる。

尚、このレインボー攻撃は「ハッシュを多重化する」「ソルト(パスワードに特定の文字を付加してからハッシュ関数にかける)」といった方法で防ぐことができる。

解答

正解:ウ

アドセンス
改行

テックキャンプ