レインボーテーブル:パスワードの最悪の悪夢

彼らのかわいい名前はあなたを欺くことはできません、これらのことは怖いです。

レインボーテーブルは、多彩なカラフルな家具として考えるかもしれませんが、それは私たちが議論するものではありません。 私たちが話しているレインボーテーブルは、 パスワードを解読するために使用され、 ハッカーの絶え間なく成長するアーセナルもう一つのツールです。

一体何がレインボーテーブルですか? そのようなかわいい抱擁の名前で何かがとても危険なのでしょうか?

レインボーテーブルの基本コンセプト

私はサーバーやワークステーションにサムドライブを接続して再起動し、ユーザー名とパスワードを含むセキュリティデータベースファイルをサムドライブにコピーするプログラムを実行したばかりの悪い人です。

ファイルのパスワードは暗号化されているため、私はそれらを読むことができません。 ファイル(または少なくとも管理者パスワード)のパスワードを解読して、システムにアクセスできるようにする必要があります。

パスワードをクラックするオプションは何ですか? パスワードの可能な組み合わせを繰り返し推測しようとすると、パスワードファイルを捨てるJohn the Ripperのようなbrute-forceパスワードクラッキングプログラムを試してみることができます。 2番目の方法は、数十万のよく使われるパスワードを含むパスワードクラッキング辞書を読み込んでヒットしたかどうかを調べる方法です。 これらの方法は、パスワードが十分に強ければ数週間、数ヶ月、さらには数年かかることがあります。

システムに対してパスワードが「試行」されている場合、パスワードは暗号化を使用して「ハッシュ」され、実際のパスワードは決して通信回線を介してクリアテキストで送信されません。 これにより、盗聴者がパスワードを傍受するのを防ぎます。 パスワードのハッシュは通常ゴミのように見え、通常は元のパスワードとは異なる長さです。 あなたのパスワードは "shitzu"かもしれませんが、パスワードのハッシュは "7378347eedbfdd761619451949225ec1"のようになります。

ユーザを確認するために、システムはクライアントコンピュータ上でパスワードハッシュ関数によって作成されたハッシュ値を取得し、それをサーバ上のテーブルに格納されたハッシュ値と比較します。 ハッシュが一致すると、ユーザーは認証され、アクセスが許可されます。

パスワードをハッシュすることは一方通行の機能です。つまり、ハッシュを解読してパスワードのクリアテキストを確認することはできません。 作成されたハッシュを解読する鍵はありません。 もしあなたが望むなら、 "デコーダリング"はありません。

パスワードクラッキングプログラムは、ログインプロセスと同様に動作します。 クラッキングプログラムは、平文のパスワードをMD5などのハッシュアルゴリズムで実行した後、盗難されたパスワードファイルのハッシュ値とハッシュ値を比較します。 一致するものが見つかった場合、プログラムはパスワードを壊してしまいます。 これまで述べたように、このプロセスは非常に長い時間がかかります。

レインボーテーブルに入る

レインボーテーブルは基本的に、可能性のある平文パスワードにあらかじめマッチされたハッシュ値でいっぱいになった、あらかじめ計算されたテーブルの膨大なセットです。 レインボーテーブルは、基本的にハッカーがハッシュ関数を逆転させて平文パスワードが何であるかを判断することを可能にします。 2つの異なるパスワードが同じハッシュになる可能性があるので、同じハッシュを持つのと同じで、元のパスワードが何であるかを知ることは重要ではありません。 平文のパスワードは、ユーザーが作成したパスワードと同じではないかもしれませんが、ハッシュが一致している限り、元のパスワードの内容は関係ありません。

レインボーテーブルを使用すると、ブルートフォース方式に比べてパスワードが非常に短い時間でクラックされることがありますが、レインボーテーブル自体を保持するには多くのストレージ(時にはテラバイト)が必要ですが、最近のストレージは豊富で安価であるため、10年前のテラバイトドライブが現地のBest Buyで手に入るものではなかったように、このトレードオフは大きな問題ではありません。

ハッカーは、Windows XP、Vista、Windows 7、MD5、 SHA1などの脆弱なオペレーティングシステムのパスワードを解読するために事前計算済みのRainbow Tablesを購入することができます(多くのWebアプリケーション開発者はこれらのハッシュアルゴリズムを使用しています)。

レインボーテーブルベースのパスワード攻撃から身を守る方法

みんなのためにこれについてもっと良いアドバイスがあったらいいですね。 より強力なパスワードが役立つと思いますが、問題のパスワードの弱点ではないため、実際には当てはまりません。パスワードを暗号化するために使用されるハッシュ関数に関連する弱点です。

ユーザーに与えることができる最も良いアドバイスは、パスワードの長さを短い文字数に制限するWebアプリケーションから遠ざけることです。 これは、脆弱な古い学校のパスワード認証ルーチンの明確な兆候です。 拡張パスワードの長さと複雑さは少し助けになるかもしれませんが、保証された形の保護ではありません。 パスワードが長ければ長いほど、レインボーテーブルを大きくする必要がありますが、多くのリソースを持つハッカーがこれを達成することができます。

レインボーテーブルを防御する方法に関するアドバイスは、アプリケーション開発者やシステム管理者にとって本当に意味があります。 この種の攻撃からユーザーを保護することについては、最前線にいます。

レインボーテーブル攻撃に対する防御に関するいくつかの開発者のヒントを以下に示します。

  1. パスワードハッシュ機能でMD5またはSHA1を使用しないでください。 MD5とSHA1は古くなったパスワードハッシュアルゴリズムであり、パスワードを解読するために使用されるほとんどのレインボーテーブルは、これらのハッシュ方法を使用してターゲットアプリケーションとシステムに構築されています。 SHA2のようなより現代的なハッシング方法の使用を検討してください。
  2. パスワードハッシングルーチンで暗号 "Salt"を使用します。 暗号化ソルトをパスワードハッシュ関数に追加すると、アプリケーションでパスワードを解読するために使用されるRainbow Tablesの使用を防御するのに役立ちます。 暗号化塩を使用してアプリケーションを "Rainbow-Proof"に役立てる方法のコーディング例を見るには、トピックに関する素晴らしい記事があるWebMasters By Designサイトを参照してください。

ハッカーがレインボーテーブルを使用してパスワード攻撃を実行する方法を確認したい場合は、これらの手法を使用して自分のパスワードを回復する方法に関するこの優れた記事を読むことができます。