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

2. DNSKEY リソースレコード

DNSKEY リソースレコード(RR)は、ドメインネームシステム・セキュリティ拡張(DNSSEC)に関連する公開鍵暗号情報を公開鍵の形で保持する。

DNSKEY 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Protocol | Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Public Key (アルゴリズムにより可変長) /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

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

  • フラグ(FLAGS)は符号なし 16 ビット整数であり、ネットワークバイト順(Network Byte Order)で並べられる。
  • プロトコル(PROTOCOL)は符号なし 8 ビット整数であり、その値 MUST は 3 である。
  • アルゴリズム(ALGORITHM)は符号なし 8 ビット整数であり、公開鍵に使用されるアルゴリズムを識別する。
  • 公開鍵(PUBLIC KEY)は可変長のバイト列であり、その内容はアルゴリズムフィールドの値に依存し、詳細は後述のとおりである。

2.1. DNSKEY RDATA のフラグフィールド​

FLAGS フィールドのビットは以下のように割り当てられる。

                         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 |Z| | | | | | | | | | | | | | |S|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

上図は FLAGS フィールド内のビットのみを示している(注:ビット番号は 0 から始まり、左から右へと割り当てられる)。

DNSKEY RR の FLAGS フィールドのビットは以下のように割り当てられる。

  • ビット 7 は ZONE ビットである(後述)。
  • ビット 15 は Secure Entry Point(SEP)ビットである([RFC3757] 参照)。
  • ビット 0-6 およびビット 8-14 は予約ビットであり、0 に設定 MUST である。

第 2.1.1 節および第 2.1.2 節は、ZONE ビットおよび SEP ビットの意味を記述する。

2.1.1. ZONE フラグビット​

DNSKEY RR の ZONE ビット(ビット 7)は、この DNSKEY RR が対応するゾーンの秘密鍵を保持しており、そのゾーンの RRset に署名できるかどうかを示す。

  • ZONE ビットがセットされている(値が 1)場合、DNSKEY レコードの保持者はそのゾーンに署名するための秘密鍵を保持している。
  • ZONE ビットがクリアされている(値が 0)場合、DNSKEY レコードは、対応するゾーンから取得した署名済み RRset を検証すること以外の目的に使用してもよい(MAY)。

ZONE フラグビットはゾーン管理者によって適切に設定 MUST である。検証リゾルバ(validator)は、RRSIG レコードが指す DNSKEY が ZONE ビットを持つ場合にのみ、その DNSKEY をゾーンの RRSIG の検証に使用する。

2.1.2. Secure Entry Point(SEP)フラグビット​

Secure Entry Point(SEP)ビット(ビット 15)は、この DNSKEY がゾーン管理者によってゾーンの「セキュアエントリポイント(Secure Entry Point)」とみなされるかどうかを識別する。セキュアエントリポイントとは、親ゾーン(parent zone)の DS レコードが指す鍵である。SEP ビットはゾーン署名操作において暗号論的な意味を持たない。これは、セキュアエントリポイントとして使用される鍵(すなわち親ゾーンに DS レコードを生成する鍵)と、ゾーン署名に使用されるその他の鍵をゾーン管理者が区別するための識別ビットである。

SEP ビットについての詳細は [RFC3757] を参照。

2.2. DNSKEY RDATA のプロトコルフィールド​

DNSKEY RR の PROTOCOL フィールドは 3 でなければならない(MUST)。PROTOCOL フィールドの値が 3 でない DNSKEY RR を受信した場合、形式エラー(malformed)として扱い、無視 MUST である。

2.3. DNSKEY RDATA のアルゴリズムフィールド​

DNSKEY RR の ALGORITHM フィールドは、この DNSKEY RR に使用される公開鍵暗号アルゴリズムを識別する。DNSSEC で使用されるアルゴリズム番号は付録 A に示す。

ALGORITHM フィールドの値は、PUBLIC KEY フィールドのレイアウトおよび内容を決定する。

2.4. DNSKEY RDATA の公開鍵フィールド​

DNSKEY RR の PUBLIC KEY フィールドは、ALGORITHM フィールドによって決まるフォーマットで公開鍵素材を含む。本書で定義されるアルゴリズムについては、公開鍵素材は各アルゴリズムに適したフォーマット(たとえば RSA の場合は長さ接頭の指数表現、DSA の場合はフィールドごとの連結)で与えられる。

2.5. DNSKEY 表現フォーマット​

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

  • フラグフィールドは 10 進符号なし整数で表される。
  • プロトコルフィールドは 10 進符号なし整数で表される。このフィールドは常に 3 でなければならない(MUST)。
  • アルゴリズムフィールドは 10 進符号なし整数で表される。
  • 公開鍵フィールドは Base64 [RFC3548] で符号化されたバイト列で表される。

例:

    example.com. 3600 IN DNSKEY 257 3 5 (
AQPSKmynfzW4kyBv015MUG2DeIQ3Cbl+BBZH4b/0PY1kxkmvHjcZc8nokfzjib
kX1j8Lj+ZnSs8LzDHl+0PzHj7mVoMjWSbqHUUjWQSnJCvgkJ2WGlKjK/bBIf
... ) ; key id = 60485

2.6. DNSKEY RR に関する特記事項​

DNSKEY RR はゾーン署名に使用される重要なレコードである。検証器は、RRSIG レコードが指す、かつ ZONE ビットがセットされた DNSKEY を使用して署名を検証 MUST である。

DNSKEY RRset が署名されるとき、その署名の検証に使用される DNSKEY 自体は、信頼の連鎖(chain of trust)を確立するために親ゾーンで DS レコードの形で公開 SHOULD である。


関連章ナビゲーション: