web-dev-qa-db-ja.com

反射攻撃を防ぐ

私は リフレクション攻撃の解決策 を読んでいて、アリスがボブがうそつきであり、本当はボブではないことをどのようにして知るかについて、いくつかの混乱があります。

1. Alice initiates a connection to Bob
2. Bob challenges Alice by sending a nonce. B -> A: N
3. Alice responds by sending back her identifier and the nonce encrypted using the shared key Kab. A -> B: {A, N}Kab
4. Bob decrypts the message, makes sure its from Alice and not a message he had sent in the past by finding A in it and not B and if the nonce is the same as the one he sent in his challenge then he accepts the message.

ステップ4で迷子になります。そのため、ボブはキーを使用して「A」を復号化および取得できます。まず、メッセージに送信者名が表示されている場合の表記の意味を教えてください。 A-> B:{A}、または単にA-> B:Aの場合、:の後のAはどういう意味ですか?

パート4では、ボブがメッセージを復号化すると、送信者が本当にその人物であるかどうかを「なんとかして」確認できると言っているようです。 「なんとなく」得られません。実装では、AはマシンのIPアドレスであり、ノードは常にそれに接続しているユーザーを知っているため、8.8.8.8に復号化して、実際の送信者が8.8.4.4であることがわかりますか?

2
Celeritas

A-> B:{A、N} Kabは、AとBが共有する秘密鍵で暗号化されたAとNを含むメッセージをAがBに送信することを意味します。

そのため、ボブはキーを使用して「A」を復号化および取得できます。

いいえ、ボブはキーを使用して応答を復号化し、ナンスNおよび識別子Aを取得します。これから、ボブは応答が

  • 事前に送信されたナンスNボブが含まれています。
  • アリスの識別子Aが含まれているため、アリスによって送信され、過去に送信されたナンスボブのリプレイではありません。
  • は共有秘密鍵で暗号化されているため、ボブを除いて、秘密鍵を知っている唯一の当事者であるアリスからのものでなければなりません。
2
dr_

ウィキペディアの説明は私にとって非常に混乱していると言わざるを得ません。

レスポンダは識別子を応答内で送信するため、識別子が含まれる応答を受信した場合、それを拒否できます。

4番目のステップに基づいて、私はそれらが以下を意味すると想定します

レスポンダはその識別子を応答内で送信するので、チャレンジャーに識別子が含まれる応答を受信すると、それを拒否できます。

答えの所有権の概念を追加します。今、これは私が問題と解決策を理解する方法です:

暗号化とIPアドレスを忘れて、実際のケースを考えてください。あなたは教室にいて、怠惰なろくでなしでも幸運を感じ、オタクのためだけに複雑な質問(チャレンジ)に答えたいと思っています。質問は常に異なると仮定します(ノンス)。先生はあなたに質問をしますが、(予想通り)答えはわかりませんが、それでもかっこよく見たいので、あなたの後ろのオタクの子供(レスポンダー)に質問が彼のためであると伝えます。誰も気づかないと仮定します(悲鳴を上げることができます:窓の外でDiffie-Hellmanを見てください!!)。

あなたは答えを選び、あなたと同じように先生に大声で言います。それは正しく、あなたはその日を救います。ここでの問題の1つは何ですか?:

答えはわかっているので、人に縛られないので簡単にアナウンスできます。

防御の最前線は、オタクと教師(ばかげた子供たちが平凡に話す)の間で鍵を共有し、それらにメッセージを暗号化させることです。賢い子供だけが答えを暗号化することができます(ノンス)。しかし、別の問題が発生します。

あなたはオタクの子供に質問をして、彼からジバージャバーを受け取り(暗号化された回答)、先生にそれを再生するのに十分賢いです(ここでの再生は再生攻撃を意味するのではなく、単に子供が言ったことを言っているだけです)。

賢い子供だけが答えて暗号化できるとしても、答えが本当にあなたの答えであったかどうかを彼女が知ることができないため、教師はソリューションを受け入れます。彼女が知る方法があるはずです:

紹介、識別子:すべての答えは子供の名前で暗号化され、問題が解決されます。現実の世界では、人がこれを簡単に検証できる可能性があります。教師はあなたから答えを受け取りますが、識別子は子供からのものであり、これが不一致につながります。

ITの世界では、あなたが言ったように、IPアドレスを使用する方法があります。攻撃者が別のPCのIPを含むメッセージを送信した場合、それは機能しません。もちろん、一致するようにソースを偽装することはできますが、接続を確立することはできません。これは、アプリケーションが単純なコマンドエグゼキュータである場合に機能します。攻撃者はコマンドの自己破壊を送信し、他のPCはACKやそれ以上のメッセージ交換を必要とせずに自身を破壊します。

おげんきで ;)

0
BrunoMCBraga