Network Working Group                                          S. Weiler
Request for Comments: 4470                                  SPARTA, Inc.
Updates: 4035, 4034                                             J. Ihren
Category: Standards Track                                  Autonomica AB
                                                              April 2006
       Minimally Covering NSEC Records and DNSSEC On-line Signing

Status of This Memo


This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

この文書は、インターネットコミュニティのためのインターネット標準トラックプロトコルを指定し、改善のための議論と提案を要求します。このプロトコルの標準化状態と状態への「インターネット公式プロトコル標準」(STD 1)の最新版を参照してください。このメモの配布は無制限です。

Copyright Notice


Copyright (C) The Internet Society (2006).




This document describes how to construct DNSSEC NSEC resource records that cover a smaller range of names than called for by RFC 4034. By generating and signing these records on demand, authoritative name servers can effectively stop the disclosure of zone contents otherwise made possible by walking the chain of NSEC records in a signed zone.

オンデマンドでこれらのレコードを生成し、署名することにより、RFC 4034によって要求されるよりも、名前の小さな範囲をカバーするDNSSEC NSECリソースレコードを構築する方法について説明し、権威ネームサーバが効果的にゾーンの内容の開示を停止することができます。この文書では、そうでない場合は、歩行によって可能になりました署名済みゾーンのNSECレコードの連鎖。

Table of Contents


   1. Introduction ....................................................1
   2. Applicability of This Technique .................................2
   3. Minimally Covering NSEC Records .................................2
   4. Better Epsilon Functions ........................................4
   5. Security Considerations .........................................5
   6. Acknowledgements ................................................6
   7. Normative References ............................................6
1. Introduction
1. はじめに

With DNSSEC [1], an NSEC record lists the next instantiated name in its zone, proving that no names exist in the "span" between the NSEC's owner name and the name in the "next name" field. In this document, an NSEC record is said to "cover" the names between its owner name and next name.


Through repeated queries that return NSEC records, it is possible to retrieve all of the names in the zone, a process commonly called "walking" the zone. Some zone owners have policies forbidding zone transfers by arbitrary clients; this side effect of the NSEC architecture subverts those policies.

NSECレコードを返す繰り返しクエリを通じて、一般的に呼ばれるプロセスは、ゾーンを「歩く」、ゾーン内の名前をすべて取得することが可能です。いくつかのゾーンの所有者は、任意のクライアントによるゾーン転送を禁止するポリシーを持っています。 NSECアーキテクチャのこの副作用は、これらのポリシーを覆します。

This document presents a way to prevent zone walking by constructing NSEC records that cover fewer names. These records can make zone walking take approximately as many queries as simply asking for all possible names in a zone, making zone walking impractical. Some of these records must be created and signed on demand, which requires on-line private keys. Anyone contemplating use of this technique is strongly encouraged to review the discussion of the risks of on-line signing in Section 5.


1.2. Keywords
1.2. キーワード

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [4].

キーワード "MUST"、 "MUST NOT"、 "REQUIRED" は、 "NOT SHALL" "ものと" この文書では、 "SHOULD"、 "推奨" "NOT SHOULD"、 "MAY"、 "OPTIONAL" はにありますRFC 2119に記載されるように解釈される[4]。

2. Applicability of This Technique

The technique presented here may be useful to a zone owner that wants to use DNSSEC, is concerned about exposure of its zone contents via zone walking, and is willing to bear the costs of on-line signing.


As discussed in Section 5, on-line signing has several security risks, including an increased likelihood of private keys being disclosed and an increased risk of denial of service attack. Anyone contemplating use of this technique is strongly encouraged to review the discussion of the risks of on-line signing in Section 5.


Furthermore, at the time this document was published, the DNSEXT working group was actively working on a mechanism to prevent zone walking that does not require on-line signing (tentatively called NSEC3). The new mechanism is likely to expose slightly more information about the zone than this technique (e.g., the number of instantiated names), but it may be preferable to this technique.


3. Minimally Covering NSEC Records

This mechanism involves changes to NSEC records for instantiated names, which can still be generated and signed in advance, as well as the on-demand generation and signing of new NSEC records whenever a name must be proven not to exist.


In the "next name" field of instantiated names' NSEC records, rather than list the next instantiated name in the zone, list any name that falls lexically after the NSEC's owner name and before the next instantiated name in the zone, according to the ordering function in RFC 4034 [2] Section 6.1. This relaxes the requirement in Section 4.1.1 of RFC 4034 that the "next name" field contains the next owner name in the zone. This change is expected to be fully compatible with all existing DNSSEC validators. These NSEC records are returned whenever proving something specifically about the owner name (e.g., that no resource records of a given type appear at that name).

インスタンス化された名前NSECレコードの「次の名前」フィールドではなく、ゾーン内の次のインスタンス化の名前をリストし、順序に従って、辞書的にNSECの所有者名の後に、ゾーン内の次のインスタンス化名の前に落ちる任意の名前をリストアップRFC 4034で関数[2]のセクション6.1。これは、「次の名前」フィールドには、ゾーン内の次の所有者名が含まれているRFC 4034のセクション4.1.1における要件を緩和します。この変更は、既存のすべてのDNSSECのバリデータと完全に互換性があると予想されます。特に所有者名(例えば、与えられたタイプのリソースレコードは、その名前で表示されていないこと)について何かを証明するたびにこれらのNSECレコードが返されます。

Whenever an NSEC record is needed to prove the non-existence of a name, a new NSEC record is dynamically produced and signed. The new NSEC record has an owner name lexically before the QNAME but lexically following any existing name and a "next name" lexically following the QNAME but before any existing name.


The generated NSEC record's type bitmap MUST have the RRSIG and NSEC bits set and SHOULD NOT have any other bits set. This relaxes the requirement in Section 2.3 of RFC4035 that NSEC RRs not appear at names that did not exist before the zone was signed.

生成されたNSECレコードの種類のビットマップは、RRSIGとNSECビットが設定されていなければなりません、そして、設定された任意の他のビットを持つべきではありません。これは、NSEC RRは、ゾーンが署名される前に存在していなかった名前で表示されませRFC4035の2.3節で要件を緩和します。

The functions to generate the lexically following and proceeding names need not be perfect or consistent, but the generated NSEC records must not cover any existing names. Furthermore, this technique works best when the generated NSEC records cover as few names as possible. In this document, the functions that generate the nearby names are called "epsilon" functions, a reference to the mathematical convention of using the greek letter epsilon to represent small deviations.


An NSEC record denying the existence of a wildcard may be generated in the same way. Since the NSEC record covering a non-existent wildcard is likely to be used in response to many queries, authoritative name servers using the techniques described here may want to pregenerate or cache that record and its corresponding RRSIG.


For example, a query for an A record at the non-instantiated name might produce the following two NSEC records, the first denying the existence of the name and the second denying the existence of a wildcard:

例えば、非インスタンス化名example.comでAレコードのクエリは、以下の2つのNSECレコードを生じる可能性があります、名前のexample.comとワイルドカードの存在を否定する第二の存在を否定する最初: 3600 IN NSEC ( RRSIG NSEC ) 3600 NSEC NSEC)

\).com 3600 IN NSEC ( RRSIG NSEC )


Before answering a query with these records, an authoritative server must test for the existence of names between these endpoints. If the generated NSEC would cover existing names (e.g., or *, a better epsilon function may be used or the covered name closest to the QNAME could be used as the NSEC owner name or next name, as appropriate. If an existing name is used as the NSEC owner name, that name's real NSEC record MUST be returned. Using the same example, assuming an delegation exists, this record might be returned from the parent:

これらのレコードを使用してクエリに答える前に、権限のあるサーバーは、これらのエンドポイント間の名前が存在するかどうかをテストしなければなりません。生成されたNSEC(例えば、exampldd.comまたは*既存の名前をカバーする場合は、より良いイプシロン機能を使用してもよいし、QNAMEに最も近いカバー名前はNSEC所有者名または次の名前として使用することができ、適切に。既存の名前がNSEC所有者名として使用されている場合は、その名前の本当のNSECレコードを返さなければなりません。同じ例を使用して、exampldd.comの代表団が存在すると仮定すると、このレコードは、親から返される可能性があります。 3600 IN NSEC ( NS DS RRSIG NSEC ) 3600 NSEC DS RRSIG NSEC)

Like every authoritative record in the zone, each generated NSEC record MUST have corresponding RRSIGs generated using each algorithm (but not necessarily each DNSKEY) in the zone's DNSKEY RRset, as described in RFC 4035 [3] Section 2.2. To minimize the number of signatures that must be generated, a zone may wish to limit the number of algorithms in its DNSKEY RRset.

RFC 4035 [3]のセクション2.2に記載したように、ゾーン内のすべての権限のレコードのように、生成された各NSECレコードは、ゾーンのDNSKEY RRセット内の各アルゴリズム(必ずしも必要ではないが、各DNSKEY)を使用して生成RRSIGsに対応しておく必要があります。生成されなければならない署名の数を最小限にするために、ゾーンはDNSKEYのRRセットにアルゴリズムの数を制限することを望むかもしれません。

4. Better Epsilon Functions

Section 6.1 of RFC 4034 defines a strict ordering of DNS names. Working backward from that definition, it should be possible to define epsilon functions that generate the immediately following and preceding names, respectively. This document does not define such functions. Instead, this section presents functions that come reasonably close to the perfect ones. As described above, an authoritative server should still ensure than no generated NSEC covers any existing name.

RFC 4034のセクション6.1には、DNS名の厳密な順序付けを定義します。その定義から後方に働いて、それぞれ、すぐに次と前の名前を生成するイプシロン関数を定義することが可能です。この文書では、このような関数を定義しません。代わりに、このセクションでは、完璧なものにかなり近い来るな機能を提供します。前述したように、権限のあるサーバーがまだ生成されたNSECは、既存の名前をカバーしていないよりも、確実にすべきです。

To increment a name, add a leading label with a single null (zero-value) octet.


To decrement a name, decrement the last character of the leftmost label, then fill that label to a length of 63 octets with octets of value 255. To decrement a null (zero-value) octet, remove the octet -- if an empty label is left, remove the label. Defining this function numerically: fill the leftmost label to its maximum length with zeros (numeric, not ASCII zeros) and subtract one.

左端のラベルの最後の文字をデクリメント、名前をデクリメントするには、null(ゼロ値)オクテットをデクリメントする値255のオクテットで63オクテットの長さとそのラベルを記入し、オクテットを削除する - 空のラベル場合ラベルを削除し、残っています。数値的にこの関数を定義する:ゼロ(数値ではなく、ASCIIゼロ)とその最大長さに一番左のラベルを記入し、1を引きます。

In response to a query for the non-existent name, these functions produce NSEC records of the following:


fon\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \ 3600 IN NSEC \ ( NSEC RRSIG )

FON 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ NSEC \ RRSIG)255 \ 3600 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255

\)\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255 \255\ 3600 IN NSEC \000.* ( NSEC RRSIG )

\)255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ \ 255 NSEC \ 000。*。 RRSIG)255 \ 3600 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ 255 \ \ 255

The first of these NSEC RRs proves that no exact match for exists, and the second proves that there is no wildcard in

これらNSEC RRの最初はfoo.example.comのための正確な一致が存在しないことを証明し、そして第二は、example.comにはワイルドカードが存在しないことを証明しています。

Both of these functions are imperfect: they do not take into account constraints on number of labels in a name nor total length of a name. As noted in the previous section, though, this technique does not depend on the use of perfect epsilon functions: it is sufficient to test whether any instantiated names fall into the span covered by the generated NSEC and, if so, substitute those instantiated owner names for the NSEC owner name or next name, as appropriate.


5. Security Considerations

This approach requires on-demand generation of RRSIG records. This creates several new vulnerabilities.


First, on-demand signing requires that a zone's authoritative servers have access to its private keys. Storing private keys on well-known Internet-accessible servers may make them more vulnerable to unintended disclosure.


Second, since generation of digital signatures tends to be computationally demanding, the requirement for on-demand signing makes authoritative servers vulnerable to a denial of service attack.


Last, if the epsilon functions are predictable, on-demand signing may enable a chosen-plaintext attack on a zone's private keys. Zones using this approach should attempt to use cryptographic algorithms that are resistant to chosen-plaintext attacks. It is worth noting that although DNSSEC has a "mandatory to implement" algorithm, that is a requirement on resolvers and validators -- there is no requirement that a zone be signed with any given algorithm.

イプシロン機能が予測されている場合は、最後の、オンデマンドの署名は、ゾーンのプライベートキーの選択平文攻撃を可能にしてもよいです。このアプローチを使用してゾーンを選択平文攻撃に耐性のある暗号化アルゴリズムを使用することを試みるべきです。ゾーンは、任意のアルゴリズムを使用して署名する要件がない - それは、DNSSECは、「必須実装する」アルゴリズムを有しているが、それはリゾルバとバリでの要件であることは注目に値します。

The success of using minimally covering NSEC records to prevent zone walking depends greatly on the quality of the epsilon functions chosen. An increment function that chooses a name obviously derived from the next instantiated name may be easily reverse engineered, destroying the value of this technique. An increment function that always returns a name close to the next instantiated name is likewise a poor choice. Good choices of epsilon functions are the ones that produce the immediately following and preceding names, respectively, though zone administrators may wish to use less perfect functions that return more human-friendly names than the functions described in Section 4 above.


Another obvious but misguided concern is the danger from synthesized NSEC records being replayed. It is possible for an attacker to replay an old but still validly signed NSEC record after a new name has been added in the span covered by that NSEC, incorrectly proving that there is no record at that name. This danger exists with DNSSEC as defined in [3]. The techniques described here actually decrease the danger, since the span covered by any NSEC record is smaller than before. Choosing better epsilon functions will further reduce this danger.

もう一つの明白しかし、見当違いの懸念が再生されて合成されたNSECレコードから危険です。新しい名前が間違ってその名前のレコードがないことを証明し、そのNSECでカバースパンで追加された後、攻撃者は古いが、まだ有効に署名したNSECレコードを再生することが可能です。 [3]で定義されるように、この危険はDNSSECで存在します。どんなNSECレコードでカバースパンが以前よりも小さいので、ここで説明された技術は、実際には、危険性を減少させます。より良いイプシロン機能を選択すると、さらに、この危険性を軽減します。

6. Acknowledgements

Many individuals contributed to this design. They include, in addition to the authors of this document, Olaf Kolkman, Ed Lewis, Peter Koch, Matt Larson, David Blacka, Suzanne Woolf, Jaap Akkerhuis, Jakob Schlyter, Bill Manning, and Joao Damas.


In addition, the editors would like to thank Ed Lewis, Scott Rose, and David Blacka for their careful review of the document.

また、編集者は、文書の彼らの慎重な検討のためのエド・ルイス、スコット・ローズ、とDavid Blackaに感謝したいと思います。

7. Normative References

[1] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "DNS Security Introduction and Requirements", RFC 4033, March 2005.

[1]アレンズ、R.、Austeinと、R.、ラーソン、M.、マッシー、D.、およびS.ローズ、 "DNSセキュリティ序論と要件"、RFC 4033、2005年3月。

[2] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "Resource Records for the DNS Security Extensions", RFC 4034, March 2005.

[2]アレンズ、R.、Austeinと、R.、ラーソン、M.、マッシー、D.、およびS.ローズ、 "DNSセキュリティ拡張のためのリソースレコード"、RFC 4034、2005年3月。

[3] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "Protocol Modifications for the DNS Security Extensions", RFC 4035, March 2005.

[3]アレンズ、R.、Austeinと、R.、ラーソン、M.、マッシー、D.、およびS.ローズ、 "DNSセキュリティ拡張のためのプロトコル変更"、RFC 4035、2005年3月。

[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[4]ブラドナーのは、S.は、BCP 14、RFC 2119、1997年3月の "RFCsにおける使用のためのレベルを示すために"。

Authors' Addresses


Samuel Weiler SPARTA, Inc. 7075 Samuel Morse Drive Columbia, Maryland 21046 US




Johan Ihren Autonomica AB Bellmansgatan 30 Stockholm SE-118 47 Sweden

ヨハン・ごAutonomica AB Bellmansgatan 30ストックホルムSE-118 47スウェーデン



Full Copyright Statement


Copyright (C) The Internet Society (2006).


This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

この文書では、BCP 78に含まれる権利と許可と制限の適用を受けており、その中の記載を除いて、作者は彼らのすべての権利を保有します。


この文書とここに含まれている情報は、基礎とCONTRIBUTOR「そのまま」、ORGANIZATION HE / SHEが表すまたはインターネットソサエティおよびインターネット・エンジニアリング・タスク・フォース放棄すべての保証、明示または、(もしあれば)後援ISに設けられています。黙示、情報の利用は、特定の目的に対する権利または商品性または適合性の黙示の保証を侵害しない任意の保証含むがこれらに限定されません。

Intellectual Property


The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

IETFは、本書またはそのような権限下で、ライセンスがたりないかもしれない程度に記載された技術の実装や使用に関係すると主張される可能性があります任意の知的財産権やその他の権利の有効性または範囲に関していかなる位置を取りません利用可能です。またそれは、それがどのような権利を確認する独自の取り組みを行ったことを示すものでもありません。 RFC文書の権利に関する手続きの情報は、BCP 78およびBCP 79に記載されています。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at


The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at

IETFは、その注意にこの標準を実装するために必要とされる技術をカバーすることができる任意の著作権、特許または特許出願、またはその他の所有権を持ってすべての利害関係者を招待します。 ietf-ipr@ietf.orgのIETFに情報を記述してください。



Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).