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 である。
関連章ナビゲーション:
- 前へ:1. 概要
- 次へ:3. RRSIG リソースレコード