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

3. RRSIG リソースレコード

RRSIG リソースレコード(RR)は、リソースレコード集合(RRset)に対する暗号署名を保持する。RRSIG RR は、それが RRset に署名する DNSKEY RR とともに使用されなければならない。RRSIG RR は、それ自身が署名する RRset 型以外の他の RR 型に連鎖(chain)してはならない(MUST NOT)。

RRSIG RR の RDATA フォーマットは以下のとおりである。

                         1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type Covered | Algorithm | Labels |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Original TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signature Expiration |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signature Inception |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key Tag | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Signer's Name /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Signature /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

RRSIG RR の RDATA は以下のように表現および符号化される。

  • タイプカバー(TYPE COVERED)は 16 ビットの型コードであり、ネットワークバイト順で並べられ、この署名がカバーする RRset の型を識別する。
  • アルゴリズム(ALGORITHM)は 8 ビット符号なし整数であり、この署名に使用される公開鍵アルゴリズムを識別する。
  • ラベル数(LABELS)は 8 ビット符号なし整数であり、ワイルドカードレコードに使用される先行ラベル *(アスタリスク)を除いた、RRSIG RR の所有者名におけるラベルの数に等しい。
  • 元の TTL(ORIGINAL TTL)は 32 ビット符号なし整数であり、ネットワークバイト順で並べられ、署名された RRset 内のレコードの TTL を示す。
  • 署名有効期限(SIGNATURE EXPIRATION)は 32 ビット符号なし整数であり、ネットワークバイト順で並べられ、署名が無効となる日時(UTC 1970 年 1 月 1 日 00:00 からの秒数)を示す。
  • 署名開始日時(SIGNATURE INCEPTION)は 32 ビット符号なし整数であり、ネットワークバイト順で並べられ、署名が有効となり始める日時(UTC 1970 年 1 月 1 日 00:00 からの秒数)を示す。
  • キータグ(KEY TAG)は 16 ビット符号なし整数であり、ネットワークバイト順で並べられ、この署名の検証に使用される DNSKEY RR を識別する。
  • 署名者名(SIGNER'S NAME)は、この RRset に署名したゾーンの DNS 名であり、正規形式のドメイン名(wire format)で表される。
  • 署名(SIGNATURE)は可変長のバイト列であり、RRset に対する暗号署名を含む。

3.1. RRSIG RDATA のタイプカバーフィールド​

TYPE COVERED フィールドは、この RRSIG レコードが署名する RRset のリソースレコード型を識別する。このフィールドは 0 であってはならない(MUST NOT。この値はいかなる既存の RR 型も識別しないため予約されている)。

3.2. RRSIG RDATA のアルゴリズムフィールド​

ALGORITHM フィールドは、この署名に使用される公開鍵アルゴリズムを識別する。このフィールドの値は、この署名の検証に使用される DNSKEY RR の ALGORITHM フィールドと同じでなければならない(MUST)。

3.3. RRSIG RDATA のラベル数フィールド​

LABELS フィールドは 8 ビット符号なし整数であり、ワイルドカードレコードに使用される先行ラベル *(アスタリスク)を除いた、RRSIG の所有者名におけるラベルの数に等しい。LABELS フィールドは、非ワイルドカード名については所有者名のラベル数に、ワイルドカード名についてはその数から 1 を引いた値に設定 MUST である。LABELS フィールドは 0 であってはならない(MUST NOT)。

検証リゾルバは、LABELS フィールドと RRSIG の所有者名のラベル数が(ワイルドカードの状況を考慮して)一致するかをチェック MUST であり、一致しない場合はその署名を拒否 MUST である。

3.4. RRSIG RDATA の元の TTL フィールド​

ORIGINAL TTL フィールドは、署名作成時に署名された RRset 内の RR の TTL である。検証器は、検証前に、この RRset 内の各レコードの TTL がこの値と一致するかを検証 MUST であり([RFC4035] の説明に従って処理してよい)、一致しない場合は署名検証は失敗 MUST である。

3.5. RRSIG RDATA の署名有効期限および署名開始日時フィールド​

SIGNATURE EXPIRATION および SIGNATURE INCEPTION フィールドは、UTC 1970 年 1 月 1 日 00:00 からの秒数で与えられる。検証器は、現在時刻が [SIGNATURE INCEPTION, SIGNATURE EXPIRATION] の区間内にある場合にのみ署名を受け入れ MUST である。

SIGNATURE INCEPTION が SIGNATURE EXPIRATION より大きい場合、署名は受け入れてはならない(MUST NOT)。

3.6. RRSIG RDATA のキータグフィールド​

KEY TAG フィールドは、この署名の検証に使用される DNSKEY リソースレコードのキータグを含む。これは、DNSKEY RRset から正しい DNSKEY RR を効率的に選択するために使用される。

3.7. RRSIG RDATA の署名者名フィールド​

SIGNER'S NAME フィールドは、この RRset に署名したゾーンの名前を含む。これは、検証に使用される DNSKEY を含むゾーンの名前(または [RFC4035] の信頼の連鎖規則に従うその祖先ゾーン)でなければならない(MUST)。

3.8. RRSIG RDATA の署名フィールド​

SIGNATURE フィールドは、バイナリ形式で表された暗号署名を含み、これは DNSKEY RR に関連する秘密鍵を用い、[RFC4035] で規定される署名計算手順に従って、RRset の正規形式に対して計算されたものである。

3.9. RRSIG 表現フォーマット​

RRSIG RR の表現フォーマット(presentation format)は以下のとおりである。

  • タイプカバーはテキスト形式(たとえば A、NS、SOA)で、または未知の型については RFC 3597 表記で表される。
  • アルゴリズムは 10 進符号なし整数で表される。
  • ラベル数は 10 進符号なし整数で表される。
  • 元の TTL は 10 進符号なし整数で表される。
  • 署名有効期限および署名開始日時は YYYYMMDDHHmmSS 形式(UTC)で表される。
  • キータグは 10 進符号なし整数で表される。
  • 署名者名は正規形式のドメイン名テキストで表される。
  • 署名は、空白を含まない Base64 [RFC3548] で符号化されたバイト列で表される。

3.10. RRSIG RR に関する特記事項​

1 つの RRSIG レコードは 1 つの RRset のみに署名する。各 RRset の各アルゴリズムについて、対応する RRSIG レコードが存在 SHOULD である。RRSIG レコード自体は、それが署名する RRset に含めてはならない(MUST NOT)。検証器は、署名する DNSKEY の ZONE ビットと一致する鍵を使用して RRSIG を検証 MUST である。


関連章ナビゲーション: