「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

レインボー攻撃

pointこの用語のポイント

pointハッシュ値から元の値を割り出す やり方だよ

pointパスワードを盗んだりするときに使われるよ

スポンサーリンク

簡単に書くよ

レインボー攻撃(読:レインボーコウゲキ 英:rainbow attack?)とは

7色の光線をコンピュータに浴びせることでコンピュータをラリラリにし、セキュリティを無効化する攻撃のこと(大嘘)
本当は

あらかじめハッシュ値(元の値を「ハッシュ関数」という関数に入れて変換した値)と元の値の対応表を作っておいて、その対応表と突き合わせることで、ハッシュ値から元の値を割り出すやり方
です。


image piyo

詳しく書くよ

ここにパソコンさんがいます。

レインボー攻撃

パソコンさんにピヨ太君特製「ピヨラリア七光線」を当てます。
ピヨラリア七光線は7色に輝くヤバい光線です。
別名「レインボーピヨシャワー」とも呼ばれます。

レインボー攻撃2

ピヨラリア七光線を浴びたパソコンさんはラリラリになります。

レインボー攻撃3

あとは、やりたい放題です。
パソコンさんから好きな情報をゲットできます。

レインボー攻撃4

このような攻撃のやり方が「レインボー攻撃」です。

レインボー攻撃5

……というのは、もちろん大嘘です。

レインボー攻撃6

長々とウソを書いてゴメンなさい。
真面目に説明します。

レインボー攻撃7

順番に見ていきましょう。
まずは予備知識として

関数
ハッシュ関数
ハッシュ値


について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

関数は「何かを入れると何かをやって何かを返してくれる、処理のまとまり」です。
一般的には、入力を受けて処理をやり、その結果として出力があります。

レインボー攻撃8

ついでなので書いておくと、関数に入れる値は「引数(ヒキスウ)」と言います。

レインボー攻撃9

関数から出てくる値は「戻り値」です。

レインボー攻撃10

ちょっと汚い話で恐縮ですが、人間は、ご飯を食べて、ウンチを出します。

レインボー攻撃11

人間が関数だと考えてください。
ご飯に相当するものが引数です。
ウンチに相当するものが戻り値になります。

レインボー攻撃12

ハッシュ関数は「入力に対応する適当な値(適当に見える値)を返してくれる関数」です。
例えば「愛媛みかん」を入れると「3」が返ってきます。
「青森りんご」を入れると「4」が返ってきます。
「栃木苺」を入れると「とちおとめ」が返ってきたりします。

レインボー攻撃13

何を入れると何が返ってくるか、入れたものからは分かりません。
返ってくるのは適当な値です。

ただし、同じものを入れれば、必ず同じ値が返ってきます。
「愛媛みかん」を入れると、必ず「3」が返ってきます。
何回入れても「3」が返ってきます。

1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる


というのがハッシュ関数の特徴です。
※話を単純化するために「適当な値」という表現を使っていますが、実際には適当では ありません。入力されたデータを「特定のルールに沿って」ぐちゃぐちゃにした値が返ってきます。

ハッシュ値は「ハッシュ関数から返ってくる値(戻り値)」です。
入力されたデータをもとにして作られた適当な値(適当に見える値)です。

レインボー攻撃14

ハッシュ値には

1.ハッシュ値から元のデータを特定するのは、ほとんど無理
2.元のデータが同じなら生成されるハッシュ値も同じ
3.元のデータが変わると生成されるハッシュ値は(ガッツリと)変わる


といった特徴があります。
「元データ→ハッシュ値」は お手軽だけど「元データ←ハッシュ値」は すっごい大変だよ、ということです。

レインボー攻撃15

以上を踏まえて、すっごい大変な「元データ←ハッシュ値」をやる技のひとつが「レインボー攻撃」です。

レインボー攻撃16

レインボー攻撃のやり方ですが、まずはハッシュ値と元データの対応表を用意します。

レインボー攻撃17

次に、ハッシュ値を手に入れます。

レインボー攻撃18

最後に、対応表とハッシュ値を見比べます。
該当するハッシュ値が対応表の中にあったら、それを見ることで元の値が分かる理屈です。

レインボー攻撃19

これがレインボー攻撃の基本的な考え方です。

実際には、あれやこれやの工夫がされているので、もっと複雑ですけどね。
そこら辺の「あれやこれや」については他のところで勉強してください。

実際のところ、このやり方自体は「攻撃」では ありません。
ただハッシュ値から元の値を割り出しているだけです。

それでは、どうして「攻撃」呼ばわりされるのでしょうか。

それは、パスワードを保管するときにはハッシュ値に変換して保管していることが多いからです。

レインボー攻撃20

そうしておけば、万が一、悪い人に盗み見られても安全です。
盗まれるのはパスワードのハッシュ値だからです。
元のパスワードは盗まれません。

レインボー攻撃21

この対策は「元データ←ハッシュ値」がすっごい大変だという前提によって成り立っています。

ここで悪い人の立場に立って考えてみてください。

せっかく盗んだのに戦利品が「パスワードのハッシュ値」では意味がありません。
ほしいのは「パスワード」です。

レインボー攻撃22

そこで「パスワードのハッシュ値」から「パスワード」を割り出すために頑張ります。
その頑張り方のひとつがレインボー攻撃です。
対応表と照らし合わせることでハッシュ値から元の値を割り出します。

レインボー攻撃23

基本的な使いどころが悪いことをするときなので「攻撃」扱いされているのだと思います。


image piyo2

一言でまとめるよ

まぁ「レインボー攻撃」って単語が出てきたら「ハッシュ値(元の値を「ハッシュ関数」という関数に入れて変換した値)から元の値を割り出すぜ!攻撃なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像066
書籍画像049

おまけ

■訳してみるよ

「rainbow(レインボー)」の意味は「虹」とかです。
「攻撃」は日本語ですね。
何となく くっつけると

虹攻撃

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
インフルエンサー六法 活動開始から情報発信、収益化までに潜むトラブル対策50
ウォーターサーバーのキャッチコピーを100本考える方法