DNSSEC 原理、配置与布署简介( 三 )


下一个字段“3”是协议()字段 , 它的值必须是3 , 表示这是一个 , 这是为了与以前版本兼容而保留下来的 。其他的值不能用于签名的验证 。
下一个字段“5”是算法()字段 , 标识签名所使用的算法的种类 。其中常用的几种:1:RSA/MD5; 3:DSA/SHA-1; 5 RSA/SHA-1;
最后括号中的是公开密钥( Key)字段 , 它的格式依赖于算法字段 。
在实践中 , 权威域的管理员通常用两个密钥配合完成对区数据的签名 。一个是Zone- Key(ZSK) , 另一个是Key- Key(KSK) 。ZSK用于签名区数据 , 而KSK用于对ZSK进行签名 。这样做的好处有二:
(1)用KSK密钥签名的数据量很少 , 被破解(即找出对应的私钥)概率很小 , 因此可以设置很长的生存期 。这个密钥的散列值作为DS记录存储在上一级域名服务器中而且需要上级的数字签名 , 较长的生命周期可以减少密钥更新的工作量 。
(2)ZSK签名的数据量比较大 , 因而破解的概率较大 , 生存期应该小一些 。因为有了KSK的存在 , ZSK可以不必放到上一级的域名服务中 , 更新ZSK不会带来太大的管理开销(不涉及和上级域名服务器打交道) 。
2.1.2 RRSIG记录
RRSIG资源记录存储的是对资源记录集合()的数字签名 。下面是对一个A记录签名后得到的RRSIG记录:
. 86400 IN RRSIG A 5 3(
203 2642 .
+p8WTr

+= )
从第五个字段(“A”)开始各字段的含义如下:
类型覆盖(The TypeField):表示这个签名覆盖什么类型的资源记录 , 本例中是A;
算法:数字签名算法 , 同记录的算法字段;本例中5表示RSA/SHA-1 。
标签数量(TheField):被签名的资源域名记录所有者(.)中的标签数量 , 如本例中为3 , *..为2 , “.”的标签数量为0 。
接下来的几个字段分别是被签名记录的TTL、有效期结束时间、开始时间 。
然后(2642)是密钥标签(Key Tag) , 它是用对应公钥数据简单叠加得到的一个16比特整数 。如果一个域有多个密钥时(如一个KSK、一个ZSK) , Key Tag可以和后面的签名者字段(.)共同确定究竟使用哪个公钥来验证签名 。
2.1.3 DS记录
DS( )记录存储的散列值 , 用于验证的真实性 , 从而建立一个信任链 。不过 , 不象存储在资源记录所有者所在的权威域的区文件中 , DS记录存储在上级域名服务器()中 , 比如的DS RR存储在.com的区中 。
下面是一个DS记录的实例:
. 86400 IN DS 60485 5 1 ()
DS 之后的字段依次是密钥标签(Key Tag)、算法、和散列算法(1代表 SHA-1) 。后面括号内的内容是.密钥SHA-1计算结果的16进制表示 。必须为这个记录数字签名 , 以证实这个的真实性 。
2.1.4 NSEC记录
NSEC记录是为了应答那些不存在的资源记录而设计的 。为了保证私有密钥的安全性和服务器的性能 , 所有的签名记录都是事先(甚至离线)生成的 。服务器显然不能为所有不存在的记录事先生成一个公共的“不存在”的签名记录 , 因为这一记录可以被重放();更不可能为每一个不存在的记录生成独立的签名 , 因为它不知道用户将会请求怎样的记录 。

DNSSEC 原理、配置与布署简介

文章插图
在区数据签名时 , NSEC记录会自动生成 。比如在和之间会插入下面的这样两条记录: