メインコンテンツまでスキップ

6. リソースレコードの正規形式と順序 (Canonical Form and Order of Resource Records)

このセクションでは、リソースレコードの正規形式 (canonical form)、DNS 名の正規順序 (canonical ordering)、および RRset 内のリソースレコードの正規順序を定義します。正規名順序は NSEC 名チェーンを構築するために必要です。正規 RR 形式と RRset 内の順序は、RRSIG RR を構築および検証するために必要です。

6.1. 正規 DNS 名順序 (Canonical DNS Name Order)

DNS セキュリティの目的では、所有者名は、個々のラベルを符号なしの左詰めオクテット文字列として扱うことで順序付けられます。オクテット文字列を比較する場合、オクテットの不在はゼロ値のオクテットよりも前にソートされ、大文字の US-ASCII 文字は小文字の US-ASCII 文字として扱われます。

DNS 名のセットの正規順序を計算するには、まず最上位 (最も右側) のラベルに従って名前をソートします。最上位ラベルが同一である名前については、次に最上位のラベルに従ってソートを続け、以下同様に続けます。

例えば、以下の名前は正規 DNS 名順序でソートされています。最上位ラベルは "example" です。このレベルでは、"example" が最初にソートされ、次に "a.example" で終わる名前、次に "z.example" で終わる名前が続きます。各レベル内の名前は同じ方法でソートされます。

          example
a.example
yljkjljk.a.example
Z.a.example
zABC.a.EXAMPLE
z.example
\001.z.example
*.z.example
\200.z.example

6.2. 正規 RR 形式 (Canonical RR Form)

DNS セキュリティの目的では、RR の正規形式は次のような RR のワイヤ形式です。

  1. RR 内のすべてのドメイン名が完全に展開され (DNS 名前圧縮なし)、完全修飾されている。

  2. RR の所有者名内のすべての大文字 US-ASCII 文字が、対応する小文字 US-ASCII 文字に置き換えられている。

  3. RR のタイプが NS、MD、MF、CNAME、SOA、MB、MG、MR、PTR、HINFO、MINFO、MX、HINFO、RP、AFSDB、RT、SIG、PX、NXT、NAPTR、KX、SRV、DNAME、A6、RRSIG、または NSEC である場合、RDATA 内に含まれる DNS 名のすべての大文字 US-ASCII 文字が、対応する小文字 US-ASCII 文字に置き換えられている。

  4. RR の所有者名がワイルドカード名である場合、所有者名は "*" ラベルを含む元の未展開形式である (ワイルドカード置換なし)。

  5. RR の TTL は、元の権威ゾーンに現れる元の値、またはカバーする RRSIG RR の Original TTL フィールドに設定されている。

6.3. RRset 内の正規 RR 順序 (Canonical RR Ordering Within an RRset)

DNS セキュリティの目的では、同じ所有者名、クラス、およびタイプを持つ RR は、各 RR の正規形式の RDATA 部分を、オクテットの不在がゼロオクテットよりも前にソートされる左詰め符号なしオクテットシーケンスとして扱うことでソートされます。

[RFC2181] は、RRset が重複レコード (同じ所有者名、クラス、タイプ、および RDATA を持つ複数の RR) を含むことを許可しないと規定しています。したがって、実装が RRset を正規形式にする際に重複 RR を検出した場合、これをプロトコルエラーとして扱わなければなりません (MUST)。実装がロバストネス原則 (受け入れるものに寛容である) の精神でこのプロトコルエラーを処理することを選択した場合、RRset の正規形式を計算する目的で、重複 RR のうち1つを除くすべてを削除しなければなりません (MUST)。


関連章へのナビゲーション: