要約

  • RFC 3118の遅延認証は、同一の管理ドメイン内でDHCPクライアントとサーバーが別経路で共有鍵を受け取ることを前提とした。
  • ローカルポリシーが許せば、クライアントは未認証の応答も受け入れられた。RFCは、そのようなメッセージを拒否できる設定と、拒否を初期値にすることを推奨した。

オプションは普遍的なIDを作らなかった

DHCPは、端末がネットワークへ接続したとき、アドレスなどの設定を受け取れるようにするプロトコルとして知られる。その便利さには信頼上の問題もある。不正なサーバーや誤って起動したサーバーが誤ったゲートウェイ、ネームサーバー、アドレスを提示する可能性がある。サーバー側でも、許可された端末を装うクライアントやアドレスプールを枯渇させる試みに直面する。2001年6月公開のRFC 3118は、プロトコルを作り直さずにDHCPメッセージの送信元と内容を認証しようとした。

オプション90は、方式、アルゴリズム、リプレイ検出方法、検出値、認証情報をパケット上に置いた。一つのオプションに見えても、実際には別々の問いを束ねていた。どの方式を使うのか。古いメッセージをどう見分けるのか。どの鍵がパケットと相手を結び付けるのか。

RFC 3118は単純な設定トークンと遅延認証を区別した。前者は弱いエンティティ認証を提供するが、メッセージ認証は行わない。RFCは、誤って起動したDHCPサーバーへの初歩的な防御と位置付けた。後者はHMAC-MD5と共有鍵を使う。ここで記録するのは当時の選択であり、新規システムへの推奨ではない。

認証は発見より前に始まる

遅延認証では、クライアントはDHCPDISCOVERで認証を要求する。サーバーは鍵を選び、認証情報を含むDHCPOFFERを返す。クライアントはオファーを選択し、対応する鍵でDHCPREQUESTを送り、その後の認証済み応答を検証する。リプレイ検出も交換に組み込まれ、古いパケットから有効な認証値だけをコピーして新しいものとして扱うことはできない。

つまり最初のパケットより前に関係が必要だった。RFC 3118は、クライアントへ鍵を帯域外で配布することを想定する。サーバーは許可されたクライアントの鍵を知るか、安全に取得できなければならない。一つの鍵を広く共有すれば、その入手者は別の保有者になりすませる。個々のクライアントを識別する必要があれば、RFCは固有の鍵を求めた。パケット上の手順は、DHCP自体が定義しない鍵配布の仕組みに依存していた。

この境界は意図的だった。RFC 3118は管理ドメイン間のローミングを解決しない。鍵を別経路で交換できる同一ドメイン内を対象とし、複数ドメインへ接続するクライアントには拡張性の問題があり得ると述べた。MACは、メッセージが設定済みの鍵に合うことを示すだけで、世界共通のIDやローミング契約、ネットワーク利用権を作り出さない。

中継とローカルな受け入れも信頼モデルの一部

DHCPリレーはgiaddrやhopsを書き換えたり、リレー情報を追加したりできる。RFC 3118は認証計算でこれらをどう扱うか定め、正当なリレー処理で検証が壊れないようにした。中継経路の扱いは定まったが、すべてのリレーをIDの権威にしたわけではない。

認証がないときのクライアントの選択は、さらに重要だ。有効な認証を持つオファーが一つもなければ、ローカルポリシーに従って未認証のものを受け入れることもできた。RFCは、クライアントを未認証メッセージの拒否に設定できることを求め、初期値も拒否とするよう推奨した。受け入れる場合は、利用者への通知と記録も勧めた。安全性はオプションのMACだけでなく、フォールバックを許すかにも左右された。

認証オプションが見えるからといって、受け入れた設定がすべて認証済みとは限らない。RFC 3118はこの誤解に注意を促した。機構と慎重な初期値は定めたが、ローカルな信頼の選択は管理者とクライアント実装に残した。

記録された標準や登録簿は、オプション90の実装・設定数も、攻撃の減少も示さない。標準が定めるのは可能な動作であり、普及と結果には別の証拠がいる。RFC 3118の歴史的な意味はより狭い。DHCP認証は、鍵の配布者、対象となるサーバーやリレー、未署名の代替をクライアントが受け入れるかによって境界づけられたローカルな信頼関係のままだった。

出典

  1. https://www.rfc-editor.org/rfc/rfc3118.html
  2. https://www.rfc-editor.org/info/rfc3118
  3. https://datatracker.ietf.org/doc/rfc3118/
  4. https://www.rfc-editor.org/rfc/rfc2131.html
  5. https://www.rfc-editor.org/rfc/rfc2132.html
  6. https://www.rfc-editor.org/rfc/rfc3046.html
  7. https://www.rfc-editor.org/rfc/rfc2104.html
  8. https://www.rfc-editor.org/rfc/rfc1321.html
  9. https://www.rfc-editor.org/rfc/rfc2119.html
  10. https://www.rfc-editor.org/rfc/rfc951.html
  11. https://www.rfc-editor.org/rfc/rfc4361.html
  12. https://www.rfc-editor.org/rfc/rfc6842.html
  13. https://www.rfc-editor.org/rfc/rfc8415.html
  14. https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml