ご存知のように、Wired Equivalent Privacy(WEP)は、企業がワイヤレス接続を盗聴攻撃から保護するために使用されています。 あなたはおそらく、それは非常に安全ではないことを聞いたことがあります。 この2部シリーズの最初の部分では、WEPの内部の仕組みを説明し、来月それが安全でない理由をフォローアップします。
既にご存知のように、Wired Equivalent Privacy(WEP)は、企業が無線接続を盗聴攻撃から保護するために使用されています。 あなたはおそらく、それは非常に安全ではないことを聞いたことがあります。 この2部シリーズの最初の部分では、WEPの内部の仕組みを説明し、来月それが安全でない理由をフォローアップします。
WEPは必要ですか?
本物のユーザー、ボブは毎日彼のGmailアカウントをチェックするために彼のラップトップを使用しています。 彼は自動的にちょうど通りの向こう側に彼のISPの無線アクセスポイント(WAP)を検出し、彼のラップトップにワイヤレスカードを持っています。 彼はWAPに接続したら、彼は先に行くと、彼の電子メールを確認することができます。 アリスは、インターネットへのアクセスのためにISPを支払うことを望んでいない卑劣なユーザーです。 しかし、彼女は、通りの向こう側のISPには、誰もがインターネットに接続してアクセスできるアクセスポイントがあることを知っています。 彼女はラップトップを差し込み、すぐにインターネットから音楽をダウンロードしています。 WEPは、リソースを使用する前にユーザーが自分自身を認証し、Aliceをブロックし、Bobを許可するように設計されています。 それがどのようにこれを行うか見てみましょう。
WEPの仕組み
WEPはRC4アルゴリズムを使用して、アクセスポイントまたはワイヤレスネットワークカードから送信される情報パケットを暗号化します。 アクセスポイントは、ユーザのネットワークカードによって送信されたパケットを受信するとすぐに、それらを復号化します。
データの各バイトは、異なるパケットキーを使用して暗号化されます。 これにより、ハッカーがこのパケットキーを解読することができた場合、漏洩した情報はそのパケットに含まれる情報だけであることが保証されます。
RC4の実際の暗号化ロジックは非常に簡単です。 プレーンテキストは無限に長いキーストリームを持つXOR-edです。 RC4のセキュリティは、キーストリームから派生したパケットキーの秘密性から来ています。
では、パケットキーは何ですか?
パケットキーは、事前共有パスワード、状態配列、初期化ベクトル(IV)を組み合わせて形成されます。
事前共有パスワード:送信されるパケットごとに、すべてのユーザーが同じ事前共有パスワードを使用します。
状態配列:これは、スクランブルされ、RC4によってキーストリームを構築するために使用される一連の数値です。
初期化ベクトル(IV):IVは、コンピュータによって生成された3バイトの乱数です。 これは、暗号テキストの前に追加または追加され、暗号テキストを復号化する前にIVを除去する受信者に送信されます。
RC4アルゴリズムは、2つの主要な部分で構成されています。
キースケジューリングアルゴリズム:ksaプロセスは、スクランブル状態配列を作成します。 この状態配列は、PRGAフェーズと呼ばれる2番目のフェーズの入力として使用されます。
擬似ランダム生成アルゴリズム:KSAプロセスからの状態配列は、最終的なキーストリームを生成するためにここで使用されます。 生成されたキーストリームの各バイトは、対応するプレーンテキストバイトでXorされ、目的の暗号テキストが生成されます。
キースケジューリングアルゴリズム
IVは、状態配列と事前共有パスワードのプロパティを使用して計算されます。 これは、アルゴリズムで使用するインデックスと等しい値の配列を作成することによって実現されます。 デフォルトでは、WEPのインデックスは256です。 KSAに必要なコンポーネントは、変数iとjの値、インデックス値、事前共有パスワード、およびその長さです。 これらの値を使用して最終的なキーストリームを生成するアルゴリズムの概要を以下に示します。
:
For i=0 ... index-1
S=i
J=0
スクランブル:
For i=0 ... index-1
J = j + state + K
Swap(state , state)
ループは最初に0からindex-1まで実行され、0からindexまでの値で状態配列を初期化します。 例えばのために。 Index=4の場合、状態配列は0から3までの値で埋められます。 したがって、配列の値は次のようになります:
s=0 s=1 s=2 s=3
jの値は0に設定されます。 その後、別のループが開始されます。 ループを通過するたびに、jの値が計算され、stateに保持されている配列値がstateに保持されている値と交換されます。
擬似乱数生成アルゴリズム(PRGA)
擬似乱数生成アルゴリズム(PRNG)は、ランダムな数列を生成するアルゴリズムです。 PRGAは、状態配列、KSAの出力に基づいて平文を暗号化するために使用されるストリーミング値を作成する責任があります。 PRGAが従う方法論は以下の通りです。
:
I=0 j=0 index=4
生成アルゴリズム
I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]
ストリーミング値は、パケットの各バイトのアルゴリズムをループすることによって作成されます。 変数iとjは0に初期化されます。 各パケットについて、jの値が計算され、stateに保持されている配列値がstateに保持されている値と交換されます。 次に、各パケットについて出力zが計算されます。 プロセスの最後にPRGAストリームがあります。
PRGAストリームはプレーンテキストでXorされ、相手に送信される暗号テキストが生成されます。
例
上記の概念を例の形で説明しましょう。 暗号化されるプレーンテキストはTESTです。 ここで使用されるパスワードは6258です。 変数の初期値は次のとおりです:
i=0 j=0 password=6258 pass length=4 index=4
アルゴリズムに従って、次のようになります。
ステップ-1
State array: State=0 State=1 State=2 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 6 mod 4 = 2
Swap(State , State) = Swap(0,2)
State=2 State=1 State=0 State=3
ステップ-2
i=1 j=2
State array: State=2 State=1 State=0 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 5 mod 4 = 1
Swap(State, State) = Swap(1,0)
State=2 State=0 State=1 State=3
ステップ3
i=2 j=1
State array: State=2 State=0 State=1 State=3
Password: K=6 K=2 K=5 K=8
j = + K]mod 4 = 7 mod 4 = 3
Swap(State, State) = Swap(1,3)
State=2 State=0 State=3 State=1
ステップ4
i=3 j=3
State array: State=2 State=0 State=3 State=1
Password: K=6 K=2 K=5 K=8
j = +K]mod 4 = 12 mod 4 = 0
Swap(State, State) = Swap(1,2)
State=1 State=0 State=3 State=2
Final State Array: State=1 State=0 State=3 State=2
KSA状態配列の準備が完了すると、PRGAプロシージャが初期化されます。 手順は次のとおりです:
Initially i=0 j=0
K=6 K=2 K=5 K=8
最初のループ:
State=1 State=0 State=3 State=2
i=1 j=0+State=0+0=0
Swap(State, State) = Swap(0,1)
State=0 State=1 State=3 State=2
z = State + State mod 4] = State = 1
z1 = 00000001
第二ループ:
State=0 State=1 State=3 State=2
i=2 j=0+State=3
Swap(State, State) = Swap(3,2)
State=0 State=1 State=2 State=3
z = State + State mod 4] = State = 1
z2 = 00000001
:
State=0 State=1 State=2 State=3
i=3 j=3+State=6 mod 4 = 2
Swap(State,State) = Swap(3,2)
State=0 State=1 State=3 State=2
z = State + State] mod 4 = State = 1
z3=00000001
第四ループ:
State=0 State=1 State=3 State=2
i=4 j=2+State=2+State = 2+State = 2
Swap(State,State) = Swap(State,State) = Swap(0,3)
State=3 State=1 State=0 State=2
z4 = State + State] = State +
State] = State = 2
z4=00000010
各ループの最後の出力z1-z4は、プレーンテキストの各文字のASCIIでXor’edする必要があります。 したがって、プレーンテキストテストの暗号テキストは次のようになります:
T xor z1 = 01010100 xor 00000001 = 01010101 = U
E xor z2 = 01000101 xor 00000001 = 01000100 = D
S xor z3 = 01010011 xor 00000001 = 01010010 = R
T xor z4 = 01010100 xor 00000010 = 01010110 = U
WEPで暗号化されたときのTESTという単語はUDRUです。
この記事は、WEPとWEPで暗号化が行われる正確な手順の紹介にすぎませんでした。 次の部分では、私たちはあなたの心の中で一番上の質問に対処します:”なぜWEPは安全ではありませんか? WEPを使用すると、どのようなリスクにさらされますか?”