オフィスの電話回線のご相談はお気軽にお問い合わせください。
防犯カメラ導入のご相談はお気軽にお問い合わせください。
テレワーク導入のご相談はお気軽にお問い合わせください
ホームページ制作のご相談はお気軽にお問い合わせください。
企業向けパソコン導入のご相談はお気軽にお問い合わせください。
ウォーターサーバー導入のご相談はお気軽にお問い合わせください。
全メーカー対応!新品・中古ビジネスフォンを激安で販売
新品・中古複合機が業界最安値!リースや保守も安心価格
社用携帯の新規契約・乗り換え・機種変更が圧倒的な安さ
もうビジネスフォン不要!社員のスマホで電話業務が完結
サイバー攻撃を遮断!企業を守るセキュリティ商品を完備
ビジネスフォンの各種工事を格安&スピーディに一括対応
オフィスのネットワーク環境構築から配線工事までお任せ
有資格のプロが対応!オフィスの電気工事をフルサポート
オフィス・事務所移転を低コスト&スピーディに徹底支援
IT専門家による経営革新&業務改善コンサルで課題を解決
SEO集客で成功へ導く!丸投げOK&本格運用の”FUKUJIN”
高寿命・省エネのLED蛍光灯でオフィスの電気代を削減
店舗やオフィスの集客力UPに効果的な電光掲示板を販売
一般的にパスワードやアクセスキーなどの重要なデータはハッシュ化して保存されるのですが、レインボー攻撃はハッシュ化した値さえも解読できるのです。
ここでは「レインボー攻撃」の仕組みや被害事例、攻撃を防ぐための対策について詳しく解説します。
「ハッシュ」「還元関数」などの専門用語をわかりやすく説明していますので、ぜひ最後までご覧ください。
この記事の目次
レインボー攻撃(Rainbow Attack)とはレインボーテーブルを使ってハッシュ化されたデータを解読する攻撃です。
アカウントを乗っ取る目的でパスワード解読に使われる「パスワードクラック(データを解析して他人のパスワードを割り出すこと)」の1つとして知られます。
利用するWEBサイトやアプリのデータベースがターゲットになったら、あなたの情報も解読される恐れがあります。
WEBサイトに登録するときは
します。
ユーザーの情報は認証の度に必要となるためサーバーのデータベースに格納されますが、情報をそのまま保存すると万が一不正アクセスされたときに悪用されます。
そこでデータベースに格納するデータを解読しにくくするために「ハッシュ化」するのです。
サイト運営者:「ハッシュ化」は暗号化とは少し異なります。まずは「ハッシュ化」について詳しく解説します。
「ハッシュ化」とは「ハッシュ関数」と呼ばれるアルゴリズム(一定のルールに基づいた計算)によって、元に戻せない「ハッシュ値」へと置き換えること。
「password」の平文(元の文)を、ハッシュ関数【MD5】を用いてハッシュ値に置き換えます。
「ハッシュ化」は安全性の高い方法ですが万能ではありません。 なぜならハッシュ関数が変わらない限り、同一テキストに対するハッシュ値は同じだからです。
先ほどお伝えした
は、「MD5」と呼ばれるハッシュ関数でハッシュ化したものです。 このような平文とハッシュ値はペアになっており、ハッシュ関数を変更しない限り変わることはありません。
単語や数字・記号を組み合わせて作られたデータのハッシュ値を推測するのは困難です。 しかし「レインボーテーブル」と呼ばれる「ハッシュ値から元の値を割り出すための対応表」を使うと割り出せます。
「レインボーテーブル」は「平文とハッシュ値の組み合わせを知っていれば還元可能」な性質を利用したものです。
「レインボーテーブル」には平文とハッシュ値の組み合わせが記録され、ハッシュ値を照らし合わせれば簡単に平文を導き出せます。
では、ここからレインボーテーブルとレインボー攻撃の仕組みをみていきます。
まず「レインボーテーブル」の仕組みについて解説します。
たとえば64種の文字や数字の組み合わせで、8文字のパスワードをつくるとしましょう。
この組み合わせ総数は281兆もの膨大な量になるうえ、ハッシュ値に変換した場合はビット数が増えて数千万テラバイトもの保存領域が必要となります。
つまり、考えられる全ての組み合わせデータは一般的なPCに保存できません。
この問題を解決するため、レインボーテーブル「還元関数」を使います。
還元関数
ハッシュ値を元に平文を得る関数。ただしハッシュ値を計算して元の平文に戻せるものではなく、ハッシュ値から元の平文とは別の平文へと変換するもの。
レインボーテーブルでは「ハッシュ関数」と「還元関数」を使い、大量の平文とハッシュ値のペアを「チェイン化」して生成します。 チェイン化は次のように行います。
※チェインを生成する際は「ハッシュ関数は都度同じもの」「還元関数は順番によって異なるもの」を使います。
これを繰り返し、最終的には「はじめの平文」と最後に還元関数で生成した「おわりの平文」のみを保存。 「はじめ」と「おわり」の平文以外のすべてを削除するので、記憶域を節約できます。
仮に100回・500回繰り返し行っても「はじめ」と「おわり」の平文以外は必要ありません。 何回行ってもはじめの平文が同じである限り、同じ手順を踏めば平文とハッシュ値の組み合わせを求められるからです。
レインボーテーブルを使えば、途方もないパスワードの組み合わせを圧縮して通常のPCでも処理できます。
次にレインボーテーブルを使って、どのようにハッシュ値から元のデータへと解読するかみていきます。
「おわりの平文」と一致しなかった場合は入手したハッシュ値を還元関数で平文にし、ハッシュ関数でハッシュ値にします。
そうして求めたハッシュ値をチェイン末尾のハッシュ値と比較し、一致するかを調べます。
チェイン末尾のハッシュ値と一致しなかった場合は同じように「チェイン最後から1つ前のハッシュ値と比較」を繰り返し、一致したらチェインを復元して目的の平文を見つけます。
レインボーテーブルを使って無差別攻撃すれば、相応数のデータを得られます。
パスワードクラックの1つとしてよく知られる「ブルートフォース攻撃」は、レインボーテーブルのようなデータを必要としません。 ただし解析時の総当たりに時間がかかる分、不正アクセスが検知されれば攻撃が成功する確率は低くなります。
レインボー攻撃はレインボーテーブルとそれを保存・解析できるだけのストレージさえあれば、成功確率が高くなります。 高速解読するものも出回っているため、それほど時間はかかりません。
とても効率的な攻撃方法なのです。
レインボー攻撃により「ハッシュ化していれば安全」の常識は覆されました。 事実レインボー攻撃によって次のような被害が起きています。
アメリカをはじめ世界各国で利用されるビジネス特化型SNS「LinkedIn」の被害事例です。
2012年に「LinkedIn」からおよそ1憶1,700万人分のパスワードが流出。
これらのパスワードは「ハッシュ化」されていましたがレインボー攻撃によって割り出され、およそ650万件以上がハッカーフォーラム(サイバー犯罪の闇市場)に投稿されました。
パスワードはハッシュ関数SHA-1で「ハッシュ化」されていましたが、強度を高める「ソルト」は行われていませんでした。
2015年、出会い系サイト「Ashley Madison」から40ヶ国3,300万人以上の会員のパスワードが流出しました。
このサイトでは「解読に数百年かかる」といわれるアルゴリズム「bcrypt」を使って「ハッシュ化」しましたが、解読されたのです。
原因はユーザーパスワードを通常ログインと自動ログインの両方に使用していたためでした。 自動ログインでは推奨されていないハッシュ関数MD5でハッシュ化し保存していたため、レインボー攻撃によって元のパスワードが簡単に割り出されたのです。
現在多くのアプリケーションやOSでは、パスワードやアクセスキーに対して「ハッシュ値」を個別に生成し保存する仕組みになっています。 しかしレインボーテーブルが出回り解析に時間がかからないなら、ハッシュ値から生成し保存するのは「盗まれるリスクを減らす」「盗まれるまでの時間稼ぎ」でしかありません。
レインボー攻撃からパスワードやデータを守るにはどうしたらよいのでしょうか?
最後にレインボー攻撃でデータを解読されるのを防ぐ対策についてご紹介します。
ユーザーはパスワードを設定する際、解読されにくいパスワードにするよう心掛けましょう。
英数字を組み合わせて複雑にし、できる限り文字列を長くすると解読されにくくなります。
「ハッシュ化」された値は「ソルト」で強度を高められます。
「ソルト」とはランダムに生成された文字列です。 ソルトを結合させると全く異なるハッシュ値になり、平文を前提に事前準備されたレインボーテーブルを無力化できます。
ただしすべてのパスワードに同じソルトを使うと、ソルトを解読できた場合にすべてのパスワードが読み取られます。 パスワード毎に異なるソルトの設定が大切です。
「ストレッチング」とはハッシュ値への変換を数千~数万回繰り返し行うことです。
ストレッチングを行うと元データをより推測しにくくなるため、解析までの時間稼ぎができます。 これはグラフィックボードなどを利用した高速解読にも有効な方法です。
ただしストレッチングはサーバーの負荷が増える点に注意。
ここまで「レインボー攻撃」の仕組みや被害事例、攻撃を防ぐための対策について解説しました。
万が一情報漏洩しても解読されないために行う「ハッシュ化」。 不可逆的な値へと変更するため、鍵管理が必要な暗号化よりも安全性が高いといわれていました。
しかしハッシュ値は「レインボー攻撃」によって簡単に解読されます。 「レインボーテーブル」のソフトやデータベースが出回っており、攻撃者は効率よくデータを盗み出そうと常にその機会をうかがっています。
レインボー攻撃を受けてデータ解読されるのを防ぐため、「パスワード難読化」「ソルト」「ストレッチング」「セキュリティ強化」による対策を行いましょう。
最も重要なのは「不正アクセスを許さない」ことです。 ネットワーク上の至る所に存在するセキュリティホールに対処し、不正アクセスをブロック・検知する強固なセキュリティ製品の導入をおすすめします。
会社の情報を守ることはクライアントや顧客からの信頼を得ること。 この機会にセキュリティの対策範囲を見直し、強化しましょう。
お役立ち情報カテゴリ