文章目录

  • 1 引言
  • 2 重要DNSSEC术语的定义
  • 3 DNS安全提供的服务
    • 3.1 数据源认证和数据完整性
    • 3.2 验证名称和类型不存在
  • 4 DNS安全不提供的服务
  • 5 DNSSEC文档集合概览和最后一跳问题
  • 6 解析器注意事项
  • 7 存根解析器注意事项
  • 8 区文件注意事项
    • 8.1 TTL值与RRSIG有效期
    • 8.2 区文件的新时间依赖性问题
  • 9 命名服务器注意事项
  • 10 DNS安全文档集
  • 12 安全注意事项

1 引言

本文件介绍了域名系统安全扩展(DNSSEC)。本文档及其两个配套文档([RFC4034]和[RFC4035])更新、澄清和改进了[RFC2535]及其前身中定义的安全扩展。这些安全扩展包括一组新的资源记录类型和对现有DNS协议的修改([RFC1035])。新记录和协议修改在本文件中没有完全描述,但在第10节概述的一系列文件中进行了描述。第3节和第4节更详细地描述了安全扩展的功能和限制。第5节讨论文档集的范围。第6、7、8和9节讨论这些安全扩展对解析器、存根解析器、区域和名称服务器的影响。

本文档及其两个同伴已经作废[RFC2535]、[RFC3008]、[RFC3090]、[RFC3445]、[RFC3655]、[RFC3658]、[RFC3755]、[RFC3757]、[RFC3845]。这个文档集也会更新但不会过时[RFC1034]、[RFC1035]、[RFC2136]、[RFC2181]、[RFC2308]、[RFC3225]、[RFC3007]、[RFC3597],以及[RFC3226]中与DNSSEC相关的部分。

DNS安全扩展为DNS数据提供了原始身份验证完整性保护,以及一种公钥分发方式。这些扩展不提供机密性。

2 重要DNSSEC术语的定义

本节定义了一组在本文档中使用的条款数量。因为这是打算是有用的作为参考在阅读文档的其余部分,首次的读者可能希望跳过本节快,阅读本文档的其余部分,然后回到这一节。

  • 身份验证链(Authentication Chain): DNS公钥(DNSKEY) RRset和授权签名者(DS,Delegation Signer) RRset的交替序列形成一个签名数据链,链中的每个链接都保证下一个链接。DNSKEY RR用于验证DS RR的签名,并对DS RR进行身份验证。DS RR包含另一个DNSKEY RR的hash,这个新的DNSKEY RR通过匹配DS RR中的hash进行身份验证。这个新的DNSKEY RR依次对另一个DNSKEY RRset进行身份验证,然后,这个集合中的一些DNSKEY RR可以用于对另一个DS RR进行身份验证,以此类推,直到链最终以一个DNSKEY RR结束,该RR的对应私钥对所需的DNS数据进行签名。例如,根DNSKEY RRset可用于对“example.”中的DS RRset进行身份验证。“example.” DS RRset包含一个匹配某些"example." DNSKEY的hash,这个DNSKEY对应的私钥签署 “example.” DNSKEY RRset。私钥对应的"example." DNSKEY RRset为“www.example.”等数据记录和“subzone.example”等代表团签署DS RRs。

    The “example.” DS RRset contains a hash that matches some “example.” DNSKEY, and this DNSKEY’s corresponding private key signs the “example.” DNSKEY RRset. Private key counterparts of the “example.” DNSKEY RRset sign data records such as “www.example.” and DS RRs for delegations such as “subzone.example.”

  • 身份验证密钥(Authentication Key): 安全解析器已验证的公钥,因此可以使用它来验证数据。安全解析器可以通过三种方式获得身份验证密钥:

    1. 解析器通常配置为至少知道一个公钥,通常是公钥本身或在DS RR中找到的公钥hash(请参阅“信任锚”)。

    2. 解析器可以使用经过身份验证的公钥来验证DS RR和DS RR所指向的DNSKEY RR。

    3. 冲突解决程序可以确定一个新的公钥已经由与冲突解决程序验证的另一个公钥对应的私钥签署。注意,在决定是否对新公钥进行身份验证时,解析器必须始终遵循本地策略,即使本地策略只是对解析器能够验证签名的任何新公钥进行身份验证。

