2. DNSKEY资源记录 (The DNSKEY Resource Record)
DNSSEC使用公钥密码学来签名和认证DNS资源记录集 (RRsets, Resource Record Sets)。公钥存储在DNSKEY资源记录中,并用于[RFC4035]中描述的DNSSEC认证过程: 区域使用私钥签名其权威RRset,并将相应的公钥存储在DNSKEY RR中。然后,解析器可以使用公钥验证覆盖区域中RRset的签名,从而认证它们。
DNSKEY RR不打算用作存储任意公钥的记录,禁止 (MUST NOT) 用于存储与DNS基础设施不直接相关的证书或公钥。
DNSKEY RR类型的Type值为 48。
DNSKEY RR与类无关。
DNSKEY RR没有特殊的TTL要求。
2.1. DNSKEY RDATA线格式 (DNSKEY RDATA Wire Format)
DNSKEY RR的RDATA由一个2字节的Flags字段、一个1字节的Protocol字段、一个1字节的Algorithm字段和公钥字段组成。
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 /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1.1. Flags字段 (The Flags Field)
Flags字段的第7位是Zone Key标志。如果第7位的值为1,则DNSKEY记录持有DNS区域密钥,并且DNSKEY RR的所有者名称必须 (MUST) 是区域的名称。如果第7位的值为0,则DNSKEY记录持有某种其他类型的DNS公钥,并且禁止 (MUST NOT) 用于验证覆盖RRset的RRSIG。
Flags字段的第15位是安全入口点 (SEP, Secure Entry Point) 标志,在[RFC3757]中描述。如果第15位的值为1,则DNSKEY记录持有一个打算用作安全入口点的密钥。此标志仅打算作为区域签名或调试软件关于此DNSKEY记录预期用途的提示; 验证器禁止 (MUST NOT) 在签名验证过程中基于此位的设置以任何方式改变其行为。这也意味着设置了SEP位的DNSKEY RR还需要设置Zone Key标志才能合法生成签名。设置了SEP但未设置Zone Key标志的DNSKEY RR 禁止 (MUST NOT) 用于验证覆盖RRset的RRSIG。
第0-6位和第8-14位保留: 这些位在创建DNSKEY RR时必须 (MUST) 的值为0,并且在接收时必须 (MUST) 被忽略。
2.1.2. Protocol字段 (The Protocol Field)
Protocol字段必须 (MUST) 的值为3,如果在签名验证期间发现其值不是3,则必须 (MUST) 将DNSKEY RR视为无效。
2.1.3. Algorithm字段 (The Algorithm Field)
Algorithm字段标识公钥的密码算法并确定公钥字段的格式。DNSSEC算法类型列表可以在附录A.1中找到。
2.1.4. 公钥字段 (The Public Key Field)
公钥字段保存公钥材料。格式取决于所存储密钥的算法,并在单独的文档中描述。
2.1.5. DNSKEY RDATA设计说明 (Notes on DNSKEY RDATA Design)
虽然Protocol字段始终具有值3,但为了向后兼容KEY记录的早期版本而保留。
2.2. DNSKEY RR展示格式 (The DNSKEY RR Presentation Format)
RDATA部分的展示格式如下:
Flag字段必须 (MUST) 表示为无符号十进制整数。鉴于当前定义的标志,可能的值为: 0、256和257。
Protocol字段必须 (MUST) 表示为值为3的无符号十进制整数。
Algorithm字段必须 (MUST) 表示为无符号十进制整数或附录A.1中指定的算法助记符。
公钥字段必须 (MUST) 表示为公钥的Base64编码。Base64文本中允许空白。有关Base64编码的定义,请参见[RFC3548]。
2.3. DNSKEY RR示例 (DNSKEY RR Example)
以下DNSKEY RR存储example.com的DNS区域密钥。
example.com. 86400 IN DNSKEY 256 3 5 ( AQPSKmynfzW4kyBv015MUG2DeIQ3
Cbl+BBZH4b/0PY1kxkmvHjcZc8no
kfzj31GajIQKY+5CptLr3buXA10h
WqTkF7H6RfoRqXQeogmMHfpftf6z
Mv1LyBUgia7za6ZEzOJBOztyvhjL
742iU/TpPSEDhm2SNKLijfUppn1U
aNvv4w== )
前四个文本字段指定所有者名称、TTL、类和RR类型 (DNSKEY)。值256表示Flags字段中的Zone Key位 (第7位) 的值为1。值3是固定的Protocol值。值5表示公钥算法。附录A.1将算法类型5标识为RSA/SHA1,并指出RSA/SHA1公钥字段的格式在[RFC3110]中定义。剩余文本是公钥的Base64编码。
相关章节导航:
- 上一章: 1. 简介
- 下一章: 3. RRSIG资源记录