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

2. DNSKEY リソースレコード (The DNSKEY Resource Record)

DNSSEC は公開鍵暗号 (public key cryptography) を使用して、DNS リソースレコードセット (resource record sets, RRsets) に署名し、認証します。公開鍵 (public keys) は DNSKEY リソースレコードに格納され、[RFC4035] に記述されている DNSSEC 認証プロセスで使用されます。ゾーンは秘密鍵 (private key) を使用してその権威 RRset (authoritative RRsets) に署名し、対応する公開鍵を DNSKEY RR に格納します。その後、リゾルバ (resolver) は公開鍵を使用して、ゾーン内の RRset をカバーする署名を検証し、それらを認証することができます。

DNSKEY RR は任意の公開鍵を格納するためのレコードとして意図されておらず、DNS インフラストラクチャに直接関連しない証明書や公開鍵を格納するために使用してはなりません (MUST NOT)。

DNSKEY RR タイプの Type 値は 48 です。

DNSKEY RR はクラス独立 (class independent) です。

DNSKEY RR には特別な TTL 要件はありません。

2.1. DNSKEY RDATA ワイヤ形式 (DNSKEY RDATA Wire Format)

DNSKEY RR の RDATA は、2オクテットの Flags フィールド、1オクテットの Protocol フィールド、1オクテットの Algorithm フィールド、および公開鍵フィールドで構成されます。

                     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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Protocol | Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Public Key /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2.1.1. Flags フィールド (The Flags Field)

Flags フィールドのビット7は Zone Key フラグです。ビット7の値が1の場合、DNSKEY レコードは DNS ゾーン鍵 (DNS zone key) を保持しており、DNSKEY RR の所有者名 (owner name) はゾーンの名前でなければなりません (MUST)。ビット7の値が0の場合、DNSKEY レコードは他のタイプの DNS 公開鍵を保持しており、RRset をカバーする RRSIG を検証するために使用してはなりません (MUST NOT)。

Flags フィールドのビット15は Secure Entry Point フラグで、[RFC3757] に記述されています。ビット15の値が1の場合、DNSKEY レコードはセキュアエントリーポイント (secure entry point) として使用することを意図した鍵を保持しています。このフラグは、この DNSKEY レコードの意図された使用についてゾーン署名またはデバッグソフトウェアへのヒントとしてのみ意図されています。検証者 (validators) は、このビットの設定に基づいて署名検証プロセス中に動作を変更してはなりません (MUST NOT)。これはまた、SEP ビットが設定された DNSKEY RR が合法的に署名を生成できるようにするためには、Zone Key フラグも設定する必要があることを意味します。SEP が設定され、Zone Key フラグが設定されていない DNSKEY RR は、RRset をカバーする RRSIG を検証するために使用してはなりません (MUST NOT)。

ビット0〜6とビット8〜14は予約されています。これらのビットは DNSKEY RR の作成時に値0でなければならず (MUST)、受信時に無視されなければなりません (MUST)。

2.1.2. Protocol フィールド (The Protocol Field)

Protocol フィールドは値3でなければならず (MUST)、署名検証中にその値が3以外であることが判明した場合、DNSKEY RR は無効として扱われなければなりません (MUST)。

2.1.3. Algorithm フィールド (The Algorithm Field)

Algorithm フィールドは公開鍵の暗号アルゴリズムを識別し、公開鍵フィールドの形式を決定します。DNSSEC アルゴリズムタイプのリストは付録 A.1 にあります。

2.1.4. 公開鍵フィールド (The Public Key Field)

公開鍵フィールドは公開鍵の材料 (public key material) を保持します。形式は格納される鍵のアルゴリズムに依存し、別の文書で記述されています。

2.1.5. DNSKEY RDATA 設計に関する注記 (Notes on DNSKEY RDATA Design)

Protocol フィールドは常に値3を持ちますが、KEY レコードの初期バージョンとの後方互換性のために保持されています。

2.2. DNSKEY RR 表示形式 (The DNSKEY RR Presentation Format)

RDATA 部分の表示形式は以下の通りです。

Flag フィールドは符号なし10進整数として表現されなければなりません (MUST)。現在定義されているフラグを考慮すると、可能な値は 0、256、および 257 です。

Protocol フィールドは値3の符号なし10進整数として表現されなければなりません (MUST)。

Algorithm フィールドは、符号なし10進整数として、または付録 A.1 で指定されているアルゴリズムニーモニック (algorithm mnemonic) として表現されなければなりません (MUST)。

公開鍵フィールドは公開鍵の Base64 エンコーディングとして表現されなければなりません (MUST)。Base64 テキスト内に空白を含めることができます。Base64 エンコーディングの定義については、[RFC3548] を参照してください。

2.3. DNSKEY RR の例 (DNSKEY RR Example)

以下の DNSKEY RR は example.com の DNS ゾーン鍵を格納しています。

example.com. 86400 IN DNSKEY 256 3 5 ( AQPSKmynfzW4kyBv015MUG2DeIQ3
Cbl+BBZH4b/0PY1kxkmvHjcZc8no
kfzj31GajIQKY+5CptLr3buXA10h
WqTkF7H6RfoRqXQeogmMHfpftf6z
Mv1LyBUgia7za6ZEzOJBOztyvhjL
742iU/TpPSEDhm2SNKLijfUppn1U
aNvv4w== )

最初の4つのテキストフィールドは、所有者名、TTL、クラス、および RR タイプ (DNSKEY) を指定します。値256は、Flags フィールドの Zone Key ビット (ビット7) の値が1であることを示します。値3は固定の Protocol 値です。値5は公開鍵アルゴリズムを示します。付録 A.1 はアルゴリズムタイプ5を RSA/SHA1 と識別し、RSA/SHA1 公開鍵フィールドの形式が [RFC3110] で定義されていることを示しています。残りのテキストは公開鍵の Base64 エンコーディングです。


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