Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Network Working Group D. Eastlake
Request for Comments: 2535 IBM
Obsoletes: 2065 March 1999
Updates: 2181, 1035, 1034
Category: Standards Track
ドメインネームシステムのセキュリティ拡張
このメモの位置づけ
このドキュメントはインターネットコミュニティのためのインターネッ
ト標準プロトコルを記すとともに、改善のための議論および提案を要求
するものです。標準化状況と、このプロトコルの位置づけは、「インター
ネット公式プロトコル標準」(STD 1) を参照してください。このメモの
配布に制限はありません。
概要
Domain Name System(DNS) への拡張は、データの完全性や暗号化デジタ
ル署名の使用による "security aware" なリゾルバやアプリケーション
へのセキュリティへの証明の提供について述べられています。これらの
デジタル署名はリソースレコードとしてのセキュアなゾーン中に含まれ
ます。また、セキュリティはいくつかのケースにおいて "non-security
aware" な DNS サーバによっても提供可能です。
拡張は DNS における公開暗号鍵の格納場所を提供します。この鍵の格納
により DNS セキュリティと同様に公開鍵配布サービスをサポートするこ
とができます。格納された鍵は、"security aware" なリゾルバに対し、
それらが初期生成されるものに加えてゾーンの証明キーを学習させるこ
とができます。 DNSネームに関連した鍵は他のプロトコルをサポートす
るために検索されることが可能です。様々なキータイプやアルゴリズム
に対する規定がなされています。
さらに、セキュリティ拡張は DNS プロトコル処理およびリクエストの付
加的な証明を提供します。
このドキュメントは、初期の実装者や潜在的ユーザからの RFC2065 上の
フィードバックを統合しています。
以下に記す方々(アルファベット順)による DNS セキュリティへの重要な
貢献や提案は皆の認めるところです。
James M. Galvin
John Gilmore
Olafur Gudmundsson
Charlie Kaufman
Edward Lewis
Thomas Narten
Radia J. Perlman
Jeffrey I. Schiller
Steven (Xunhua) Wang
Brian Wellington
目次
概要.......................................................1
謝辞.......................................................2
1. あらすじ................................................4
2. DNS 拡張のあらすじ......................................5
2.1 提供されていないサービス...............................5
2.2 鍵の配布...............................................5
2.3 データ元の証明と完全性.................................6
2.3.1 SIG リソースレコード.................................7
2.3.2 存在しない名前やタイプへの証明.......................7
2.3.3 TTL(生存時間) に付随する特別に考慮すべき点...........7
2.3.4 委譲ポイントにおける特別な考慮点.....................8
2.3.5 CNAME にまつわる特別な考慮点.........................8
2.3.6 ゾーン以外の署名者...................................9
2.4 DNS トランザクション、リクエスト証明...................9
3. KEY リソースレコード...................................10
3.1 KEY リソースデータフォーマット........................10
3.1.1 オブジェクトタイプ、DNSネーム、鍵...................11
3.1.2 KEY RR フラグフィールド.............................11
3.1.3 プロトコル・オクテット..............................13
3.2 KEY アルゴリズム番号の詳述............................14
3.3 フラグ、アルゴリズム、プロトコルバイトの相互作用......15
3.4 ゾーンのセキュア/非セキュア状態の決定.................15
3.5 応答の構造内における KEY RR...........................17
4. SIG リソースレコード...................................17
4.1 SIG RDATA フォーマット................................17
4.1.1 「保護タイプ」フィールド............................18
4.1.2 アルゴリズム番号フィールド..........................18
4.1.3 ラベルフィールド....................................18
4.1.4 オリジナル TTL フィールド...........................19
4.1.5 署名満了、開始フィールド............................19
4.1.6 キー・タグフィールド................................20
4.1.7 署名者ネーム フィールド.............................20
4.1.8 署名フィールドd.....................................20
4.1.8.1 トランザクションおよびリクエスト SIG の計算.......21
4.2 応答の構造内における SIG RR...........................21
4.3 応答、SIG RR の処理...................................22
4.4 署名の生存時間、満了、TTL、有効性.....................23
5. 存在しない名前とタイプ.................................24
5.1 NXT リソースレコード,,,...............................24
5.2 NXT RDATA フォーマット................................25
5.3 ワイルドカードによる複雑さの増加......................26
5.4 例....................................................26
5.5 委譲ポイントにおける特別な考慮点......................27
5.6 ゾーン転送............................................27
5.6.1 完全ゾーン転送......................................28
5.6.2 増分ゾーン転送......................................28
6. 安全な解決方法と AD, CD ビット.........................29
6.1 AD, CD ヘッダビット...................................29
6.2 静的設定キー..........................................31
6.3 DNS を通した連鎖......................................31
6.3.1 KEY を通した連鎖....................................31
6.3.2 Conflicting Data....................................33
6.4 安全な時間............................................33
7. ASCII Representation of Security RRs...................34
7.1 Presentation of KEY RRs...............................34
7.2 Presentation of SIG RRs...............................35
7.3 Presentation of NXT RRs...............................36
8. リソースレコードの正規形と正規順.......................36
8.1 正規リソースレコード形................................36
8.2 正規 DNS ネーム順.....................................37
8.3 Rset 内の 正規リソースレコード順......................37
8.4 Canonical Ordering of RR Types........................37
9. Conformance............................................37
9.1 Server Conformance....................................37
9.2 Resolver Conformance..................................38
10. Security Considerations...............................38
11. IANA Considerations...................................39
References................................................39
Author's Address..........................................41
Appendix A: Base 64 Encoding..............................42
Appendix B: Changes from RFC 2065.........................44
Appendix C: Key Tag Calculation...........................46
Full Copyright Statement..................................47
1. あらすじ
このドキュメントは DNS セキュリティと公開鍵配布のサポートを行う
DNS プロトコルへの拡張を標準化するものです。DNS (RFC1033、1034、
1035、およびその後の RFC) に親しんでいる読者を想定しています。こ
の拡張の初期バージョンは RFC2065 にて登場しました。RFC2065 への置
き換えには潜在的ユーザからの初期実装の経験や要求を織り込んでいま
す。
セクション 2 は拡張のあらすじ、鍵配布、データ元証明、それらが実行
するトランザクションやリクエストセキュリティを提供します。
セクション 3 は KEY リソースレコード、その構造、DNS 応答における
使用法について議論します。このリソースレコードは DNS において名前
付けされた要素の公開鍵を表し、鍵配布のために利用されます。
セクション 4 は SIG デジタル署名リソースレコード、その構造、DNS
応答における使用法について議論します。このリソースレコードは DNS
中の他のリソースレコードを証明するのに使われたり、補助的に DNS の
トランザクションやリクエスト証明に利用されます。
セクション 5 は NXT リソースレコードと、完全および増分ゾーン転送
を含む DNS 応答における利用について議論します。NXT レコードは、証
明による名前の存在や既存の名前に対するリソースレコードタイプの否
認を許可します。
セクション 6 ではリゾルバがどのように鍵とともに初期化されるか、ま
たセキュアな DNS リクエストの解決を始めるかについて議論します。リ
ゾルバとサーバ間の挙動は、 "security aware" と "security
non-aware" の様々な組合せとともに議論されています。2つの追加 DNS
ヘッダビットがリゾルバとサーバとの間のシグナリングのために定義さ
れています。
セクション 7 では、マスターファイルや他のところでセキュリティリソー
スレコードを使用するための ASCII 表現について議論しています。
セクション 8 は DNS のセキュリティ目的のためのリソースレコードの
正規形や順番を定義しています。
セクション 9 ではリゾルバとサーバの適合レベルを定義しています。
セクション 10 はいくつかのセキュリティ上の考慮点を挙げています。
セクション 11 はこのドキュメントで定義されたパラメータの追加場所
に対する IANA の考察を示しています。
付録 A はこのドキュメント中で定義されたいくつかの RR の表現をファ
イル中で使用するときに利用される base64 エンコーディングの詳細を
与えています。
付録 B は RFC2065 とこのメモ間の相違点をまとめています。
付録 C はほとんどの SIG RR 中のキー・タグとして使われる簡単なチェッ
クサムの計算方法を明記しています。
このドキュメント中のキーワードである、"MUST", "MUST NOT",
"REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "MAY", "OPTIONAL" は、[RFC 2119] で述べられている
ように解釈されます。
2. DNS 拡張のあらすじ
DNS プロトコルのセキュリティ拡張は 3つ (セクション 2.2 で述べられ
る鍵配布、セクション 2.3 で述べられるデータ元証明、セクション 2.4
で述べられるトランザクション、リクエスト証明) のサービスを提供し
ます。
「生存時間 (TTL)」や CNAME 、委譲ポイントに関連する特別な考察もセ
クション 2.3 で述べられています。
2.1 提供されていないサービス
その中のデータがパブリックであり、全ての問い合わせに対し同じ回答
を与えることは DNS の設計哲学の一部です。この哲学にならい、アクセ
スコントロールリストや問い合わせの差別化のための他の方法を含める
試みはなされていません。
問い合わせや応答の秘匿性のための努力はなされたことがありません。
(このサービスは IPSEC [RFC2401] や、TLS、他のプロトコルによって可
能です。)
DoS 攻撃に対する防御策も提供されていません。
2.2 鍵の配布
リソースレコードのフォーマットは DNS ネームに鍵を関連づけるよう定
義されます。これにより DNS が DNS セキュリティや他のプロトコルの
サポートにおいて公開鍵を配布する機構として使われることが可能にな
ります。
KEY リソースレコードの文法はセクション 3 にて述べられています。そ
れには、アルゴリズム、実際の公開鍵パラメータ、実体に関連した鍵か
否かを表す様々なフラグが含まれます。
セクション 3.5 で述べられている条件の下では、"security aware" な
DNS サーバは (最低限の問い合わせのために) 実際の要求されたリソー
スレコードと一緒に付加情報として KEY リソースを返すよう自動的に試
みるであろう、と記述されています。
2.3 データ元の証明と完全性
証明は生成された DNS 暗号デジタル署名中でリソースレコードセット
(RRsets [RFC2181]) に関連付けされて提供されます。一般的に、ゾーン
全体を証明する単一の秘密鍵が存在するでしょう (異なったアルゴリズ
ムや署名者による複数の鍵は存在するかもしれません) 。もし、
"security aware" なリゾルバが確実にゾーンの公開鍵をそのゾーンから
読み込んだ署名済データのために学習すれば、それが適切に認可された
ことを証明することができます。最もセキュアな実装はゾーンの秘密鍵
をオフラインに保ち、定期的にゾーン中のすべてのレコードを再署名す
る仕組みです。しかし、動的更新 [RFCs 2136,2137] のように DNS 秘密
鍵がオンラインである必要のある [RFC 2541] 場合があります。
データ元証明鍵はデータのコピーが保存されているサーバにではなくゾー
ンに関連しています。このことは、セカンダリサーバの妥協、または、
もし鍵がオフラインで維持されかつゾーン用のプライマリサーバであっ
たとしても、データが本物であるかを決定する機能をリゾルバが持って
いるという保証度合に必ずしも影響しないことを意味します。
リゾルバはゾーンの公開鍵を DNS から読み込むか、静的に設定されるこ
とによって学習することができます。DNS からの読み込みにより確実に
公開鍵を学習するために、鍵自身がリゾルバが信頼する鍵により署名さ
れなければなりません。リゾルバは出発点として、1つのゾーンを証明す
る少なくとも 1つの公開鍵で形成されるはずです。そこから、DNS ツリー
の中間ゾーンがセキュアでありまたそれらの署名済の鍵にアクセス可能
であれば、他のゾーンの公開鍵を安全に読むことができます。
データ元証明と完全性の追加には、鍵配布に必要な署名リソースタイプ
と鍵リソースタイプの追加の他には既存の DNS プロトコルの変更を必要
としません (データ非存在証明は NXT RR (セクション 2.3.2) を必要と
します)。このサービスは現存するリゾルバやキャッシュサーバ実装が
付加リソースタイプ (セクション 9 を参照) をサポートできる限りサポー
トされます。一つ例外として、"non-security aware" なサーバからのセ
キュアゾーン中の CNAME 参照は証明されません (セクション 2.3.5 を
参照)。
もし、署名が別々に検索されたり、証明する情報を検索しているときに
証明された場合、サーバに余計な処理が発生し、パフォーマンスに影響
を及ぼします。"security aware" なサーバは必要な分の署名を送ること
によりそのような状況悪化を軽減します (セクション 4.2 を参照)。
2.3.1 SIGリソースレコード
SIG リソースレコード (署名) の文法はセクション 4 にて紹介されてい
ます。SIG RR は署名者や有効期限に署名されている RRset を暗号に結
びつけます。
セキュアゾーン中の各々の名前は、グルーレコードと委譲ポイント NS
レコード以外のその名前下のリソースタイプ毎のために少なくとも 1つ
の SIG RR と関連づけられているでしょう。"security aware" なサーバ
は検索された RR と共に対応した SIG を返そうとします。もし
"security aware" なサーバでなければ、リゾルバは名前のために全ての
SIG レコードを検索し、リゾルバが関心をもつリソースレコードセット
を署名したものを選択しなければならなりません。
2.3.2 存在しない名前やタイプへの証明
上記のセキュリティ機構はゾーンに存在する RRset へ署名する方法を提
供しているに過ぎません。「データ元」証明はゾーン中に存在しないド
メインネームや、存在しないタイプを持つドメインネームには明らかに
提供されません。このギャップは、(ゾーン中の非存在名の範囲やその範
囲の直前の存在する名前に対する非存在タイプを確信を持って主張する)
NXT RR により満たされます。
セクション 5 以下で NXT RR をカバーしています。
2.3.3 TTL(生存時間) に付随する特別に考慮すべき点
データが最初に署名された時から署名が検証される時までにそのデータ
に変更が加わっていた場合、デジタル署名は失敗します。これは、我々
が期待している、キャッシュされている間カチカチと減っていくリソー
スレコードの TTL (生存時間) フィールドの存在と矛盾してしまいます。
これは生存時間をデジタル署名から除外すれば回避できますが、検出さ
れない勝手に長い TTL 値を設定している良心的でないサーバを許可して
しまうことになります。代わりに、「オリジナル」 TTL を署名に含める
ことで正しい TTL を持つデータとコミュニケートできます。このような
企みをもった良心的でないサーバは TTL を操作できますが、"security
aware" なリゾルバは TTL を突き返し、署名された値を使います。署名
は 「署名開始時間」 と 「署名満了時間」 を別々に含んでいます。絶
対時間を知っているリゾルバは、署名が有効かどうかを安全に判断する
ことができます。TTL は本来データベースに存する機構であり、
"non-security aware" サーバは TTL がサポートされていることを前提
にしているので、単独で TTL の代わりに署名の満了時間に依存すること
はできません。
2.3.4 委譲ポイントにおける特別な考慮点
DNS セキュリティは、完全にゾーン・マネージャーによって握られた特
別な秘密鍵によって署名された各エントリー (RRset) を持つゾーン所有
者の管理下でデータのユニットとして各ゾーンを見たいでしょう。しか
し、DNS プロトコルはゾーンの葉ノード (それはまた、サブゾーンの頂
点ノード (つまり委譲ポイント) でもある) を「実際」にサブゾーンに
属していると見なします。
スーパーゾーンがセキュアな場合、各サブゾーンにはスーパーゾーンに
よって署名されたゾーン KEY RR がなければいけません (MUST)。しかし、
セキュリティ用の RR が追加されたり変更されることがないようなセキュ
アでないサブゾーンの場合は、サブゾーンがセキュアでないことを宣言
する KEY がスーパーゾーンの署名とともにスーパーゾーンになくてはい
けません (MUST)。サブゾーン KEY RR だけはスーパーゾーンにより署名
されるべきですが、それ以外の全ての RR についてサブゾーンからのデー
タは権威的です。NS RR といくつかの グルーアドレス RR はサブゾーン
内でのみ署名されるべきです (SHOULD)。 所有者としてゾーン名を持つ
SOA RR と他のいくつかの RR はサブゾーンにのみ現れるべきであり、以
上のようにここでのみ署名されます。セクション 5 で述べるように、スー
パーゾーンとサブゾーンが両方とも安全な場合、 NXT RR タイプは両方
において常に権威的でかつ異なって現れる異例です。
2.3.5 CNAME にまつわる特別な考慮点
セキュリティが CNAME RR として関連づけた同所有者名を持つ RR を
"security aware" でないサーバから検索した時に問題が発生します。特
に、最初の CNAME や他のタイプの検索は、関連する SIG RR や KEY RR,
NXT RR を検索しないかもしれません。CNAME 以外の検索されたタイプに
ついては、CNAME (または CNAME の連鎖) のターゲット名でそのタイプ
を検索し、さらに CNAME を返すでしょう。特に、特定のタイプ SIG の
検索はオリジナル CNAME ドメインネーム、正確にはターゲット名に対す
る SIG を (もしあったとしても) 得ることはないでしょう。
"security aware" なサーバは DNS における CNAME を安全なものとする
ため使用されなければなりません。"security aware" なサーバは
(1) CNAME RR と一緒についてくる KEY, SIG, NXT RR を許可しなくては
いけません (MUST)。
(2) CNAME の検索と同様にこれらの検索上の CNAME を抑制しなければな
りません (MUST)。
(3) 問い合わせの解決において遭遇した CNAME を証明した SIG RR を自
動的に返さなければなりません (MUST)。
これは、CNAME RR が存在するノードにおいて他の RR タイプを禁止して
いたこれまでの DNS 標準 [RFCs 1034/1035] からの変更です。
2.3.6 ゾーン以外の署名者
SIG リソースレコードの署名者がゾーンを証明するのに使われた秘密鍵
以外である場合が存在します。
一つは、エンティティがそのレコードを証明および更新することを許可
されており [RFC 2137]、ゾーン・キーがオンラインでないモードでゾー
ンが操作されている場合における動的更新 [RFC 2136] (または、セキュ
アな証明を要求する将来のリクエスト) のための場合です。エンティティ
の公開鍵は DNS 中に現れなければならなく、またゾーンレベルの鍵によ
り署名されていなければなりませんが、他の RR はエンティティの鍵で
署名されても構いません。
二つめのケースは、セクション 2.4 で述べられているトランザクション
やリクエスト証明のサポートです。
備考として、署名は DNS 以外のアプリケーションで利用されるために
DNS リソースレコードに含まれる可能性があります。DNS が関連付けた
署名は、ゾーン所有者の権威をもつ起源データや、適切なエンティティ
によるリクエストやトランザクションであることを証明します。他の署
名は他の保証タイプを提供することができます。
2.4 DNS トランザクション、リクエスト証明
上で述べたデータ元証明サービスは検索されたリソースレコードと存在
しないリソースレコードを保護しますが、DNS リクエストやメッセージ
ヘッダの保護は提供しません。
もし悪いサーバにより間違ってヘッダビットがセットされていたとして
も、できることはほとんどありません。しかし、トランザクション証明
を追加することは可能です。このような証明は、リゾルバにとって少な
くともサーバからの要求に対するメッセージを受け取ることや、送信し
た問い合わせからの応答 (これらのメッセージは通過途中で改ざんされ
ていない) であることを確信させるものです。これは、リゾルバの問い
合わせやサーバの応答の連続性を電子的に署名するリプライの最後につ
く特別な SIG リソースレコードを任意的に付け加えることによって達成
されます。
リクエストもまた、その最後に特別な SIG RR を含めることで証明でき
ます。リクエストを証明することは古い DNS サーバでは機能せず、空で
ない付加情報部はエラーを返させるか、ほとんどの場合無視されるでしょ
う。しかし、このリクエストを署名するシンタックスは、セキュアな動
的更新リクエスト [RFC 2137] を証明する方法や、将来の証明要求リク
エストとして定義されています。
トランザクション・セキュリティ中で使われる秘密鍵は含まれるゾーン
ではなく、リプライを構成するエンティティに属します。リクエスト証
明もまた、確立のために要求されるリクエストの権威に依存するホスト
の秘密鍵や他のリクエストを構成するエンティティや他の秘密鍵を含む
かもしれません。対応する公開鍵は通常、検証のために DNS へ格納され
DNS から検索されます。
リクエストとリプライはかなり変化するのでメッセージ証明 SIG をあら
かじめ計算することができません。このように、秘密鍵をオンライン、
例えばソフトウェアや直接接続されたハードウェアの一部で保持するこ
とが必要でしょう。
3. KEY リソースレコード
KEY リソースレコード (RR) は DNS ネームに関連している公開鍵を格納
するために利用されます。これはゾーンの公開鍵、ユーザやホストや他
のエンドエンティティの公開鍵であるでしょう。"security aware" な
DNS 実装は少なくとも 2 つの同時に有効な同じ名前に関連付けられた同
じタイプの鍵を扱うよう設計されなければいけません (MUST)。
KEY RR のタイプ番号は 25 です。
KEY RR は、他の RR のように SIG RR によって証明されます。KEY RR
はゾーンレベルの鍵で署名されなければなりません。
3.1 KEY リソースデータフォーマット
KEY RR のリソースデータはフラグ、プロトコルオクテット、アルゴリズ
ム番号オクテット、公開鍵自身から成ります。
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 /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
KEY RR は証明書の格納を意図していません。また、個別の証明書 RR は
[RFC 2538] で定義されており、その目的のために開発されています
KEY RR 所有者名、フラグ、プロトコルオクテットの意味はセクション
3.1.1 から 3.1.5 にかけて説明します。フラグとアルゴリズムは、アル
ゴリズムオクテットに続くデータのフォーマットや存在を制御すること
から、先に検査されなければなりません。アルゴリズムや公開鍵フィー
ルドについてはセクション 3.2 で説明します。公開鍵のフォーマットは
アルゴリズム依存です。
KEY RR 自体はその有効期限を明記しませんが、それらの証明 SIG RR が
明記します。セクション 4 で説明します。
3.1.1 オブジェクトタイプ、DNSネーム、鍵
KEY RR 中の公開鍵は所有者名の中で指定されたオブジェクトのためにあ
ります。
DNS ネームは 3 つの異なるカテゴリのものに言及されるかもしれません。
例えば、foo.host.example は (1) ゾーンであるかもしれないし (2) ホ
ストや他のエンティティであるかもしれないし (3) ユーザの DNS ネー
ムにマッピングされるか、アカウント foo@host.example であるかもし
れません。 このように、以下に述べるようにこれらの KEY RR 中のフラ
グビットは所有者名と公開鍵が関連付けられているこれらの役割を示し
ています。適切なゾーン KEY RR はセキュアなゾーンの頂点ノードで生
じなければならなく (MUST) 、またゾーン KEY RR は委譲ポイントにお
いてのみ生じることに注意してください。
3.1.2 KEY RR フラグフィールド
フラグフィールドの中
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| A/C | Z | XT| Z | Z | NAMTYP| Z | Z | Z | Z | SIG |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
ビット 0 と 1 は鍵タイプビットであり、値により以下の意味を持ちます。
10: 証明のための鍵の使用は禁止されます。
11: 機密性のための鍵の使用は禁止されます。
00: 証明および (または) 機密性のための鍵の使用が許可され
ます。DNS セキュリティが証明のためだけに鍵を使用する
ことに注意してください。機密性利用フラグは他のプロト
コルでの鍵の使用のために提供されます。機密性のための
鍵配布のサポートを意図していない実装は、それらが提供
する鍵のために機密性使用禁止フラグを on にすることを
要求するかもしれません。
11: 両方のビットが1である場合、「鍵なし」ということで、鍵
情報はなく、アルゴリズムオクテットの後ろで RR は終り
ます。この「鍵なし」値を使用することによって、署名さ
れた KEY RR は例えばゾーンが安全ではないことを確信を
もって主張することができます。
ビット 2 は予約されていて 0 です。
ビット 3 は、フラグ拡張ビットとして予約されいます。もしそれが 1
であれば、2 番目の 16 ビットフラグフィールドはアルゴリズムオクテッ
トの後ろ、鍵データの前に追加されます。一つ以上のこのような追加ビッ
トが定義されてない、もしくは 0 である場合は、このビットをセットし
てはいけません (MUST NOT)。
ビット 4-5 は予約されていて 0 です。
ビット 6 と 7 は、名前タイプをエンコードするフィールドを形成しま
す。フィールドの値は以下の意味を持っています。
00: 鍵がエンドエンティティ、通常ホストのユーザやアカウン
トに関連付けられていることを示しています。コード化さ
れた所有者名は SOA や RP RR 中の信頼できる個々のメー
ルボックスのために使用されています - 所有者名は、エン
ティティ名におけるのノードの名前であるユーザ名にあた
ります。例えば、host.subdomain.example 上の
"j_random_user" というユーザは、
j_random_user.host.subdomain.example という名前を持つ
KEY RR を通して関連付けられた公開鍵を持ち得ます。ユー
ザの証明がどこで要求されたかをセキュリティプロトコル
の中で使用することができるかもしれません。この鍵は IP
あるいはユーザレベルサービス (telnet, ftp, rloginなど)
のための他のセキュリティにおいても有用かもしれません。
01: 名前が KEY RR 所有者名であるゾーンのためのゾーン・キー
であることを示しています。この鍵は、データ元証明の主
要な DNS セキュリティ仕様のために使用される公開鍵です。
ゾーン KEY RR は委譲ポイントでのみ生じます。
10: 名前が RR 所有者名である非ゾーンエンティティに関連付
けられた鍵であることを示しています。これは一般にはホ
ストですが、DNS ツリーの一部において、電話番号 [RFC
1530] や数値の IP アドレスといった他のエンティティタ
イプでもあり得ます。この鍵は DNS リクエストとトランザ
クションの証明サービスを用いた接続において利用される
公開鍵です。また、NTP やルーティングといった、ユーザ
よりもホストにおいて証明されることが望まれる IP セキュ
リティプロトコルで利用されます。
11: 予約
ビット 8-11 は予約されていて 0 です。
ビット 12-15 は 「署名者」 フィールドです。0 でない場合、鍵が DNS
動的更新 [RFC 2137] にて指定されているものに正当に署名できること
を示しています。署名のフィールドの値に関わらず、ゾーン・キー (上
記ビット 6, 7 を参照) はゾーンのどのような RR にも権威的に署名し
なければならないことに注意してください。
3.1.3 プロトコル・オクテット
様々なインターネットプロトコルと共に DNS に格納された鍵が使用され
るであろうことが予想されます。鍵の異なるプロトコル用有効性を示す
ために、今後指定されるような KEY RR フラグ中の現在未使用 ( 0 であ
る) ビットのいくつかとプロトコル・オクテットが使用されることが意
図されています。
以下に示すプロトコル・オクテットの値が予約されています。
値 プロトコル
0 - 予約
1 TLS
2 email
3 dnssec
4 IPSEC
5-254 - IANAによる割り当て利用
255 全て
さらに詳しく、
1 は TLS 接続のために予約されています。
2 は電子メール接続のために予約されています。
3 は DNS セキュリティのために使用されます。DNS セキュリティ
で使用されるゾーン・キーや他の鍵のためにプロトコルフィール
ドはこの値にセットすべきです (SHOULD) 。この鍵が、フラグが
それをゾーン・キーに分類するか、署名者フラグフィールドが 0
でないという事実による DNS セキュリティ鍵であることを決定
できる実装系は、プロトコルフィールドを検査するために必須で
はありません (NOT REQUIRED)。
4 は Oakley/IPSEC [RFC 2401] プロトコルを参照するのに予約さ
れ、この鍵がセキュリティ標準と共に利用するのに有効であるこ
とを示しています。エンティティもしくはユーザフラグビットが
立っている場合、名前が KEY RR の所有者であるユーザかエンド
エンティティの代理として、セキュアなコミュニケーションによ
る接続においてこの鍵を利用することができます。このプロトコ
ル値を持った KEY リソースの存在は、ホストが Oakley/IPSEC
を話すということを主張しています。
255 は、KEY RR プロトコル・オクテット値が定義されたいかなる
プロトコルによる接続において利用できることを示しています。
この値の使用はすべきでなく、異なるプロトコルに対し異なる鍵
を用いる事が推奨されます。
3.2 KEY アルゴリズム番号の詳述
このオクテットは、セクション 4.1 で述べられている SIG リソースに
おける同フィールドと同じです。以下の値の割り当ては -
値 アルゴリズム
0 - 予約, セクション 11 を参照
1 RSA/MD5 [RFC 2537] - 推奨
2 Diffie-Hellman [RFC 2539] - オプション, 鍵のみ
3 DSA [RFC 2536] - *必須*
4 楕円曲線暗号のために予約
5-251 - 利用可, セクション 11 を参照
252 間接鍵のために予約
253 プライベート - ドメインネーム (以下を参照)
254 プライベート - OID (以下を参照)
255 - 予約, セクション 11 を参照
アルゴリズム固有のフォーマットや手順は個別のドキュメントを参照し
てください。実装必須である相互接続性のためのアルゴリズムは 3 番の
DSA です。アルゴリズム 2 は Diffie-Hellman key を示し、アルゴリズ
ム 4 は 楕円曲線暗号のために予約されています。
アルゴリズム番号 252 は間接キー (実際の鍵材料が他の場所にある) を
示します。このフォーマットは別ドキュメントで定義されています。
アルゴリズム番号 253 と 254 は、プライベート使用のために予約され
ており、特定のアルゴリズムに割り当てられることはありません。253番
に関して、公開鍵エリアおよび署名は wire エンコード化されたドメイ
ンネームから始まります。ローカルドメインネームの圧縮だけが許され
ます。ドメインネームは使用するプライベートアルゴリズムを表し、公
開鍵エリアの残りはそのアルゴリズムにより必要とされるものすべてで
す。254番に関しては、KEY RR のための公開鍵エリアおよび署名は BER
エンコードされたオブジェクトID (ISO OID) に符号なしバイト長で続き
ます。OID は使用中のプライベートアルゴリズムを示し、エリアの残り
はそのアルゴリズムにより必要とされるものすべてです。エンティティ
は、プライベートアルゴリズムの指定を制御するドメインネームや OID
を単に使用するにとどめておくべきです。
0 と 255 は予約されていますが、0 はアルゴリズムフィールドにてその
フィールドが利用されていないときに使われます。例として、鍵が存在
しないところでは、 KEY RR のトップの 2つのフラグビットは on (
"no-key" 値) です。
3.3 フラグ、アルゴリズム、プロトコルバイトの相互作用
鍵なしタイプフラグ、アルゴリズムバイト、プロトコルバイトや将来割
り当てプロトコルを示すフラグの様々な組み合わせが可能です。
NK = 鍵なしタイプ (0 と 1 フラグビットが on)
AL = アルゴリズムタイプ
PR = プロトコルバイトや将来割り当てフラグに示されているプロトコル
x 非ゼロ値が有効であることを表す
AL PR NK 意味
0 0 0 不当、鍵を要求するが、アルゴリズムフィールドが不適切。
0 0 1 所有者ゾーンへ全体的なセキュリティ不足を指定。
0 x 0 不当、鍵を要求するが、アルゴリズムフィールドが不適切。
0 x 1 セキュアでないプロトコルが指定された。(他のものはセ
キュアかもしれない)
x 0 0 鍵は与えるが、それを使うプロトコルがない。
x 0 1 指定アルゴリズムに対して鍵を拒否する。
x x 0 プロトコルに対する鍵を指定する。
x x 1 プロトコルに対するアルゴリズムが理解されていない。
3.4 ゾーンのセキュア/非セキュア状態の決定
「鍵なし」タイプフィールド値 (両方の鍵タイプフラグビット 0, 1 が
on) であるゾーン KEY RR は、たとえ鍵を持つゾーン KEY RR がセキュ
アゾーンだと主張しても、それは非セキュアゾーンを示します。ゾーン
状態のセキュア、非セキュアは異なる暗号アルゴリズムによって変わり
ます。同じアルゴリズムであっても、矛盾するゾーン KEY RR が現れる
かもしれません。
全ての RR のように、それらが信頼する公開暗号鍵をリゾルバが持って
おり署名者フィールドが署名者である SIG RR によって証明される場合
や、リゾルバのポリシーが鍵所有者名に対し署名者が署名することを許
可しているところにおいてのみゾーン KEY RR は信頼されます。非セキュ
アゾーン KEY RR はゾーンのセキュリティ状態決定において無視されな
ければなりません (MUST)。しかし、異なるアルゴリズムや署名者などを
持つゾーンにおける信頼されたゾーン KEY RR の多数のセットがあり得
ます。
いくつかの特定アルゴリズムにおいて、ゾーンは
(1) セキュア (受け取った RR は SIG RR により証明されているはずで
ある、または偽物として廃棄されることを示す)
(2) 非セキュア (SIG RR は期待されていないか、ゾーンから受け取った
RR のために要求されていることを示す)
(3) 試行的セキュア (SIG RR は現れるかもしくは現れないが、見つかれ
ば必ずチェックされる)
であるでしょう。ゾーンの状態は以下のように決定されます --
1. もし、ゾーンやアルゴリズムにおいて、各々の信頼されたゾーンへの
ゾーン KEY RR がゾーンへの鍵がないと言った場合には、そのアルゴ
リズムに対してはセキュアではない。
2. もし、少なくとも 1つの信頼された「鍵無し」ゾーン KEY RR と一つ
の信頼されたゾーン KEY RR を明示している鍵があれば、そのゾーン
はそのアルゴリズムに対して試行的にセキュアである。証明済や未証
明の両方のそれ用の RR はリゾルバによって受け付けられるべきであ
る。
3. もしゾーンやアルゴリズムが持つ各々の信頼されたゾーン KEY RR が
鍵指定である場合、そのアルゴリズムに対してはセキュアであり、そ
れから証明された RR のみが受け付けられるでしょう。
例:
(1) リゾルバは最初に、DNS 階層内のゾーン Z のスーパーゾーンによる
署名だけを信頼します。したがって、リゾルバはスーパーゾーンに
よって署名される KEY RR のみを見るでしょう。もしリゾルバが
「鍵なし」 KEY RR だけを見つけた場合、ゾーンがセキュアでない
と見なします。もし「鍵指定」KEY RR だけを見つけた場合には、そ
のゾーンがセキュアと見なし署名されていない応答を拒否します。
両方みつけた場合は、ゾーンが試行的なセキュアであると見なしま
す。
(2) リゾルバがゾーン Z (リゾルバがそのローカルゾーンから安全に受
け取った) のスーパーゾーンや第三者、cert-auth.example を信頼
します。ゾーン Z からのデータを考慮する場合、それは Z のスー
パーゾーンによって、cert-auth.example によって、また他のもの
によって署名されるかもしれません。以下の表はゾーン Z の署名さ
れたゾーン KEY RR によって、セキュアとみなせるか、試行的セキュ
アであるとみなせるか、非セキュアであるとみなせるかを示すもの
です。
c e r t - a u t h . e x a m p l e
KEY RRs| な し | 鍵なし | 混合 | 鍵あり |
--+-----------+-----------+----------+----------+
ス なし | 不適合 | 非セキュア| 試行的 | セキュア |
| --+-----------+-----------+----------+----------+
パ 鍵なし | 非セキュア| 非セキュア| 試行的 | セキュア |
| --+-----------+-----------+----------+----------+
ゾ 混合 | 試行的 | 試行的 | 試行的 | セキュア |
| --+-----------+-----------+----------+----------+
ン 鍵あり | セキュア | セキュア | セキュア | セキュア |
+-----------+-----------+----------+----------+
3.5 応答の構造内における KEY RR
KEY RR への明白なリクエストは、(もちろん) "security aware" なサー
バからの対応する SIG RR (セクション 4.2 を参照) 以外には特別な付
加情報の処理は起こりません。
"security aware" な DNS サーバは 以下のケースにおいて、鍵が有効で
あるところにおいて KEY RR を 付加情報として応答の中に含めます。
(1) SOA や NS RR の検索上で、同じ名前 (恐らく単なるゾーン・キー)
を備えた KEY RRset はスペースが利用可能な場合、付加情報として
含まれるべきです (SHOULD)。もし全ての付加情報が収まらなければ、
A や AAAA グルーレコード RR は KEY RR よりも優先されます。
(2) A や AAAA RR の検索上で、同じ名前 (普段は単なるホスト RR であ
り、通常異なる名前を持つゾーン・キーではない) を備えた KEY
RRset はスペースが利用可能な場合、含まれるべきです (SHOULD)。
付加情報として A または AAAA RR を含む場合には、同じ名前を持
つ KEY RRset もまた A や AAAA RR より低いプライオリティである
が含まれるべきです。
4. SIG リソースレコード
SIG または 「署名」リソースレコード (RR) は、セキュアドメインネー
ムシステム (DNS) にてデータが証明されることの基本にあたる方法です。
つまり、セキュリティ提供の心臓部です。
SIG RR は、容赦なく特定のタイプ、クラスおよび名前の RRset [RFC
2181] を証明し、時間間隔や署名者のドメインネームにそれを結び付け
ます。これは、暗号技術や署名者の秘密鍵を使うことで行われます。署
名者はたびたび、RR が発生したゾーンの所有者です。
SIG RR タイプ番号は 24 です。
4.1 SIG RDATA フォーマット
SIG RR の RDATA 部分は以下に示すとおりです。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 /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
4.1.1 「保護タイプ」フィールド
「保護タイプ」 は、この SIG により保護されている他の RR のタイプ
です。
4.1.2 アルゴリズム番号フィールド
このオクテットは、セクション 3.2 にて記述されています。
4.1.3 ラベルフィールド
「ラベル」オクテットは、ルートのための無効ラベルや、ワイルドカー
ド用の "*" を勘定しない、オリジナルの SIG RR 所有者名にどれだけの
ラベルがあるかの符号なしの数です。もし、セキュアな検索がワイルド
カードによる置き換えの結果であれば、リゾルバにとって、デジタル署
名の検証においてその名前の元のフォームを使用する必要があります。
このフィールドは元のフォームを決定するのを簡単にします。
もし検索において、RR が 「ラベル」により示されるものよりも長い名
前を持っているよう現れる場合、リゾルバはそれがワイルドカードによ
る置き換えの結果であることがわかります。もし RR 所有者名が ラベル
カウントより短ければ、SIG RR は改ざんとみなされ無視されます。現在
の DNS が許容するラベルの最大数は 127 ですが、全体のオクテットは
予約されており、要求されれば DNS ネーム は常に 255 ラベルまで拡張
されるべきでしょう。以下の表はいくつかの例を挙げてます。「ラベル」
の値は最上段に、検索された所有者名は左に、表の中身は RR が 改ざん
されたこと意味する "bad" を除いて、署名検証に使われる名前です。
labels= | 0 | 1 | 2 | 3 | 4 |
--------+-----+------+--------+----------+----------+
.| . | bad | bad | bad | bad |
d.| *. | d. | bad | bad | bad |
c.d.| *. | *.d. | c.d. | bad | bad |
b.c.d.| *. | *.d. | *.c.d. | b.c.d. | bad |
a.b.c.d.| *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. |
4.1.4 オリジナル TTL フィールド
「オリジナル TTL」フィールドは、
(1) 実際の TTL フィールドを減じることによってキャッシュサーバが引
き起こす証明の問題
(2) 実際の TTL フィールドを操作することによって良心的でないサーバ
が引き起こすセキュリティ問題
を避けるために RDATA 部に含まれています。このオリジナル TTL は現
在の TTL フィールドがそうでない間、署名により保護されています。
注: 署名の検証時に、「オリジナル TTL」フィールドは保護された RR
へと戻されなければなりません (セクション 8 を参照)。これは一般的
に、特定のタイプ、名前およびクラス (任意の RRset のすべてのRR) 用
の RRがすべて同じ開始 TTL を持っていることを意味しています。
4.1.5 署名満了、開始フィールド
SIG は 「署名開始」時間から「署名満了」時間まで有効です。両方とも、
グリニッジ時間の 1970 年 1 月 1 日からの符号なしの秒数 (閏秒は無
視)です (セクション 4.4 も参照のこと) 。繰り返しの計算の仕方は
DNS SOA シリアル番号 [RFC 1982] (これは過去や将来に渡り、約 68 年
以上であり得ないことを意味します) のものが使われます。このことは、
モジュロ演算の結果である 136.09 年が多義にとれることを意味します。
しかしながら、鍵は少なくとも 5年ごとに新しいランダム・キーに変更
されるよう要求される [RFC 2541] ので、セキュリティの欠陥はありま
せん。このことは、 N*136.09 年後に同じ鍵が使われている確率が、任
意の予想があたる確率に等しいであろうことを意味します。
SIG RR は、時間が 32 ビット境界に近いところにあり、また、署名が長
期間にわたって持続している場合には、開始時間より数量的に小さい満
了時間を持ってもいいことになっています。
(ゾーンの動的更新のためのネットワーク・リクエストのミスオーダーを
避けるために、署名開始時間の単調増加は必要かもしれません)
セキュアゾーンは、そのデータが更新されるときだけでなく新しい SIG
RR が挿入されるとき (ゾーンあるいは他の部分も再署名されます)、SOA
シリアル番号目的のための変更を考慮されなければなりません。
4.1.6 キー・タグフィールド
「キー・タグ」は 2 バイト量であり、適用可能であろう複数の鍵と、署
名が利用可能かチェックする計算上高価な仕事のために使用されようと
している公開鍵のチェックとの間の効果的な選択肢として利用されます。
[RFC 2537] で記述されているアルゴリズム 1 (MD5/RSA) については、
署名を複合するのに必要な公開鍵係数の底の隣から 2 バイトになります。
すなわち、ネットワークオーダー (ビッグエンディアン) においては、
係数の最下位 24 ビットの上位 16 ビットです。他の全てのプライベー
トアルゴリズムを含んだアルゴリズムについては、付録 C で記述されて
いる 単純な KEY RR のチェックサムとして計算されます。
4.1.7 署名者ネーム フィールド
「署名者ネーム」フィールドは、SIG RR を生成した署名者のドメインネー
ムです。これはパブリックな KEY RR の所有者名であり、署名を検証す
るのに使われます。それは、しばしば証明された RRset を含んだゾーン
です。どの署名者も署名のために証明されるはずであり、これは重大な
リゾルバポリシー問題としてセクション 6 で議論されています。ネット
ワークを通して転送される時は、署名者の名前は標準 DNS ネーム圧縮で
圧縮されます。
4.1.8 署名フィールド
SIG RR の実際の署名部分は、その所有者名およびクラスで「保護タイプ」
RR の RRset に他の RDATA フィールドを結びつけます。
data = RDATA | RR(s)... "|" は連結を表す
RDATA は SIG RR 自身 (署名者の名前の正規形を含む) 中の全て、しか
し署名を除いた RDATA フィールドの wire フォーマットです。
RR(s)とは、セクション 8 の中で定義されている正規形および順に、SIG
RR として同じ所有者名およびクラスで保護されていたタイプの RR(s)
の RRset です。
どのようにデータ・シーケンスが署名へと処理されるかはアルゴリズム
依存です。これらのアルゴリズム依存のフォーマットや手順は別のドキュ
メントに記述されています (セクション 3.2 )。
SIG は ANY, AXFR などといった任意の「メタタイプ」のゾーンに含まれ
るべきではありません (SHOULD NOT) (しかし、IXFR 関連についてはセ
クション 5.6.2 を参照)。
4.1.8.1 トランザクションおよびリクエスト SIG の計算
"security aware" なサーバからの応答メッセージは、トランザクション
を証明するために付加情報部の末尾に特別な SIG をオプション的に含め
ても構いません。
この SIG は 「タイプ保護」フィールドが 0 (有効な RR タイプではな
い) です。リプライ RR 数がトランザクション SIG の挿入により調整さ
れる前に、この応答をもたらした DNS 問い合わせメッセージ (問い合わ
せの DNS ヘッダとリクエスト SIG を含むが IP ヘッダを含まない) 全
体が結合された DNS 問い合わせメッセージ (DNS ヘッダを含むが、IP
ヘッダは含まない) 全体の "data" (セクション 4.1.8 を参照) を用い
て計算されます。
data = フルレスポンス (トランザクション SIG を除く) | フルクエリ
リクエストを行うリゾルバによるトランザクション SIG (ゾーン・キー
でなく、サーバのホスト・キーで署名されている) の検証は、通信中に
問い合わせや応答が干渉されていないこと、応答が意図した問い合わせ
に対応すること、また、応答が尋ねられたサーバーから来ていることを
示します。
DNS リクエストはオプション的に、問い合わせの末尾に一つ、もしくは
複数の SIG を含めて署名されても構いません。そのような SIG は、
「タイプ保護」フィールドに 0 を持つことで見分けられます。それらは、
リクエスト SIG の挿入によりリクエスト RR 数が調整される前に、先の
DNS リクエストメッセージ (DNS ヘッダを含むが、IP ヘッダは含まれな
い) または末尾のリクエスト SIG を署名します。
注意: リクエスト SIG は 更新 [RFC 2136, 2137] 以外で現在定義され
ているリクエストには必要なく、いくつかの古い DNS サーバへはエラー
リターンや問い合わせの無視といったことを引き起こします。しかし、
そのような SIG も将来他のリクエストのために必要になるでしょう。
更新証明や同様の優先されたリクエストが必要とされる場所を除いては、
サーバがリクエスト SIG をチェックすることは要求されていません。
4.2 応答の構造内における SIG RR
証明された RRset 毎に問い合わせを返す "security aware" な DNS サー
バ は、リクエストされた RRset を証明する有効な SIG RR を送信しよ
うと試みるべきです (SHOULD)。以下のルールが応答における SIG RR の
挿入に対し適用されます -
1. RRset が応答中にあるとき、その SIG RR は、含める必要があるか
もしれない付加 RR よりも挿入に対し高いプライオリティを持ちま
す。もしスペース的に挿入が許可されない場合は、下の 2 を除い
て応答が切り詰められることを考慮しなければなりません (MUST)。
2. SIG RR が付加情報部 RR のためにゾーンに現れたとき、応答を単
に切り詰めることを考えてはいけません (MUST NOT)。なぜなら、
スペース的に付加情報を伴った SIG RR の挿入は許可されないから
です。
3. 委譲ポイントにおけるサブゾーンのためのグルーレコード や NS
RR を証明する SIG は必要なく、送信されてもいけません (MUST
NOT)。
4. もし SIG が応答の回答部にある任意の RR を保護する場合、その
自動挿入は回答部内でなければなりません (MUST)。もしそれが権
威部に現れる RR を保護するのであれば、その自動挿入は権威部内
でなければなりません (MUST)。もし付加情報部内に現れる RR を
保護するのであれば、それは付加情報部内に現れなければなりませ
ん (MUST)。これは、権威部に NS と SOA RR のみを期待する現在
の標準 [RFC 1034, 1035] への変更です。
5. オプション的に、DNS トランザクションは応答の末尾における付加
情報部内の SIG RR によって証明されても構いません (セクション
4.1.8.1)。そのような SIG RR は応答の出もとである DNS サーバ
によって署名されます。署名者フィールドは出もとであるサーバホ
ストの名前でなければなりません (MUST) が、所有者名、クラス、
TTL や オリジナル TTL は無意味になります。クラス、 TTL フィー
ルドは 0 であるべきです (SHOULD)。スペースの節約のため、所有
者名は root ( 0 で埋められた 1 オクテット) であるべきです
(SHOULD)。もしトランザクション証明が望まれる場合、その SIG
RR は挿入に対して高いプライオリティを考慮されなければなりま
せん。
4.3 応答、SIG RR の処理
以下のルールが応答中に含まれた SIG RR の処理に適用されます -
1. "security aware" なサーバからセキュアなやりとりを経由して AD
ビット (セクション 6.1 を参照) がセットされた応答を受け取る
"security aware" なリゾルバは、ゾーン SIG RR 検証なしに受け
取った RR を受理するか選択しても構いません (MAY)。
2. その他の場合においては、"security aware" なリゾルバは関心の
ある RR の SIG RR を検証するべきです (SHOULD)。特にセキュリ
ティを実装していないサーバからの応答を受け取る場合には、SIG
や KEY RR のための追加問い合わせの発生を伴っても構いません。
(上の 2.3.5 で説明したように、セキュアでないリゾルバにより提
示される CNAME を保証することはできません。)
注: 実装者には上記の SHOULD(〜すべき) を MUST(〜ねばならない)
とすることが望まれます。しかし、ローカルポリシーやアプリケー
ションの呼び出しはセキュリティサービスを要求しません。
3. もし SIG RR が、SIG タイプを明示したユーザの問い合わせへの応
答において受け取られた場合には特別な処理は要求されません。
もしメッセージが完全性のチェックをパスしなかったり、SIG が 署名済
RR に対してチェックを行わない場合、SIG RR は無効であるか無視され
るべきです。もし RRset を証明したと主張する SIG RR の全てが無効で
あれば、RRset は証明されません。
もし SIG RR が応答中の付加情報部の末尾の RR であり、保護タイプが
0 である場合、それは応答、または応答の元になった問い合わせのトラ
ンザクション署名です。それはオプション的にチェックされてもよく
(MAY)、チェックが失敗した場合メッセージは廃棄されます。しかし、
チェックが成功したとしても、そのようなトランザクション証明 SIG は
メッセージ中の任意の RR を直接証明することはありません (NOT)。リ
ゾルバポリシー (セクション 6 を参照) に関連して、ゾーンにより署名
された適切な SIG RR 、あるいはゾーンまで権威をたどる鍵、あるいは
静的なリゾルバの設定によってのみ直接 RR を証明することが可能です。
もしリゾルバがトランザクション、リクエスト SIG を実装してない場合
は、それらをエラー無しに無視しなければなりません (MUST)。
もし全てのチェックが SIG RR が有効であると示す場合、それにより検
証された RR は証明されることを考慮するべきです。
4.4 署名の生存時間、満了、TTL、有効性
"security aware" サーバは SIG RR に対し、その署名開始以前もしくは
署名満了以後に何かを署名させようと考えてはいけません (MUST NOT)
(セクション 6 も参照のこと)。"security aware" なサーバは任意の RR
に対し、その全ての署名が満了になった後に証明されると考えてはいけ
ません (MUST NOT)。セキュアなサーバが証明されたデータをキャッシュ
している時に TTL が証明満了時間より以前に満了になっても、サーバは
キャッシュエントリ上の TTL を証明満了時間まで拡張しないように調節
すべきです (SHOULD)。これらの制約内にて、サーバは DNS TTL の老化
に従い続けるべきです。したがって、権威サーバはゾーンのリフレッシュ
や満了パラメータに従い続けるべきであり、非権威サーバは TTL を秒読
みするべきで、 TTL が (SIG がまだその証明満了時間に到達していなく
とも) 0 になったときには RR を廃棄すべきです。付け加えると、RR が
問い合わせ応答中を転送されるとき、TTL は 現在の時間との和が証明満
了時間を越えないように調節されるべきです。このように、一般的には
転送される RR 上の TTL はこうなります。
min(authExpTim,max(zoneMinTTL,min(originalTTL,currentTTL)))
署名が生成される時、署名満了時間は古いものが満了する前に新しい署
名が生成されることが明確であるよう十分先にセットすべきです。しか
し、あまりにも先に長すぎる満了時間を設定することは、不適格なデー
タや生成された署名を消し去るのに長い時間がかかることを意味します。
署名生存時間は、合理的な最大再署名期間より小さくなく、ゾーンの満
了時間よりも小さくない、 TTL の小さな倍数 (ie, TTL の 4 〜 16 倍)
であることが推奨されます。
5. 存在しない名前とタイプ
上のセクション 4 で述べられた SIG RR の機構は、ゾーンに存在する
RR の強い証明を提供します。しかし、上述のゾーン中の名前もしくは、
存在する名前へのタイプの検証を通して拒否する方法を明確にしません。
ゾーンに存在しない名前は、存在しない名前を含む "name interval" の
ための NXT ("next") RR によって示されます。NXT RR や RR やそれら
の SIG は、もしサーバが "security aware" であれば、エラーを伴って
権威部に返されます。NXT を伴う空の回答部以外にエラー表示がないこ
とを除けば、存在する名前下の非存在タイプについても同じことが言え
ます。これは、権威部に NS と SOA RR のみを期待している現在の標準
[RFC 1034/1035] への変更です。 NXT RR は、NXT タイプを明示的に促
す問い合わせにも返されます。
ゾーン中の NXT レコードの完全なセットの存在は、もし問い合わせが委
譲ポイント NS や グルー A もしくは AAAA RR でなければ、ゾーンを提
供している "security aware" なサーバへの名前やタイプへの問い合わ
せが、少なくとも一つの署名された RR を含むリプライに帰着すること
を意味します。
5.1 NXT リソースレコード
NXT リソースレコードは、一定の name interval 中の所有者名を持つ
RR がゾーンに存在しないことをセキュア的に示したり、どの RR タイプ
が既存の名前のために存在するかを示すのに使われます。
NXT RR の所有者名は、ゾーンに存在する名前です。その RDATA は、
「次」の名前とタイプビットマップです。このように、ゾーンの NXT RR
は、そのゾーン (展開されていないワイルドカードを含むが、他の方法
で挿入されてなければグルーアドレスレコードの所有者名を省略してい
る) の文字上の所有者名の全ての連鎖を作りだします。これは、セクショ
ン 8 で述べられている、ゾーンの全てのドメインネームの正規化された
順番を暗示しています。NXT RR の存在は、その所有者名とその RDATA
エリア中の名前の間に名前が存在せず、他のタイプがその所有者名の下
に存在しないことを意味します。
ゾーンの最後の NXT に伴う潜在的な問題として、正規順の最後の既存名
である所有者名を持ちたいが (これは簡単なことだが)、全体の名前空間
の残りを示すために RDATA にどの名前を入れればいいか明白でない、と
いうことがあります。これについては、名前空間を循環的なものとみな
し、ゾーン・ネームを最後の NXT の RDATA に入れることで解決されて
います。
ゾーンの NXT RR は、自動的に計算され、SIG が追加される時は自動的
ゾーンに追加されるべきです (SHOULD)。NXT RR の TTL は、ゾーンの最
小 TTL を越えないべきです (SHOULD)。
NXT RR のタイプ番号は 30 です。
NXT RR は、ゾーンレベル・キーによってのみ署名されます。
5.2 NXT RDATA フォーマット
NXT 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| next domain name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type bit map /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
NXT RR タイプビットマップのフォーマットの現在の定義は、所有者名に
対し現れる RR タイプにつき 1 ビットです。一つのビットは、その所有
者名に対し少なくとも一つのそのタイプの RR が存在することを示して
います。 0 はそのような RR がないことを示します。ビットマップの境
界を越えているので指定されない全てのビットは 0 と見なされます。
NXT のビット 30 は、最小のビットマップ長が実際は 4 オクテットであ
るため、常に on であることを注意してください。このフォーマットに
おいて 0 オクテットをひきずるのは禁止されています。最初のビットは
RR タイプ 0 (存在できない不適格なタイプ) を表し、したがってこの
フォーマットにおいては 0 になります。このフォーマットは、127 より
大きいタイプ番号を持つ RR が存在する場合には使われません。もし、
タイプビットマップの 0 ビット目が 1 であれば、タイプ番号が 127 よ
り大きいものが現れれば、常にそのケースとねる異なるフォーマットが
使われていることを示します。
ドメインネームはネットワーク上を転送されているときは、標準 DNS ネー
ム圧縮により圧縮されています。ビットマップのサイズは、RDLENGTH か
次のドメインネームの長さにより推測され得ます。
5.3 ワイルドカードによる複雑さの増加
存在しない名前の応答が正しい、もしくはワイルドカードの展開の応答
が正しいことの証明は、物事を少し複雑にさせます。
とくに、存在しない名前の応答が返って来たとき、NXT は問い合わされ
た正確な名前が存在しなかったことを示しつつ返されるはずであり、一
般的に、NXT が必要とする一つもしくは複数の付加情報が、展開が返っ
てくるべきであるワイルドカードがないことを証明するためにも返され
ます。(同じ NXT の複数のコピーが返される必要はありません。) これ
らの NXT は、もしあれば、応答の権威部に返されます。
さらに、もしワイルドカードの展開が応答中に返された場合、一般的に
一つもしくは複数の NXT が、(ゾーンにおける可能なかぎりの特定のワ
イルドカードを含む) 応答に基づいて特定の名前がもはや存在しないこ
とを証明するために権威部に返される必要があります。
5.4 例
ゾーン foo.nil が
big.foo.nil,
medium.foo.nil.
small.foo.nil.
tiny.foo.nil.
といったエントリを持っていると仮定します。
それから、"security aware" サーバへの huge.foo.nil に対する問い合
わせが RCODE of DOMAIN を伴うエラーリプライや以下のような何かを含
んでいる権威部データが返されたとします。
foo.nil. NXT big.foo.nil NS KEY SOA NXT ;prove no *.foo.nil
foo.nil. SIG NXT 1 2 ( ;type-cov=NXT, alg=1, labels=2
19970102030405 ;signature expiration
19961211100908 ;signature inception
2143 ;key identifier
foo.nil. ;signer
AIYADP8d3zYNyQwW2EM4wXVFdslEJcUx/fxkfBeH1El4ixPFhpfHFElxbvKoWmvjDTCm
fiYy2X+8XpFjwICHc398kzWsTMKlxovpz2FnCTM= ;signature (640 bits)
)
big.foo.nil. NXT medium.foo.nil. A MX SIG NXT ;prove no huge.foo.nil
big.foo.nil. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3
19970102030405 ;signature expiration
19961211100908 ;signature inception
2143 ;key identifier
foo.nil. ;signer
MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU
1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits)
)
big.foo.nil がゾーンにおいて既存名であり、このように NXT よりも他
の RR タイプに関連していることをこの応答が示唆していることに注意
してください。しかし、NXT (とその SIG) RR のみが、この
huge.foo.nil (存在しない名前) への問い合わせの応答中に現れます。
5.5 委譲ポイントにおける特別な考慮点
ゾーンの頭の名前 (root 以外) はスーパーゾーンの葉ノードとしても現
れます。両方ともセキュアであれば、常に同じ名前を持った二つの異な
る NXT RR があるでしょう。それらは、それらの署名者や、次のドメイ
ンネームフィールドや、SOA タイプビットの存在などにより簡単に識別
できます。もし利用可能であれば、明示的な NXT タイプへの問い合わせ
において、"security aware" サーバは名前の非存在と両方の NXT の証
明を要求されたときには自動的に正しい NXT を返すべきです。
"Non-security aware" なサーバは NXT を自動的に返すことは決してな
いですし、いくつかの古い実装は明示的な問い合わせにおいてはサブゾー
ンから NXT のみを返すかもしれません。
5.6 ゾーン転送
下のサブセクションは、如何に完全およびは増分ゾーン転送が保証され
るかを述べています。
SIG RR は、完全、増分 [RFC 1995] ゾーン転送の両方により転送される
全ての権威 RR を保証します。NXT RR はセキュアゾーン転送になくては
ならない要素であり、各権威ネームやタイプが存在するであろうと仮定
しています - しかし、もし同じ名前やタイプ保護を伴った複数の SIG
がある場合、一つでも存在さえすれば SIG のサブセットが送られ、署名
されていない委譲ポイント NS や グルー A もしくは AAAA RR の場合は、
これらのサブセットか、あるいは少なくともどれか一つのタイプが含ま
れていれば単に修正済のセット送られます。
サーバのゾーンコピーよりも新しいバージョン番号か同じものを伴った
増分もしくは完全ゾーン転送リクエストを受け取ったときは、そのサー
バの現在のバージョンの SOA RR と その SOA RR を検証している SIG
RRset のみを伴ってリプライされます。
このドキュメントで記述されている完全な NXT 連鎖は、NXT によって繋
がれる連続的な問い合わせにより、ゾーン転送が禁止されていようとも
リゾルバにゾーン中の全ての名前を得させることを可能にします。異な
る NXT フォーマットが将来、これを避けるために明記されるかもしれま
せん。
5.6.1 完全ゾーン転送
完全な転送が生じることにおいてサーバ証明を提供するために、トラン
ザクション証明は完全ゾーン転送において使用されるべきです (SHOULD)。
これは転送中のゾーン全体の保護に基づいた強いサーバをもたらします。
5.6.2 増分ゾーン転送
増分転送 (IXFR) [RFC 1995] 中の個々の RR は完全ゾーン転送と同じ方
法をもって検証され、増分 RR が削除もしくは追加した後に、NXT ネー
ムの連鎖の完全性やゾーンに対する NXT タイプビットの正当性が更新さ
れたゾーンの各々のばらばらなエリアをチェックすることができます。
しかし、通常削除された RR 部も追加された RR 部も完全なゾーン NXT
連鎖を持たないので、増分転送の完全性を確認できません。結果として、
IXFR の安全性をサポートするサーバは、それが維持をする各増分転送セッ
トのための IXFR SIG RR を扱わなければなりません。
IXFR SIG は、転送順に - 古い SOA の次に RR が削除され、それから新
しい SOA と RR が追加される - RR の 増分ゾーン更新のコレクション
によって計算されます。各セクション内において、 RR は セクション 8
で記述されるよう規則正しくなければなりません。もし、隣接した増分
更新セットの凝縮がゾーン所有者によって行われた場合、その凝縮に含
まれる各セットのオリジナル IXFR SIG は廃棄され、結果を保護するた
めに計算された 新しい IXFR SIG がセットを凝縮します。
全体として、IXFR SIG は実際にはゾーン・ネームではなく、ゾーンに属
しています。しかしながら、ゾーン・ネームには正しくあるべき
(SHOULD) ですが、そうでなければ IXFR SIG のラベルフィールドは無意
味です。IXFR SIG は単に増分ゾーン転送の一部として送られます。IXFR
SIG の確認後、転送された RR は、サーバにおいてそのような信頼性が
ローカルポリシーと一致する場合は内部 SIG の検証なしに有効とみなし
ても構いません (MAY)。
6. 安全な解決方法と AD, CD ビット
ドメインネームシステム (DNS) からのセキュアなデータの検索や解決は、
リゾルバにおいて静的に設定された一つ以上の信頼された公開鍵による
開始を引き起こします。開始する信頼された鍵をもって、進んで暗号化
を実行するリゾルバは、セクション 6.3 で述べられるような関心をもつ
ゾーンへのセキュアな DNS 構造を安全に突き進んでいくことができます。
そのような信頼された公開鍵は通常、セクション 6.2 で述べられる方法
に近いやり方で設定されます。しかし実際問題として、"security
aware" なリゾルバは、もしそれが鍵で設定されていないが静的に設定さ
れたかのようにローカルの well-known なサーバから得たものを信頼す
る場合においてでさえも、返される結果の秘匿性にはまだ有利です。
"security aware" なサーバに格納されるデータは、内部で
「Authenticated (証明済)」、「Pending (保留)」、「Insecure (非セ
キュア)」に分類される必要があります。また、データに対して全ての
SIG チェックがはっきりと失敗したことを示す、4 つ目の一時的な「Bad
(悪い)」状態が存在します。そのような "Bad" データは "security
aware" なサーバでは保持されません。証明された、ということは、静的
にリゾルバにて設定されたキーへのポリシーにより認可された 0個 また
はたくさんの SIG や KEY RR の連鎖を通して追跡可能であるキーのもと
でデータが有効であることを示します。保留中のデータは、証明された
SIG は持っておらず、リゾルバが今だ証明しようとしている付加 SIG は
少なくとも一つ持っています。安全でないデータとは、証明されていな
い、もしくはそれが見つかったゾーンにて "Bad" データであることが
決して指摘されないとわかっているデータのことです。なぜなら、それ
は安全でないゾーンにあったか、そこからやってきたからであり、もし
くは、署名されていない glue アドレスか委譲ポイント NS データであ
るからです。そのようなデータラベルの操作や、それに基づいたフラグ
の操作に関する振る舞いは、セクション 6.1 で述べられています。
署名の適切な確認は、セクション 6.4 で述べられているようなリゾルバ
とサーバ間の絶対時間の評価を共有した合理的な安全性を必要とします。
6.1 AD, CD ヘッダビット
2つの前もって未使用としていたビットが、DNS 問い合わせ/応答フォー
マットヘッダの外に割り当てられています。応答における AD (確実なデー
タ) ビットは、回答にふくまれるデータと応答の権威部のすべてがその
サーバのポリシーにより証明されたことを示しています。問い合わせに
おける CD (チェック無効) ビットは、その問い合わせを送ったリゾルバ
に対して "Pending" (未証明) データが受容されることを示します。
これらのビットは以下のように、前もって 0 としてある Z フィールド
から割り当てられています。
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
これらのビットは古いサーバやリゾルバでは 0 です。したがって、
"security aware" なリゾルバへの古いサーバの応答は証明されたという
フラギングがされず、"non-security aware" なリゾルバからの問い合わ
せはチェック無効ビットを主張しません。それは "Authenticated" もし
くは "Insecure" データのみを持つ "security aware" なサーバにより
答えられるでしょう。 "security aware" なリゾルバは、もしそれが話
しかけているサーバを信頼していないか、セキュアパスを持っているか
DNS トランザクションセキュリティを利用しているのでもなければ、AD
ビットを信頼してはなりません (MUST NOT)。
暗号化を進んで行うあらゆる "security aware" なリゾルバは、すべて
の問い合わせにてそれ自身のポリシーをそれに強いることを許可させる
ため、また "security aware" なサーバに "Pending" データを回答する
ことを許すことにより DNS 潜伏時間を減らすため、CD ビットを主張す
るべき (SHOULD) です。
"security aware" なサーバは "Bad" データを返してはいけません (MUST
NOT)。CD ビットクリア状態にてサービスをリクエストする "non-security
aware" なリゾルバもしくは "security aware" なリゾルバにおいて、
"security aware" なサーバは、回答中にて "Authenticated" か
"Insecure" データのみを、応答中にて AD ビットがセットされた権威部
を返さなければなりません (MUST)。 "security aware" なサーバは、
(応答の AD ビットをクリアして ) "Pending" データをリクエスト中の
CD ビットを主張してこのサービスにリクエストしてきた "security
aware" なサーバに返すべき (SHOULD) です。もしすべての回答中の RR
や応答中の権威部が "Authenticated" か "Insecure" のどちらかでなけ
れば、AD ビットは応答にてセットされてはなりません (MUST)。
6.2 静的設定キー
ゾーンを証明する公開鍵は、ゾーンが証明されうるために、プライマリ
サーバにて読み込まれる前にローカル設定ファイルにて定義されている
べきです (SHOULD)。
root ゾーンに関連した公開鍵でスタートすることや、各リゾルバにてこ
れを静的に設定しておくことは一見論理的に見えますが、これには問題
があります。世界中のすべての DNS リゾルバが常にキーを変更する更新
ロジスティックは極めてシビアです。さらに、多くの組織が彼らの所有
する DNS サーバだけを完全に信頼するための「内部」DNS 実装を明示的
に望むことでしょう。そのような組織の内部リゾルバは、組織ドメイン
外のデータへアクセスするために組織のゾーンサーバを通り抜けること
ができ、組織の頂点の DNS にキーを設定する必要がありません。
比較的大きな組織の一部でないホストリゾルバは、彼らのローカル ISP
(彼らがその ISP のリカーシブセキュア DNS キャッシュサーバを使って
いる) ドメインのためにキーを設定するかもしれません。
6.3 DNS を通した連鎖
任意のゾーンに対し 1 つ以上の信頼されたキーで開始するにおいて、そ
のゾーンのキーを持つサブゾーンに対し署名されたキーを受け取ること
が可能です。セキュアなサブゾーンは、サブゾーン中の NS RR と共に現
われるヌルでないキー情報を持つ KEY RR (親にも現われるかもしれない)
によって示されます。これらはゾーンツリー内を下っていくことを可能
にします。
6.3.1 KEY を通した連鎖
一般に、あなたがセキュア DNS において有効にしたい RRset は、1 つ
以上の SIG RR により署名されるでしょう。これらの SIG RR の各々は、
そのネームが SIG を証明するのに使われる格納された公開鍵であること
を下にそれぞれ署名者を持ちます。それらの KEY の一つ一つもまた、一
般的に、SIG で署名されるでしょう。そして、それらの SIG は KEY へ
も参照している署名者ネームを持つでしょう。... 結果として証明は、
信頼性が明らかな元データや証明を実装しているリゾルバにおいて静的
に設定されたいくつかの信頼されたキーとなる最後の KEY を署名する最
初の SIG を伴ったあらゆる SIG や KEY RR の連鎖をもたらします。
そのような連鎖のテストの際に、遭遇した SIG の有効期限がデータの証
明有効期限を決定するために遮られなければなりません (純粋なアルゴ
リズム処理)。付け加えると、KEY への参照を伴ったデータを越える各
SIG の有効性検証は
6.4 安全な時間
SIG RR 中の時間フィールドの調整された解釈は、DNS セキュリティ拡張
が実装されたホストに対し合理的に矛盾しない時間が利用可能であるこ
とを必要とします。
Network Time Protocol (NTP [RFC 1305, 2030]) を含む、様々な時刻同
期プロトコルが存在します。そのようなプロトコルが使用されている場
合、時間が改ざんされないよう安全的に利用されなければならなりませ
ん (MUST)。
さもなければ、例えば、ホストが戻って来た時刻を得、かつては有効で
あったが今ではそうではない古い SIG RR (やそれらにより証明されたデー
タ) を信じることになります。
7. ASCII Representation of Security RRs
This section discusses the format for master file and other ASCII
presentation of the three DNS security resource records.
The algorithm field in KEY and SIG RRs can be represented as either
an unsigned integer or symbolicly. The following initial symbols are
defined as indicated:
Value Symbol
001 RSAMD5
002 DH
003 DSA
004 ECC
252 INDIRECT
253 PRIVATEDNS
254 PRIVATEOID
7.1 Presentation of KEY RRs
KEY RRs may appear as single logical lines in a zone data master file
[RFC 1033].
The flag field is represented as an unsigned integer or a sequence of
mnemonics as follows separated by instances of the verticle bar ("|")
character:
BIT Mnemonic Explanation
0-1 key type
NOCONF =1 confidentiality use prohibited
NOAUTH =2 authentication use prohibited
NOKEY =3 no key present
2 FLAG2 - reserved
3 EXTEND flags extension
4 FLAG4 - reserved
5 FLAG5 - reserved
6-7 name type
USER =0 (default, may be omitted)
ZONE =1
HOST =2 (host or other end entity)
NTYP3 - reserved
8 FLAG8 - reserved
9 FLAG9 - reserved
10 FLAG10 - reserved
11 FLAG11 - reserved
12-15 signatory field, values 0 to 15
can be represented by SIG0, SIG1, ... SIG15
No flag mnemonic need be present if the bit or field it represents is
zero.
The protocol octet can be represented as either an unsigned integer
or symbolicly. The following initial symbols are defined:
000 NONE
001 TLS
002 EMAIL
003 DNSSEC
004 IPSEC
255 ALL
Note that if the type flags field has the NOKEY value, nothing
appears after the algorithm octet.
The remaining public key portion is represented in base 64 (see
Appendix A) and may be divided up into any number of white space
separated substrings, down to single base 64 digits, which are
concatenated to obtain the full signature. These substrings can span
lines using the standard parenthesis.
Note that the public key may have internal sub-fields but these do
not appear in the master file representation. For example, with
algorithm 1 there is a public exponent size, then a public exponent,
and then a modulus. With algorithm 254, there will be an OID size,
an OID, and algorithm dependent information. But in both cases only a
single logical base 64 string will appear in the master file.
7.2 Presentation of SIG RRs
A data SIG RR may be represented as a single logical line in a zone
data file [RFC 1033] but there are some special considerations as
described below. (It does not make sense to include a transaction or
request authenticating SIG RR in a file as they are a transient
authentication that covers data including an ephemeral transaction
number and so must be calculated in real time.)
There is no particular problem with the signer, covered type, and
times. The time fields appears in the form YYYYMMDDHHMMSS where YYYY
is the year, the first MM is the month number (01-12), DD is the day
of the month (01-31), HH is the hour in 24 hours notation (00-23),
the second MM is the minute (00-59), and SS is the second (00-59).
The original TTL field appears as an unsigned integer.
If the original TTL, which applies to the type signed, is the same as
the TTL of the SIG RR itself, it may be omitted. The date field
which follows it is larger than the maximum possible TTL so there is
no ambiguity.
The "labels" field appears as an unsigned integer.
The key tag appears as an unsigned number.
However, the signature itself can be very long. It is the last data
field and is represented in base 64 (see Appendix A) and may be
divided up into any number of white space separated substrings, down
to single base 64 digits, which are concatenated to obtain the full
signature. These substrings can be split between lines using the
standard parenthesis.
7.3 Presentation of NXT RRs
NXT RRs do not appear in original unsigned zone master files since
they should be derived from the zone as it is being signed. If a
signed file with NXTs added is printed or NXTs are printed by
debugging code, they appear as the next domain name followed by the
RR type present bits as an unsigned interger or sequence of RR
mnemonics.
8. リソースレコードの正規形と正規順
このセクションは、ドメインネームシステム (DNS) のセキュリティ目的
のために、リソースレコードの正規形やそれらの名前の順番、全体にわ
たる順番を明記します。正規名前順は NXT 名前連鎖の構築に必要です。
RRset 内の正規形や順番は、矛盾のない SIG RR の構築や検証に必要で
す。名前におけるタイプの正規順は増分転送を伴う接続に要求されます
(セクション 5.6.2)。
8.1 正規リソースレコード形
DNS セキュリティの目的として、RR としての正規形は ドメインネーム
をともなった wire フォーマットであり、
(1) 完全に展開されている (ポインタ経由の名前圧縮はなし)
(2) 全てのドメインネームは小文字にセット
(3) マスタファイル形式中の所有者名ワイルドカード(* の代用品は作ら
れていない)
(4) オリジナル TTL が現在の TTL の代わりをしている
8.2 正規 DNS ネーム順
DNS セキュリティの目的として、所有者名の正規順は、ゼロ値のオクテッ
トや大文字が小文字として扱われる前にオクテットの欠如がソートする
ところにおいて、符号なしの左揃えオクテット文字列として個々のラベ
ルをソートすることです。ゾーンの名前は、最も高いレベルのラベルを
ソートすることによりソートされます。それから、同じレベルをもつ同
志で次のレベルのラベルといった感じで末端ノードラベルにわたってソー
トされていきます。ゾーン内ではゾーンネーム自身は常に存在し、他の
全ての名前は低レベルラベルのプレフィックスを伴うゾーンネームにな
ります。したがって、ゾーンネーム自身は常に一番目にソートされます。
例:
foo.example
a.foo.example
yljkjljk.a.foo.example
Z.a.foo.example
zABC.a.FOO.EXAMPLE
z.foo.example
*.z.foo.example
\200.z.foo.example
8.3 RRset 内の 正規リソースレコード順
任意の特定の所有者名とタイプ内で、RR はゼロオクテットの前にオクテッ
トの欠如がソートするところで、左揃えされた符号なしオクテットシー
ケンスとしてソートされます。
8.4 Canonical Ordering of RR Types
When RRs of the same name but different types must be ordered, they
are ordered by type, considering the type to be an unsigned integer,
except that SIG RRs are placed immediately after the type they cover.
Thus, for example, an A record would be put before an MX record
because A is type 1 and MX is type 15 but if both were signed, the
order would be A < SIG(A) < MX < SIG(MX).
9. Conformance
Levels of server and resolver conformance are defined below.
9.1 Server Conformance
Two levels of server conformance for DNS security are defined as
follows:
BASIC: Basic server compliance is the ability to store and retrieve
(including zone transfer) SIG, KEY, and NXT RRs. Any secondary or
caching server for a secure zone MUST have at least basic compliance
and even then some things, such as secure CNAMEs, will not work
without full compliance.
FULL: Full server compliance adds the following to basic compliance:
(1) ability to read SIG, KEY, and NXT RRs in zone files and (2)
ability, given a zone file and private key, to add appropriate SIG
and NXT RRs, possibly via a separate application, (3) proper
automatic inclusion of SIG, KEY, and NXT RRs in responses, (4)
suppression of CNAME following on retrieval of the security type RRs,
(5) recognize the CD query header bit and set the AD query header
bit, as appropriate, and (6) proper handling of the two NXT RRs at
delegation points. Primary servers for secure zones MUST be fully
compliant and for complete secure operation, all secondary, caching,
and other servers handling the zone SHOULD be fully compliant as
well.
9.2 Resolver Conformance
Two levels of resolver compliance (including the resolver portion of
a server) are defined for DNS Security:
BASIC: A basic compliance resolver can handle SIG, KEY, and NXT RRs
when they are explicitly requested.
FULL: A fully compliant resolver (1) understands KEY, SIG, and NXT
RRs including verification of SIGs at least for the mandatory
algorithm, (2) maintains appropriate information in its local caches
and database to indicate which RRs have been authenticated and to
what extent they have been authenticated, (3) performs additional
queries as necessary to attempt to obtain KEY, SIG, or NXT RRs when
needed, (4) normally sets the CD query header bit on its queries.
10. Security Considerations
This document specifies extensions to the Domain Name System (DNS)
protocol to provide data integrity and data origin authentication,
public key distribution, and optional transaction and request
security.
It should be noted that, at most, these extensions guarantee the
validity of resource records, including KEY resource records,
retrieved from the DNS. They do not magically solve other security
problems. For example, using secure DNS you can have high confidence
in the IP address you retrieve for a host name; however, this does
not stop someone for substituting an unauthorized host at that
address or capturing packets sent to that address and falsely
responding with packets apparently from that address. Any reasonably
complete security system will require the protection of many
additional facets of the Internet beyond DNS.
The implementation of NXT RRs as described herein enables a resolver
to determine all the names in a zone even if zone transfers are
prohibited (section 5.6). This is an active area of work and may
change.
A number of precautions in DNS implementation have evolved over the
years to harden the insecure DNS against spoofing. These precautions
should not be abandoned but should be considered to provide
additional protection in case of key compromise in secure DNS.
11. IANA Considerations
KEY RR flag bits 2 and 8-11 and all flag extension field bits can be
assigned by IETF consensus as defined in RFC 2434. The remaining
values of the NAMTYP flag field and flag bits 4 and 5 (which could
conceivably become an extension of the NAMTYP field) can only be
assigned by an IETF Standards Action [RFC 2434].
Algorithm numbers 5 through 251 are available for assignment should
sufficient reason arise. However, the designation of a new algorithm
could have a major impact on interoperability and requires an IETF
Standards Action [RFC 2434]. The existence of the private algorithm
types 253 and 254 should satify most needs for private or proprietary
algorithms.
Additional values of the Protocol Octet (5-254) can be assigned by
IETF Consensus [RFC 2434].
The meaning of the first bit of the NXT RR "type bit map" being a one
can only be assigned by a standards action.
References
[RFC 1033] Lottor, M., "Domain Administrators Operations Guide", RFC
1033, November 1987.
[RFC 1034] Mockapetris, P., "Domain Names - Concepts and
Facilities", STD 13, RFC 1034, November 1987.
[RFC 1035] Mockapetris, P., "Domain Names - Implementation and
Specifications", STD 13, RFC 1035, November 1987.
[RFC 1305] Mills, D., "Network Time Protocol (v3)", RFC 1305, March
1992.
[RFC 1530] Malamud, C. and M. Rose, "Principles of Operation for the
TPC.INT Subdomain: General Principles and Policy", RFC
1530, October 1993.
[RFC 2401] Kent, S. and R. Atkinson, "Security Architecture for the
Internet Protocol", RFC 2401, November 1998.
[RFC 1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC
1982, September 1996.
[RFC 1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995,
August 1996.
[RFC 2030] Mills, D., "Simple Network Time Protocol (SNTP) Version 4
for IPv4, IPv6 and OSI", RFC 2030, October 1996.
[RFC 2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, November 1996.
[RFC 2065] Eastlake, D. and C. Kaufman, "Domain Name System Security
Extensions", RFC 2065, January 1997.
[RFC 2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC 2136] Vixie, P., Thomson, S., Rekhter, Y. and J. Bound,
"Dynamic Updates in the Domain Name System (DNS UPDATE)",
RFC 2136, April 1997.
[RFC 2137] Eastlake, D., "Secure Domain Name System Dynamic Update",
RFC 2137, April 1997.
[RFC 2181] Elz, R. and R. Bush, "Clarifications to the DNS
Specification", RFC 2181, July 1997.
[RFC 2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998.
[RFC 2537] Eastlake, D., "RSA/MD5 KEYs and SIGs in the Domain Name
System (DNS)", RFC 2537, March 1999.
[RFC 2539] Eastlake, D., "Storage of Diffie-Hellman Keys in the
Domain Name System (DNS)", RFC 2539, March 1999.
[RFC 2536] Eastlake, D., "DSA KEYs and SIGs in the Domain Name
System (DNS)", RFC 2536, March 1999.
[RFC 2538] Eastlake, D. and O. Gudmundsson, "Storing Certificates in
the Domain Name System", RFC 2538, March 1999.
[RFC 2541] Eastlake, D., "DNS Operational Security Considerations",
RFC 2541, March 1999.
[RSA FAQ] - RSADSI Frequently Asked Questions periodic posting.
Author's Address
Donald E. Eastlake 3rd
IBM
65 Shindegan Hill Road
RR #1
Carmel, NY 10512
Phone: +1-914-784-7913 (w)
+1-914-276-2668 (h)
Fax: +1-914-784-3833 (w-fax)
EMail: dee3@us.ibm.com
Appendix A: Base 64 Encoding
The following encoding technique is taken from [RFC 2045] by N.
Borenstein and N. Freed. It is reproduced here in an edited form for
convenience.
A 65-character subset of US-ASCII is used, enabling 6 bits to be
represented per printable character. (The extra 65th character, "=",
is used to signify a special processing function.)
The encoding process represents 24-bit groups of input bits as output
strings of 4 encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating 3 8-bit input groups.
These 24 bits are then treated as 4 concatenated 6-bit groups, each
of which is translated into a single digit in the base 64 alphabet.
Each 6-bit group is used as an index into an array of 64 printable
characters. The character referenced by the index is placed in the
output string.
Table 1: The Base 64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
Special processing is performed if fewer than 24 bits are available
at the end of the data being encoded. A full encoding quantum is
always completed at the end of a quantity. When fewer than 24 input
bits are available in an input group, zero bits are added (on the
right) to form an integral number of 6-bit groups. Padding at the
end of the data is performed using the '=' character. Since all base
64 input is an integral number of octets, only the following cases
can arise: (1) the final quantum of encoding input is an integral
multiple of 24 bits; here, the final unit of encoded output will be
an integral multiple of 4 characters with no "=" padding, (2) the
final quantum of encoding input is exactly 8 bits; here, the final
unit of encoded output will be two characters followed by two "="
padding characters, or (3) the final quantum of encoding input is
exactly 16 bits; here, the final unit of encoded output will be three
characters followed by one "=" padding character.
Appendix B: Changes from RFC 2065
This section summarizes the most important changes that have been
made since RFC 2065.
1. Most of Section 7 of [RFC 2065] called "Operational
Considerations", has been removed and may be made into a separate
document [RFC 2541].
2. The KEY RR has been changed by (2a) eliminating the "experimental"
flag as unnecessary, (2b) reserving a flag bit for flags
expansion, (2c) more compactly encoding a number of bit fields in
such a way as to leave unchanged bits actually used by the limited
code currently deployed, (2d) eliminating the IPSEC and email flag
bits which are replaced by values of the protocol field and adding
a protocol field value for DNS security itself, (2e) adding
material to indicate that zone KEY RRs occur only at delegation
points, and (2f) removing the description of the RSA/MD5 algorithm
to a separate document [RFC 2537]. Section 3.4 describing the
meaning of various combinations of "no-key" and key present KEY
RRs has been added and the secure / unsecure status of a zone has
been clarified as being per algorithm.
3. The SIG RR has been changed by (3a) renaming the "time signed"
field to be the "signature inception" field, (3b) clarifying that
signature expiration and inception use serial number ring
arithmetic, (3c) changing the definition of the key footprint/tag
for algorithms other than 1 and adding Appendix C to specify its
calculation. In addition, the SIG covering type AXFR has been
eliminated while one covering IXFR [RFC 1995] has been added (see
section 5.6).
4. Algorithm 3, the DSA algorithm, is now designated as the mandatory
to implement algorithm. Algorithm 1, the RSA/MD5 algorithm, is
now a recommended option. Algorithm 2 and 4 are designated as the
Diffie-Hellman key and elliptic cryptography algorithms
respectively, all to be defined in separate documents. Algorithm
code point 252 is designated to indicate "indirect" keys, to be
defined in a separate document, where the actual key is elsewhere.
Both the KEY and SIG RR definitions have been simplified by
eliminating the "null" algorithm 253 as defined in [RFC 2065].
That algorithm had been included because at the time it was
thought it might be useful in DNS dynamic update [RFC 2136]. It
was in fact not so used and it is dropped to simplify DNS
security. Howver, that algorithm number has been re-used to
indicate private algorithms where a domain name specifies the
algorithm.
5. The NXT RR has been changed so that (5a) the NXT RRs in a zone
cover all names, including wildcards as literal names without
expansion, except for glue address records whose names would not
otherwise appear, (5b) all NXT bit map areas whose first octet has
bit zero set have been reserved for future definition, (5c) the
number of and circumstances under which an NXT must be returned in
connection with wildcard names has been extended, and (5d) in
connection with the bit map, references to the WKS RR have been
removed and verticle bars ("|") have been added between the RR
type mnemonics in the ASCII representation.
6. Information on the canonical form and ordering of RRs has been
moved into a separate Section 8.
7. A subsection covering incremental and full zone transfer has been
added in Section 5.
8. Concerning DNS chaining: Further specification and policy
recommendations on secure resolution have been added, primarily in
Section 6.3.1. It is now clearly stated that authenticated data
has a validity period of the intersection of the validity periods
of the SIG RRs in its authentication chain. The requirement to
staticly configure a superzone's key signed by a zone in all of
the zone's authoritative servers has been removed. The
recommendation to continue DNS security checks in a secure island
of DNS data that is separated from other parts of the DNS tree by
insecure zones and does not contain a zone for which a key has
been staticly configured was dropped.
9. It was clarified that the presence of the AD bit in a response
does not apply to the additional information section or to glue
address or delegation point NS RRs. The AD bit only indicates
that the answer and authority sections of the response are
authoritative.
10. It is now required that KEY RRs and NXT RRs be signed only with
zone-level keys.
11. Add IANA Considerations section and references to RFC 2434.
Appendix C: Key Tag Calculation
The key tag field in the SIG RR is just a means of more efficiently
selecting the correct KEY RR to use when there is more than one KEY
RR candidate available, for example, in verifying a signature. It is
possible for more than one candidate key to have the same tag, in
which case each must be tried until one works or all fail. The
following reference implementation of how to calculate the Key Tag,
for all algorithms other than algorithm 1, is in ANSI C. It is coded
for clarity, not efficiency. (See section 4.1.6 for how to determine
the Key Tag of an algorithm 1 key.)
/* assumes int is at least 16 bits
first byte of the key tag is the most significant byte of return
value
second byte of the key tag is the least significant byte of
return value
*/
int keytag (
unsigned char key[], /* the RDATA part of the KEY RR */
unsigned int keysize, /* the RDLENGTH */
)
{
long int ac; /* assumed to be 32 bits or larger */
for ( ac = 0, i = 0; i < keysize; ++i )
ac += (i&1) ? key[i] : key[i]<<8;
ac += (ac>>16) & 0xFFFF;
return ac & 0xFFFF;
}
Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
--
translated by takato satsuma