DNSSEC 仕様
35 / 35 items
InfraLab Reference Series
Category: DNSSEC
Updated: 2026-05-14
infralab.jp
dnssec
35 items
DNSSEC 仕様
Abstract
DNSSEC の DNSKEY/RRSIG/DS/NSEC/NSEC3、KSK/ZSK、ロールオーバー、Chain of Trust、AD/CD/DO bit、検証失敗時の切り分けを整理。
Table of Contents
1. 概要 (RFC)
1.1. DNSSEC とは
DNS 応答に公開鍵署名を付け、改ざんと存在否定を検証できるようにする DNS 拡張。機密性は提供しない。
DNSSEC core: RFC 4033 / RFC 4034 / RFC 4035。検証結果は AD/CD/DO bit と RRSIG/NSEC 系で確認1.2. 主要 RFC
コア仕様、NSEC3、運用、アルゴリズム要件、検証済みキャッシュの積極利用、NSEC3 推奨を合わせて参照する。
RFC 4033/4034/4035, RFC 5155, RFC 6781, RFC 8198, RFC 8624, RFC 92761.3. AD / CD / DO bit
AD は検証済み応答、CD は検証無効要求、DO は DNSSEC レコード要求を表す。
AD: Authenticated Data。CD: Checking Disabled。DO: EDNS OPT flags の DNSSEC OK bit2. レコード種別
2.1. DNSKEY
ゾーンの公開鍵を保持する RR。KSK/ZSK の公開鍵とアルゴリズム、フラグを含む。
Type=48。Flags 16bit / Protocol=3 / Algorithm 8bit / Public Key。SEP(KSK) flag=257、ZSK は 256 が典型
RFC 4034 DNSKEY RDATA ASCII 図:
0 1 2 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.2. RRSIG
RRset に対する署名。署名対象タイプ、有効期限、署名者名、Key Tag などを持つ。
Type=46。Type Covered / Algorithm / Labels / Original TTL / Signature Expiration / Inception / Key Tag / Signer Name / Signature
RFC 4034 RRSIG RDATA ASCII 図:
0 1 2 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 Name ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signer Name / Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2.3. DS
親ゾーンに置く子ゾーン KSK のダイジェスト。親子間の chain of trust をつなぐ。
Type=43。Key Tag / Algorithm / Digest Type / Digest。Digest Type 2=SHA-256, 4=SHA-384
RFC 4034 DS RDATA ASCII 図:
0 1 2 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key Tag | Algorithm | Digest Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Digest ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2.4. NSEC
存在しない名前やタイプを、次の所有者名と存在タイプ bitmap で証明する。ゾーン列挙が可能になる。
Type=47。Next Domain Name + Type Bit Maps。RFC 4034/4035
RFC 4034 NSEC RDATA ASCII 図:
0 1 2 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Domain Name ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type Bit Maps ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2.5. NSEC3
ハッシュ化した名前の順序で存在否定を証明する。ゾーン列挙耐性を持つが辞書攻撃は完全には防げない。
Type=50。Hash Alg / Flags / Iterations / Salt / Next Hashed Owner Name / Type Bit Maps。RFC 5155
RFC 5155 NSEC3 RDATA ASCII 図:
0 1 2 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hash Alg | Flags | Iterations |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Salt Len | Salt ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hash Len | Next Hashed Owner ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type Bit Maps ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2.6. NSEC3PARAM
権威サーバが NSEC3 チェーン生成パラメータを示すための RR。応答の検証自体には NSEC3 を使う。
Type=51。Hash Algorithm / Flags / Iterations / Salt2.7. CDS / CDNSKEY
子ゾーンから親ゾーンへ DS 更新希望を伝える自動委任更新用 RR。
CDS Type=59、CDNSKEY Type=60。RFC 7344 / RFC 8078 系の自動化で利用3. 鍵・署名
3.1. KSK / ZSK 分離
KSK は DNSKEY RRset と DS 連携、ZSK は通常 RRset 署名に使う。ロールオーバー頻度と親連携を分離できる。
KSK: flags 257, DS 登録対象。ZSK: flags 256, zone RRset 署名対象。単一 CSK 運用もあり3.2. Double-Signature ロールオーバー
新旧鍵の署名を一定期間並行させ、キャッシュ TTL と親 DS 更新をまたいで安全に切り替える方式。
手順: publish new DNSKEY -> sign with old+new -> wait TTL -> switch DS if KSK -> remove old after TTL3.3. Double-DS ロールオーバー
親ゾーンに新旧 DS を同時登録してから子ゾーン鍵を切り替える KSK ロールオーバー方式。
Parent DS: old+new を保持。子 DNSKEY と RRSIG の TTL を考慮して撤去3.4. RSA/SHA-256
広く使われてきた DNSSEC アルゴリズム。鍵長により応答サイズが増えやすく、EDNS/fragmentation に注意する。
Algorithm 8 = RSASHA256。RFC 8624 では検証側必須、署名側推奨度は運用判断3.5. RSA/SHA-512
RSA/SHA-512 を使うアルゴリズム。RSA 鍵のサイズによる応答肥大化に注意する。
Algorithm 10 = RSASHA5123.6. ECDSA
RSA より短い署名で済むため DNS 応答サイズを抑えやすい。現代的な DNSSEC でよく使われる。
Algorithm 13 = ECDSAP256SHA256、14 = ECDSAP384SHA3843.7. EdDSA
Ed25519/Ed448 は短い鍵と署名で扱いやすいが、古い検証リゾルバの対応状況を確認する。
Algorithm 15 = ED25519、16 = ED448。RFC 8080 / RFC 86243.8. DS ハッシュアルゴリズム
親ゾーンに登録する DS digest の方式。SHA-1 は古く、SHA-256 または SHA-384 を使う。
Digest Type 1=SHA-1 (非推奨), 2=SHA-256, 4=SHA-3844. Authenticated Denial (NSEC / NSEC3)
4.1. NSEC による存在否定
問い合わせ名が存在しないことを、辞書順で前後の名前を示す NSEC RRset と RRSIG で証明する。
NXDOMAIN/NODATA 応答に NSEC + RRSIG。Type Bit Maps で NODATA を証明4.2. NSEC3 Opt-Out
大量の未署名委任があるゾーンで NSEC3 チェーンを小さくできるが、検証意味が複雑になる。
NSEC3 Flags Opt-Out bit=1。TLD など委任中心ゾーンで利用例4.3. NSEC3 iterations
反復回数を増やすと検証コストが増える。現在の推奨は反復 0 に寄っている。
RFC 9276: NSEC3 iterations は 0 を推奨。salt も不要または空に近い運用が推奨方向4.4. Aggressive Use of Cache
検証済み NSEC/NSEC3 を使って、存在しない名前の応答をキャッシュから合成し問い合わせを減らす。
RFC 8198。DNSSEC-validated cache の積極利用5. 委任・トラストアンカー
5.1. Chain of Trust
Root trust anchor から TLD、親ゾーン DS、子ゾーン DNSKEY へ署名検証をつなぐ。
Root DNSKEY -> RRSIG DNSKEY -> DS(parent) -> DNSKEY(child) -> RRSIG RRset5.2. Root KSK
DNSSEC 検証の起点となるルートゾーン KSK。IANA が trust anchor として公開する。
IANA Root Trust Anchor。2018 Root KSK rollover で KSK-2017 へ移行5.3. 2018 Root KSK Rollover
ルート KSK は 2018 年に初めてロールオーバーされた。古い trust anchor 固定環境では障害要因になった。
Root KSK rollover: 2018-10-11 に KSK-2017 で署名開始。将来 rollover も trust anchor 更新監視が必要5.4. 親 DS 不整合
子ゾーンの DNSKEY と親ゾーン DS が一致しないと SERVFAIL になり、権威応答自体は返っても検証で落ちる。
症状: validating resolver returns SERVFAIL。確認: dig DS child @parent / dig DNSKEY child +dnssec5.5. Island of Security
親 DS がなくてもローカル trust anchor を設定すれば検証可能なゾーン。通常の公開 DNS では限定用途。
ローカル trust anchor を resolver に登録。Chain of trust は公開 DNS ルートからはつながらない5.6. CDS / CDNSKEY 自動委任更新
レジストリ/レジストラが対応すれば、子ゾーンが公開する CDS/CDNSKEY に基づき DS を自動更新できる。
運用: publish CDS/CDNSKEY -> parent polling/validation -> DS update -> remove old after TTL6. 運用・トラブルシュート
6.1. dig での基本確認
DO bit を立てて DNSSEC 関連 RR を受け取り、AD bit や RRSIG の有無を確認する。
dig +dnssec example.jp A / dig +multi DNSKEY example.jp / dig DS example.jp6.2. CD bit での切り分け
検証失敗時に CD bit を使うと、検証を無効化した生応答に近い情報を確認できる。
dig +dnssec +cd example.jp A。CD=1 で resolver 側検証を抑止要求6.3. delv での検証
BIND の delv は DNSSEC 検証過程を確認するのに便利。trust anchor と署名連鎖を追える。
delv example.jp A / delv +root=trust-anchor-file example.jp6.4. DNSSEC failure 時の挙動
検証リゾルバは署名期限切れ、DS 不一致、アルゴリズム非対応、NSEC/NSEC3 不整合で SERVFAIL を返すことが多い。
典型: SERVFAIL。切り分け: authoritative 直引き、+cd、DNSViz、RRSIG expiration/inception、時刻同期6.5. 署名期限切れ
RRSIG Expiration を過ぎると検証不能になる。ゾーン署名ジョブや HSM、時刻同期の監視が必要。
RRSIG fields: Signature Inception / Signature Expiration。NTP 不整合でも検証失敗6.6. 応答サイズとフラグメント
DNSSEC は DNSKEY/RRSIG により応答が大きくなりやすい。UDP fragmentation や TCP fallback を考慮する。
EDNS UDP payload size 1232 付近の運用例。TCP/53 許可、最小応答サイズ設計、ECDSA/EdDSA で軽量化6.7. 運用ベストプラクティス
鍵保護、署名自動更新、ロールオーバー手順、親 DS 監視、検証リゾルバからの外形監視をセットで運用する。
RFC 6781。監視: DNSKEY/DS/RRSIG/NSEC、SOA serial、resolver AD bit、SERVFAIL rate7. References
- DNSSEC
- RFC 4033
- RFC 4034
- RFC 4035
- RFC 5155
- RFC 6781
- RFC 8198
- RFC 8624
- RFC 9276
- DNSKEY
- RRSIG
- DS
- NSEC
- NSEC3
- KSK
- ZSK
- Root KSK
- AD bit
- CD bit
- DO bit
- Chain of Trust
- delv
- dig +dnssec
- 署名
- 鍵