Third, the resolver may be able to determine that a new public key has been signed by the private key corresponding to another public key that the resolver has verified. Note that the resolver must always be guided by local policy when deciding whether to authenticate a new public key, even if the local policy is simply to authenticate any new public key for which the resolver is able verify the signature.

  • 权威RRset(Authoritative RRset): 在一个特定的上下文中,“权威”当且仅当一个RRset的所有者名称RRset位于名称空间的子集,或低于以上区域顶点和分离区从孩子的削减,如果任何。区域顶点的所有rrset都是权威的,但此域名的某些rrset(如果存在)属于此区域的父域。这些RRset可以包括一个DS RRset,引用这个DS RRset的NSEC RRset(“parent NSEC”),以及与这些RRset相关的RRSIG RRs,所有这些RRs在父区域中都是权威的。类似地,如果此区域包含任何委托点,则只有父类NSEC RRset、DS RRset和与这些RRset关联的任何RRSIG RRs对该区域具有权威性。

  • 委托点(Delegation Point): 用于描述区域切割的亲本侧名称的术语。也就是说,“foo”的委托点。例如"是foo。“示例”区域中的示例节点(与“foo”的区域顶点相反)。示例”区)。参见区域顶点。

  • 安全岛(Island of Security): 用于描述已签名的委托区域,该区域没有来自其委托的父级的身份验证链。也就是说,在其委托的父区域中没有包含岛屿的DNSKEY RR散列的DS RR(参见[RFC4034])。安全岛由安全感知的名称服务器提供,可以为任何委托的子区域提供身份验证链。来自安全岛或其后代的响应只有在其身份验证密钥可以通过DNS协议的带外可信手段进行身份验证的情况下才能进行身份验证。

  • 密钥签名密钥(KSK,Key Signing Key): 与用于为给定区域签名一个或多个其他身份验证密钥的私有密钥相对应的身份验证密钥。

    通常,与KSK对应的私钥将对ZSK进行签名,而ZSK又具有相应的私钥,该私钥将对其他区域数据进行签名。本地策略可能要求频繁更改区域签名密钥,而密钥签名密钥的有效期可能更长,以便提供进入区域的更稳定的安全入口点。指定一个身份验证密钥作为KSK纯粹是一个操作问题: DNSSEC 验证不区分KSK和其他DNSSEC身份验证密钥,并且可以使用单个密钥同时作为KSK和ZKS。KSK在[RFC3757]中有更详细的讨论。请参阅ZSK。

  • 非验证安全感知的存根解析器(Non-Validating Security-Aware Stub Resolver): 一个安全感知的存根解析器,它信任一个或多个安全感知的递归名称服务器来执行本文档中讨论的大部分任务。特别是,非验证安全感知的存根解析器是一个实体,它发送DNS查询、接收DNS响应,并能够为安全感知的递归名称服务器建立适当的安全通道,该递归名称服务器将代表安全感知的存根解析器提供这些服务。参见安全感知的存根解析器,验证安全感知的存根解析器。

  • 非验证性存根解析器(Non-Validating Stub Resolver): 对于非验证性安全感知存根解析器而言,这是一个不那么乏味的术语。

  • 安全性敏感的名字服务器(Security-Aware Name Server): 一个实体行为的角色名称服务器(在2.4节中定义[RFC1034]),本文档中定义的理解DNS安全扩展集。特别是,一个有安全意识的名称服务器接收DNS查询的实体,将DNS响应,支持EDNS0 ([RFC2671])消息大小扩展和做一些([RFC3225]),并支持RR类型和消息头部分在这个文件中定义。

  • 安全感知的递归名称服务器(Security-Aware Recursive Name Server): 同时扮演安全感知的名称服务器和安全感知的解析器角色的实体。一个更麻烦但等价的短语是“提供递归服务的安全名称服务器”。

  • 意识到安全性问题解析器(Security-Aware Resolver): 实体行为的角色解析器(2.4节中定义[RFC1034]),本文档中定义的理解DNS安全扩展集。特别是,一个有安全意识的解析器是一个实体发送DNS查询,收到DNS响应,支持EDNS0 ([RFC2671])消息大小扩展和做一些([RFC3225]),并能使用RR类型和消息头部分中定义该文档法案同样提供域名系统安全扩展服务集。

  • 安全感知的存根解析器(Security-Aware Stub Resolver): 扮演存根解析器角色的实体(在[RFC1034]的5.3.1节中定义),该实体对在本文档中定义的DNS安全扩展有足够的理解,以提供从安全无关的存根解析器无法获得的其他服务。安全感知的存根解析器可以是“验证”的,也可以是“非验证”的,这取决于存根解析器是试图自己验证DNSSEC签名,还是信任一个友好的安全感知的名称服务器来验证。参见验证存根解析器和非验证存根解析器。

  • Security-Oblivious : 一个不是“security-aware”的。

  • 已签名区域(Signed Zone): 该区域的RRset已签名,并且包含正确构造的DNSKEY、资源记录签名(RRSIG,Resource Record Signature)、Next Secure (NSEC)和(可选)DS记录。

  • 信任锚(Trust Anchor): 已配置的DNSKEY RR或DNSKEY RR的DS RR hash。验证安全感知解析器使用此公钥或hash作为起点,以构建签名DNS响应的身份验证链。通常,验证解析器必须通过DNS协议之外的一些安全或可信的方法来获取其信任锚的初始值。信任锚点的存在还意味着解析器应该期望对信任锚点所指向的区域进行签名。

  • 未签名区域(Unsigned Zone): 未签名的区域。

  • 验证安全感知的存根解析器(Validating Security-Aware Stub Resolver): 一个安全感知的解析器,它以递归模式发送查询,但它自己执行签名验证,而不是盲目地信任上游安全感知的递归名称服务器。参见安全感知的存根解析器、非验证的安全感知的存根解析器。

  • 验证存根解析器(Validating Stub Resolver): 对于验证安全感知的存根解析器来说,这是一个不那么乏味的术语。

  • 区域先端(Zone Apex): 用来描述位于区域边缘的孩子的名字。参见委托点。

  • 区域签名密钥(ZSK,Zone Signing Key): 与用于签名区域的私钥相对应的身份验证密钥。通常,ZSK将是与KSK相同的DNSKEY RRset的一部分,其对应的私钥签署此DNSKEY RRset。但是ZSK用于一个稍微不同的目的,并且可能在其他方面与KSK不同,例如有效期。将认证密钥指定为ZSK纯粹是一个操作问题;DNSSEC验证不区分ZSK和其他DNSSEC身份验证密钥,可以同时使用单个密钥作为KSK和ZSK。参见KSK。

3 DNS安全提供的服务

域名系统(DNS)安全扩展为DNS数据提供原始身份验证完整性保证服务,包括通过身份验证拒绝DNS数据存在的机制。这些机制如下所述。

这些机制需要更改DNS协议。DNSSEC增加了四种新的资源记录类型:资源记录签名(RRSIG)、DNS公钥(DNSKEY)、授权签名者(DS)和Next Secure (NSEC)。它还添加了两个新的消息头位:检查禁用数据(CD)和验证数据(AD)。为了支持添加DNSSEC RRs所导致的更大的DNS消息大小,DNSSEC还需要EDNS0支持([RFC2671])。最后,DNSSEC需要支持DNSSEC OK (DO) EDNS头位([RFC3225]),以便安全感知解析器可以在其查询中指出它希望在响应消息中接收DNSSEC RRs。

这些服务可以保护域名系统免受[RFC3833]中描述的大部分威胁。有关这些扩展的限制的讨论,请参阅第12节。

3.1 数据源认证和数据完整性

DNSSEC通过将加密生成的数字签名与DNS rrset关联来提供身份验证。这些数字签名存储在一个新的资源记录``RRSIG记录中。通常,用一个私有密匙对区数据签名,但也可以用多个。例如,不同的数字签名算法会有不同的密钥。如果安全感知解析器可靠第获取了区域的公钥,则可以对该区域的签名数据进行身份验证。DNSSEC的一个重要概念是,对区域数据签名的密钥与区本身相关,而不是与区的权威名称服务器相关。(DNS事务认证机制的公钥也可能出现在区中,如[RFC2931]所述,但DNSSEC本身关心的是DNS数据安全`,而不是DNS事务的通道安全。与事务安全性相关的密钥可以存储在不同的RR类型中。详见[RFC3755]。)

安全感知解析器可以通过在解析器中配置信任锚通过正常的DNS解析来了解区域的公钥。为了允许后者,公钥存储在一种新的资源记录类型DNSKEY RR中。请注意,用于签署区域数据的私钥必须保持安全,并在实际操作时应脱机存储。要通过DNS解析可靠地发现公钥,目标密钥本身必须由已配置的身份验证密钥或之前已验证过的其他密钥进行签名。安全感知的冲突解决程序通过形成从新学习的公钥返回到以前已知的身份验证公钥的身份验证链来对区域信息进行身份验证,而这些公钥或者已经配置到冲突解决程序中,或者必须事先学习并验证过。因此,解析器必须配置至少一个信任锚。

如果配置的信任锚是ZSK,则它将对相关区域进行身份验证;如果配置的密钥是KSK,则它将对区域签名密钥进行身份验证。如果配置的信任锚是键的HASH,而不是键本身,则解析器可能必须通过DNS查询获取键。为了帮助安全感知解析器建立此身份验证链,安全感知名称服务器尝试发送DNS应答消息中验证区域公钥所需的签名,以及公钥本身,前提是消息中有可用空间。

授权签名者(DS,Delegation Signer) RR类型简化了跨组织边界签署代表团所涉及的一些管理任务。DS RRset驻留在父区域中的一个委托点上,并指示用于在被委托的子区域的顶点自签名DNSKEY RRset的私钥对应的公钥。然后,子区域的管理员使用与此DNSKEY RRset中的一个或多个公钥对应的私钥对子区域的数据进行签名。因此,典型的认证链是DNSKEY->[DS->DNSKEY] * ->RRset,其中“*”表示0个或多个DS->DNSKEY子链。DNSSEC允许更复杂的身份验证链,比如在一个区域内为其他DNSKEY RRs签名的附加DNSKEY RRs层。

安全感知解析器通常根据配置的根公钥知识,从DNS层次结构的根一直到叶区域,构造这个身份验证链。当地政策,然而,也可能让一个有安全意识的解析器使用一个或多个配置公共密钥(公钥或散列)除了根公钥,可能无法提供配置根公钥的知识,或可能防止解析器使用特定的公共密钥由于任意原因,即使这些公钥是正确与可验证签名签署。DNSSEC提供了一种机制,通过这种机制,安全感知解析器可以确定RRset的签名在DNSSEC的含义中是否“有效”。然而,归根结底,对DNS键和数据进行身份验证是一个本地策略的问题,它可能扩展甚至覆盖本文档集中定义的协议扩展。

3.2 验证名称和类型不存在

第3.1节中描述的安全机制只提供了对区域中现有的rrset进行签名的方法。使用相同级别的身份验证和完整性提供负面响应的问题需要使用另一种新的资源记录类型,即NSEC记录。NSEC记录允许安全感知的解析器对名称或类型不存在的否定应答进行身份验证,使用与验证其他DNS应答相同的机制。使用NSEC记录需要对区域中的域名进行规范表示和排序。NSEC记录链显式地描述区域中的域名称之间的空白(或“空白空间(empty space)”),并列出现有名称中rrset的类型。使用3.1节中描述的机制对每个NSEC记录进行签名和身份验证。

4 DNS安全不提供的服务

DNS最初的设计是基于这样的假设:无论谁发出了查询,DNS都将对任何给定的查询返回相同的答案,因此DNS中的所有数据都是可见的。因此,DNSSEC的设计目的不是提供机密性、访问控制列表或其他区分询问者的方法。

DNSSEC不提供针对拒绝服务攻击的保护。安全感知解析器和安全感知名称服务器很容易受到基于密码操作的另一类拒绝服务攻击。详情请参阅第12节。

DNS安全扩展为DNS数据提供数据和原始身份验证。上述机制并不是为了保护诸如区域传输和动态更新等操作而设计的([RFC2136], [RFC3007])。在[RFC2845]和[RFC2931]中描述的消息身份验证方案处理与这些事务相关的安全操作。

5 DNSSEC文档集合概览和最后一跳问题

本文档集中的规范定义了区域签名者和安全感知的名称服务器和解析器的行为,其方式是验证实体可以明确地确定数据的状态。

验证解析器(validating resolver)可以确定以下4种状态:

  • 安全(Secure):验证解析器有一个信任锚,有一个信任链,并且能够验证响应中的所有签名。
  • 不安全(Insecure):验证解析器有一个信任锚,一个信任链,并且在某个委托点签署了不存在DS记录的证明。这表明树中随后的分支是可证明不安全的。验证解析器可以使用本地策略将域空间的某些部分标记为不安全。
  • 伪造(Bogus):验证解析器有一个信任锚和一个安全委托,指示附属数据已签名,但是由于某些原因,响应无法验证:丢失的签名、过期的签名、不支持算法的签名、相关的NSEC RR认为应该出现的数据丢失,等等。
  • 不确定(Indeterminate):没有表示树的特定部分是安全的信任锚。这是默认的操作模式。

该规范仅定义了安全感知的名称服务器如何向非验证存根解析器发出信号,表明发现的数据是伪造的(使用RCODE=2,“服务器故障”;参见[RFC4035])。

安全感知的名称服务器有一种机制,可以向安全感知的存根解析器发出信号,表明发现的数据是安全的(使用AD位;参见[RFC4035])。

此规范未定义用于通信的格式,说明为什么发现响应是虚假的或标记为不安全的。当前的信令机制没有区分不确定状态和不安全状态。

在安全感知的存根解析器和安全感知的递归名称解析器之间发送高级错误代码和策略的方法是未来工作的主题,安全感知的解析器和使用它的应用程序之间的接口也是未来工作的主题。但是,请注意,此类通信规范的缺乏并不妨碍已签名区域的部署,也不妨碍安全意识的递归名称服务器的部署,这些服务器禁止将虚假数据传播到应用程序。

6 解析器注意事项

安全感知解析器必须能够执行验证数字签名所需的密码功能,至少使用命令到实现的算法。安全感知解析器还必须能够形成一个身份验证链,从一个新学习的区域返回到一个身份验证密钥,如上所述。此过程可能需要对中间DNS区域进行额外查询,以获得必要的DNSKEY、DS和RRSIG记录。一个安全感知的解析器应该配置至少一个信任锚,作为尝试建立身份验证链的起点。

如果一个有安全意识的解析器分开相关权威域名服务器通过递归域名服务器或任何形式的中介充当DNS代理的设备,如果递归域名服务器或中介设备不是有安全意识,意识到安全性问题解析器可能不能够操作在安全模式。例如,如果安全感知解析器的数据包通过网络地址转换(NAT)设备路由,该设备包含一个不安全的DNS代理,安全感知解析器可能会发现很难或不可能获得或验证签名的DNS数据。在这种情况下,安全感知解析器可能很难获得DS RRs,因为DS RRs在区域切换时不遵循通常的DNS规则来拥有RRs。请注意,这个问题并不是特定于NATs的:任何类型的安全无关DNS软件在安全感知解析器和权威名称服务器之间都会干扰DNSSEC。

如果具有安全意识的解析器必须依赖于未签名的区域或不具有安全意识的名称服务器,则解析器可能无法验证DNS响应,并需要本地策略来决定是否接受未经验证的响应。

安全感知解析器在确定其缓存中数据的TTL时,应该考虑签名的验证期,以避免在签名的有效期内缓存已签名的数据。但是,它也应该考虑到安全意识解析器自身时钟出错的可能性。因此,作为安全意识递归名称服务器一部分的安全意识解析器必须仔细注意DNSSEC“检查禁用”(CD)位([RFC4034])。这样做是为了避免阻塞有效签名,使其无法访问此递归名称服务器的其他安全解析器。有关安全递归服务器如何使用CD位集处理查询,请参见[RFC4035]。

7 存根解析器注意事项

尽管协议并不严格要求这样做,但大多数DNS查询都来自存根解析器。根据定义,存根解析器是最小的DNS解析器,它使用递归查询模式将大部分DNS解析工作转移到递归名称服务器。考虑到存根解析器的广泛使用,DNSSEC体系结构必须考虑存根解析器,但是存根解析器所需的安全特性在某些方面与具有安全意识的迭代式解析器所需的安全特性不同。

法案同样甚至security-oblivious存根解析器可能受益于域名系统安全扩展如果递归域名服务器使用安全性敏感,但是对于存根解析器将任何真正的法案同样依赖于域名系统安全扩展服务存根解析器必须信任问题的递归域名服务器和本身和名称服务器之间的通信通道。第一个问题是本地策略问题:本质上,安全无关的存根解析器别无选择,只能将自己置于所使用的递归名称服务器的支配之下,因为它自己不执行DNSSEC有效性检查。第二个问题需要某种渠道安全机制;适当使用DNS事务身份验证机制(如SIG(0) ([RFC2931])或TSIG ([RFC2845])就足够了,适当使用IPsec也是如此。特定的实现可能有其他可用的选择,比如操作系统特定的进程间通信机制。此通道不需要保密性,但需要数据完整性和消息身份验证。

一个安全感知的存根解析器如果同时信任它的递归名称服务器和它的通信通道,那么它可以选择检查它接收到的响应消息的消息头中的已验证数据(AD)位的设置。存根解析器可以使用此标志位作为提示,以确定递归名称服务器是否能够验证响应的应答和权威部分中的所有数据的签名。

还有一个步骤,一个有安全意识的存根解析器可以如果,不管出于什么原因,不能够建立一个有用的信任关系的递归域名服务器用途:它可以执行自己的签名验证通过设置检查禁用(CD)在查询消息。因此,验证存根解析器能够将DNSSEC签名视为区域管理员与存根解析器本身之间的信任关系。

8 区文件注意事项

在已签署和未签署的区域之间有几个不同之处。签名区域将包含额外的安全相关记录(RRSIG、DNSKEY、DS和NSEC记录)。RRSIG和NSEC记录可以在为区域提供服务之前通过签名过程生成。区域数据附带的RRSIG记录定义了起始和过期时间,这些时间为签名和签名覆盖的区域数据建立了有效期。

另一方面,RRSIG RR ([RFC4034])中的在先启和过期字段指定签名用于验证所覆盖的RRset的时间段。与已签名区域数据关联的签名仅在RRSIG RRs中的这些字段指定的时间段内有效。TTL值不能延长有效期的签署RRsets解析器的缓存,但解析器可以使用剩余时间的签名有效期期满之前签署RRset作为上界的TTL签署RRset及其相关RRSIG RR解析器的缓存。

8.1 TTL值与RRSIG有效期

必须注意RRset的TTL值与RRSIG RR指定的覆盖该RRset的签名有效期之间的区别。DNSSEC不改变TTL值的定义或函数,TTL值的目的是维护缓存中的数据库一致性。缓存解析器从缓存中清除rrset的时间不晚于这些rrset的TTL字段指定的时间段的结束,而不管解析器是否安全。

8.2 区文件的新时间依赖性问题

已签名区域中的信息具有在原始DNS协议中不存在的时间依赖性。签名区域需要定期维护,以确保区域中的每个RRset都有当前有效的RRSIG RR。RRSIG RR的签名有效期是一个间隔,在此期间,可以认为一个特定签名RRset的签名是有效的,并且一个区域中不同RRset的签名可能在不同的时间到期。在一个区域中重新签名一个或多个RRset将更改一个或多个RRSIG RRs,这将依次要求增加该区域的SOA序列号以指示发生了区域更改,并重新签名SOA RRset本身。因此,对区域中的任何RRset重新签名也可能触发DNS通知消息和区域传输操作。

9 命名服务器注意事项

安全感知的名称服务器应该包括适当的DNSSEC记录(RRSIG、DNSKEY、DS和NSEC),以响应解析器的查询,解析器通过使用EDNS头中的DO位表示愿意接收这些记录,但受消息大小限制。由于包含这些DNSSEC RRs很容易导致UDP消息截断并退回到TCP,因此安全感知的名称服务器还必须支持EDNS“发送方的UDP有效负载”机制。

如果可能,每个DNSSEC密钥对的私有部分应该保持脱机状态,但是对于已启用DNS动态更新的区域,这是不可能的。在动态更新情况下,专区的主主服务器在更新专区时必须重新签名,因此与专区签名密钥对应的私钥必须保持在线。这的一个例子是一个情况下,能够独立的欧元区DNSKEY RRset成带签名的密钥和密钥签名密钥(s)可能是有用的,因为密钥签名密钥(s)在这种情况下仍能保持离线,可能不再有用的一生比带签名的密钥(年代)。

仅DNSSEC本身不足以在区域转移操作期间保护整个区域的完整性,因为即使一个已签名的区域也包含一些未签名的、非权威的数据(如果该区域有任何子区域的话)。因此,区域维护操作将需要一些额外的机制(很可能是某种形式的通道安全,如TSIG、SIG(0)或IPsec)。

10 DNS安全文档集

在DNS基本协议文档的大伞下,DNSSEC文档集可以划分为几个主要组。

“DNSSEC协议文档集”是指构成DNS安全扩展的核心的三个文档:

  1. DNS安全介绍和要求(本文档)
  2. DNS安全扩展的资源记录[RFC4034]
  3. DNS安全扩展的协议修改[RFC4035]

此外,任何添加或更改核心DNS安全扩展的文档都属于这一类。这包括在安全感知的存根解析器和上游安全感知的递归名称服务器之间进行通信的任何后续工作。

“数字签名算法规范”文档集是指描述如何实现特定数字签名算法以符合DNSSEC资源记录格式的一组文档。这个集合中的每个文档都处理特定的数字签名算法。请参阅[RFC4034]中关于“DNSSEC算法和摘要类型”的附录,其中列出了在编写本核心规范时定义的算法。

“事务认证协议”文档集是指处理DNS消息认证的一组文档,包括密钥的建立和验证。虽然在这组文档中并没有严格定义DNSSEC规范的一部分,但由于它与DNSSEC的关系而被注意到。

最后的文档集“新安全使用”指的是为了其他安全相关目的而试图使用建议的DNS安全扩展的文档。DNSSEC不为这些新用途提供任何直接安全性,但可以用于支持它们。属于这一类的文档包括描述在存储和分发证书时使用DNS的文档([RFC2538])。

12 安全注意事项

本文档介绍了DNS安全扩展,并描述了包含新安全记录和DNS协议修改的文档集。这些扩展使用资源记录集上的数字签名来提供数据源身份验证和数据完整性。本节讨论这些扩展的局限性。

为了一个有安全意识的解析器来验证一个DNS响应,所有区域沿着小路从值得信赖的起点到区包含响应区必须签署,和所有名称服务器和参与解决过程的解析器必须有安全意识,本文档中定义的设置。一个有安全意识的解析器不能验证响应来自一个无符号的区域,从区域不是由一个有安全意识的名称服务器,或解析器只能通过不支持安全的递归名称服务器获取的任何DNS数据。如果身份验证链出现中断,导致安全感知解析器无法获取和验证所需的身份验证密钥,则安全感知解析器无法验证受影响的DNS数据。

本文简要讨论了向DNS查询添加安全性的其他方法,如使用由IPsec保护的通道或使用诸如TSIG ([RFC2845])或SIG(0) ([RFC2931])等DNS事务身份验证机制,但事务安全性本身不是DNSSEC的一部分。

非验证安全性敏感的存根解析器,根据定义,法案同样不执行域名系统安全扩展签名验证的,因此都是脆弱的攻击的安全性敏感的递归域名服务器(和)代表其执行这些检查和攻击其沟通与安全性敏感的递归域名服务器。非验证安全感知的存根解析器应该使用某种形式的通道安全性来防御后一种威胁。对于前一种威胁,惟一已知的防御方法是让安全感知的存根解析器执行自己的签名验证,此时,根据定义,它将不再是一个非验证的安全感知的存根解析器。

DNSSEC不能防止拒绝服务攻击。由于攻击者可以尝试使用DNSSEC机制来消耗受害者的资源,因此DNSSEC使DNS容易受到基于针对安全感知解析器和安全感知名称服务器的密码操作的新类型的拒绝服务攻击。这类攻击至少有两种形式。攻击者可以通过篡改响应消息中的RRSIG RRs或构造不必要的复杂签名链来消耗安全意识解析器的签名验证代码中的资源。攻击者还可以通过发送更新消息流来消耗支持DNS动态更新的安全感知的名称服务器中的资源,从而迫使安全感知的名称服务器比在其他情况下更频繁地对区域中的某些rrset重新签名。

由于慎重的设计选择,DNSSEC不提供机密性。DNSSEC引入了敌对方通过遵循NSEC链来枚举区域中的所有名称的能力。NSEC RRs通过按区域内所有名称的规范顺序从现有名称链接到现有名称,从而断言哪些名称在区域中不存在。因此,攻击者可以依次查询这些NSEC RRs,以获得一个区域中的所有名称。虽然这不是对DNS本身的攻击,但它允许攻击者通过枚举区域的内容来映射网络主机或其他资源。

DNSSEC为DNS带来了显著的额外复杂性,从而为实现错误和错误配置区域带来了许多新的机会。特别是,在解析器中启用DNSSEC签名验证可能会导致由于DNSSEC配置错误或bug而导致整个合法区域无法有效访问。

DNSSEC不能防止对未签名区域数据的篡改。在区域剪切处的非权威数据(在父区域中的glue和NS RRs)没有签名。这在验证身份验证链时不会造成问题,但它确实意味着在区域传输操作期间,非权威数据本身很容易受到篡改。因此,虽然DNSSEC可以为rrset提供数据源身份验证和数据完整性,但它不能为区域提供这些功能,必须使用其他机制(如TSIG、SIG(0)或IPsec)来保护区域传输操作。

请参阅[RFC4034]和[RFC4035]以了解更多的安全注意事项。

DNS安全性介绍和要求(RFC4033翻译)相关推荐

  1. 2.1 DNS服务介绍和安装

    DNS服务介绍和安装 一 DNS概述 通过为每台主机建立IP地址与域名之间的映射关系,用户可以避开难记的IP地址,而是用域名就可以访问网络中的站点:即平常我们上网输入的都是域名,www.baidu.c ...

  2. java技术及ssh框架和jsp技术的介绍 外文文献及翻译_java技术及ssh框架和jsp技术的介绍 外文文献及翻译.doc...

    java技术及ssh框架和jsp技术的介绍 外文文献及翻译.doc 还剩 34页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...

  3. 计算机历史介绍英语作文带翻译,介绍西安的带翻译英语作文(精选5篇)

    介绍西安的带翻译英语作文(精选5篇) 在日常学习.工作或生活中,大家总免不了要接触或使用作文吧,根据写作命题的特点,作文可以分为命题作文和非命题作文.如何写一篇有思想.有文采的作文呢?下面是小编精心整 ...

  4. Timsort 介绍(listsort.txt 翻译)

    Timsort 介绍(listsort.txt 翻译) 译文 简介(Intro) 与 Python 样本混合排序的比较(Comparison with Python's Samplesort Hybr ...

  5. linux中DNS的介绍及DNS的高速缓存

    1.什么是DNS 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP ...

  6. DNS服务器介绍(二)——主从复制和区域转发

    背景介绍 实际环境中为了避免单点故障,DNS服务器是由一组服务器组成每一个服务器上都有若干个区域,不同服务器上的相同区域分为主和从两种角色.由于正向和反向是不同的区域,所以多台服务器间的相同区域可以互 ...

  7. [计算机网络] - DNS基础介绍

    在互联网时代中,如果要问哪个应用层协议最重要的话,我想答案无疑是DNS.虽然我们每天都享受着DNS服务带来的便利, 却对它往往知之甚少.因此本文就来介绍一下DNS协议的工作流程,真正认识一下这个支撑着 ...

  8. docker container DNS配置介绍和源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要介绍了docker容器的DNS配置及其注意点,重点对docker 1.10发布的embedded DNS server ...

  9. 注意力机制在NLP问题中的介绍与调查-论文翻译

    基本是机器翻译,也进行了基本的人工矫正,凑活看吧 原论文:<An Introductory Survey on Attention Mechanisms in NLP Problems> ...

最新文章

  1. View Transform(视图变换)详解
  2. jstl 处理字符串函数 substring spli等
  3. 替换RubyGems 镜像
  4. 茫茫IT,我们努力,在努力。
  5. JoshChen_php 简单的商城网站功能原理(一)
  6. 读书笔记--101个shell脚本 之#13--猜数字
  7. linux设置永久别名
  8. Hibernate框架(持久化类、缓存、事务管理)
  9. C#中const和readonly有什么区别?
  10. 1.1介绍线程和运行(Introducing Thread and Runnable)
  11. 史上最全的主流CPU性能排名
  12. 没有找到MSVCR100.dll解决方法
  13. 数据结构PTA习题:07-图4 哈利·波特的考试 (25分)
  14. 计算机对操作系统函数的调用失败,win8系统电脑弹出提示“远程过程调用失败且未执行”的修复方法...
  15. yigo基础学习笔记2
  16. 330pics-shell scripts-second
  17. 重庆SEO优化高手更新网站文章的窍门
  18. 浅谈未来的人工智能与奇点临近
  19. 当狗兄弟遇到小猫咪,又怂又爱挑衅,搞笑配音让短视频更有趣
  20. scip指令集_C++上位机与安捷伦agilent示波器的通讯

热门文章

  1. 利用for循环构建矩阵1
  2. 分布式session的实现方式
  3. RobotFramework 基础语法
  4. windbg+virtualbox+win10双机调试
  5. java越权_从Java的角度简单修复Cookie越权漏洞
  6. Process.Start(@C:\Program Files\360\360Se\360se3\360se.exe, sr.ReadLine());
  7. linux关闭smb命令,linux – smbclient的退出代码
  8. Linux系统运维工程师学习(基础 一)
  9. 史上最全的画册制作流程—画册设计价格
  10. tomcat文件类型下载或预览