8. アドレス検証
8. アドレス検証
アドレス検証は、エンドポイントがトラフィック増幅攻撃に使用されないことを保証します。このような攻撃では、被害者を識別する偽装されたソースアドレス情報を持つパケットがサーバーに送信されます。サーバーがそのパケットに応答してより多くのまたはより大きなパケットを生成する場合、攻撃者はサーバーを使用して、自分で送信できるよりも多くのデータを被害者に向けて送信できます。
増幅攻撃に対する主な防御は、エンドポイントが主張するトランスポートアドレスでパケットを受信できることを検証することです。したがって、まだ検証されていないアドレスからパケットを受信した後、エンドポイントは、検証されていないアドレスに送信するデータの量を、そのアドレスから受信したデータ量の3倍に制限しなければなりません (MUST)。
8.1 接続確立中のアドレス検証
接続確立は、両エンドポイントに対して暗黙的にアドレス検証を提供します。特に、Handshakeキーで保護されたパケットの受信は、ピアがInitialパケットを正常に処理したことを確認します。エンドポイントがピアからのHandshakeパケットを正常に処理すると、ピアアドレスが検証されたと見なすことができます。
8.1.1 トークンの構築
RetryパケットまたはNEW_TOKENフレームで送信されるトークンは、サーバーがクライアントにどのように提供されたかを識別できる方法で構築しなければなりません (MUST)。
8.1.2 Retryパケットを使用したアドレス検証
クライアントのInitialパケットを受信すると、サーバーは、トークンを含むRetryパケット (セクション 17.2.5) を送信することでアドレス検証を要求できます。
8.1.3 将来の接続のためのアドレス検証
サーバーは、1つの接続中にクライアントにアドレス検証トークンを提供することができ (MAY)、それは後続の接続で使用できます。
8.1.4 アドレス検証トークンの完全性
アドレス検証トークンは推測が困難でなければなりません (MUST)。トークンに少なくとも128ビットのエントロピーを持つ十分に大きなランダム値を含めることで十分です。
8.2 パス検証
パス検証は、接続移行中 (セクション 9 を参照) にアドレス変更後の到達可能性を確認するために使用されます。パス検証では、エンドポイントは特定のローカルアドレスと特定のピアアドレス間の到達可能性をテストします。ここで、アドレスはIPアドレスとポートの2つ組です。
8.2.1 パス検証の開始
パス検証を開始するために、エンドポイントは、検証するパス上で予測不可能なペイロードを含むPATH_CHALLENGEフレーム (セクション 19.17) を送信します。
8.2.2 パス検証の応答
PATH_CHALLENGEフレームを受信すると、エンドポイントは、PATH_CHALLENGEフレームに含まれるデータをPATH_RESPONSEフレーム (セクション 19.18) でエコーすることで応答しなければなりません (MUST)。
8.2.3 成功したパス検証
パス検証は、以前のPATH_CHALLENGEフレームで送信されたデータを含むPATH_RESPONSEフレームが受信されたときに成功します。
8.2.4 失敗したパス検証
パス検証は、PATH_RESPONSEフレームが予想される時間内に受信されないと失敗します。