SC Workbook
科目 A-2 · セキュリティ

DNS 偽応答の成功確率

DNS キャッシュサーバ X と Y がある。X は問合せの 16 ビットの ID だけをランダムに選び,送信元ポート番号は固定している。Y は ID に加えて,送信元ポート番号を 4,096 個の中からランダムに選ぶ。権威 DNS サーバは 1 台とし,X も Y も同じ問合せを同時に一つだけ送出する。攻撃者が,正規の応答が届くまでの間に偽の応答を 4,096 個送信できるとき,1 回の機会で偽の応答が受理される確率の組合せとして,適切なものはどれか。ここで,攻撃者は X の固定の送信元ポート番号を知っており,ID とポート番号の組合せを重複なく推測するものとする。

  1. アX:1/16,Y:1/16
  2. イX:1/65,536,Y:1/268,435,456
  3. ウX:1/16,Y:1/17
  4. エX:1/16,Y:1/65,536
正解と解説を見る

正解 エ

この問題の基礎知識

  • DNS キャッシュポイズニングは,キャッシュサーバの問合せに対して正規の応答より先に偽の応答を受理させ,誤った情報をキャッシュさせる攻撃である。
  • キャッシュサーバは,応答の ID(16 ビットで 65,536 通り)や宛先ポート番号などが送出した問合せと一致する場合に限り,応答を受理する。
  • 1 回の機会で攻撃が成功する確率は,期間内に届く重複のない偽の応答の数を,推測すべき値の組合せの総数で割ったものである。独立した複数の値を全て一致させる必要がある場合,組合せの総数は各値の候補数の積になる。
アX:1/16,Y:1/16

Y の送信元ポート番号を攻撃者が知っているとみなした場合の値である。問合せのポート番号は攻撃者には分からないので,ポート番号も ID と同様に推測しなければならない。

イX:1/65,536,Y:1/268,435,456

偽の応答を 1 個だけ送った場合の値である。重複のない推測を 4,096 個送れば,確率はその個数倍になる(X は 4,096/65,536)。

ウX:1/16,Y:1/17

ポート番号の候補数を ID の候補数に足し合わせた(65,536+4,096)場合の値である。ID とポート番号の両方が一致しなければ受理されないので,推測すべき組合せの数は掛け算で増える。

エX:1/16,Y:1/65,536正解

X は 4,096/65,536=1/16 である。Y では ID とポート番号の両方を一致させる必要があり,組合せは 65,536×4,096 通りなので,4,096/(65,536×4,096)=1/65,536 となる。ポート番号の候補数の分だけ成功確率が下がる。

検証用の出典出典照合済み
RFC 5452 Measures for Making DNS More Resilient against Forged Answers
照合の根拠(4 件)
  • エ(正解): 成功確率=期間内に届く偽応答の数÷問題空間の大きさ(X: 4,096/65,536,Y: 4,096/(65,536×4,096))。イは 1 個だけ送った場合の値で誤り
    The probability of spoofing a resolver is equal to the amount of fake packets that arrive within the window of opportunity, divided by the size of the problem space.
    RFC 5452 · Section 7.2(新しいタブで開きます)
  • エ(正解)/ウ(誤り): ポートを複数使うと実効的な ID 空間はポート数の「倍」になる(足し算ではない)
    If multiple ports are used for sending queries, this enlarges the effective ID space by a factor equal to the number of ports used.
    RFC 5452 · Section 4.5(新しいタブで開きます)
  • X の前提: 固定の送信元ポートは攻撃者に知られ得るので,X の問題空間は ID の 65,536 だけになる(アは Y のポートも既知とみなした誤り)
    If the source port of the original query is random, but static, any authoritative nameserver under observation by the attacker can be used to determine this port.
    RFC 5452 · Section 4.5(新しいタブで開きます)
  • 前提: 同じ問合せを一つだけ送出する(D=1)ので,成功確率は偽応答数に比例して増えない
    D: Average number of identical outstanding queries of a resolver (typically 1, see Section 5)
    RFC 5452 · Section 7.1(新しいタブで開きます)

RFC 5452 7.2 の P_s = D×F/(N×P×I) に D=1,N=1,F=4,096,I=65,536 を代入: X(P=1)は 4,096/65,536=1/16,Y(P=4,096)は 4,096/(65,536×4,096)=1/65,536。1 個だけなら X 1/65,536,Y 1/268,435,456(イ),足し算なら 4,096/69,632=1/17(ウ)。D=1 と X のポートが既知であることを問題文に明記した。

問題 ID A2-SEC-0516 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。