domain-name-system – DNSSEC KSK / ZSK的可接受密钥长度是多少?

我的任务是研究在我们的名称服务器上实现DNSSEC.虽然技术方面(生成密钥,签名区域,准备翻转)相对简单,但我遇到了后勤问题.

从我一直在阅读的文档中,对于区域签名密钥,1024位是一个很好的大小,正确的程序是每个区域的一个ZSK,大约有一个月的翻转

但是,在具有良好熵的相当快的计算机上生成1024位密钥需要长达10分钟…而ISP我为三千多个区域的主机工作.除非我以某种方式从头到尾自动完成这个过程,否则这是不可行的 – 即使我这样做,当过程结束时,它几乎是时候开始进行NEXT翻转了.

简而言之,这是不可行的.现在我将DNSSEC限制在明确要求它的客户,但这是最好的权宜之计.

我的问题:

>我是否会因钥匙长度而过火?
>如何加快密钥生成过程?
>我应该为每个区域以及ZSK创建单独的密钥签名密钥吗?

编辑:添加了我用来生成密钥的确切命令:

caleburn: ~/Projects/Systemec/DNS-magic/DNSSEC/keys/ >time dnssec-keygen -r/dev/random -a RSASHA256 -f KSK -b 1280 -n ZONE example.com 
Generating key pair.............................+++++ ...+++++ 
Kexample.com.+008+10282

real    9m46.094s
user    0m0.092s
sys 0m0.140s

caleburn: ~/Projects/Systemec/DNS-magic/DNSSEC/keys/ >time dnssec-keygen -r/dev/random -a RSASHA256  -b 1280 -n ZONE example.com 
Generating key pair.........................+++++ .........+++++ 
Kexample.com.+008+22173

real    12m47.739s
user    0m0.124s
sys 0m0.076s

解决方法

dnssec-keygen认从/ dev / random读取.如果系统上的熵较低,则无法获得足够的随机数据来及时生成密钥. strace可能会显示很多东西,如:
select(4,[3],[],NULL,NULL)          = 1 (in [3])
read(3,"5%\5\32\316\337\241\323",46)  = 8
read(3,0x7fff5b6c3df0,38)             = -1 EAGAIN (Resource temporarily unavailable)
select(4,"\305\35\201c\31\343\251\21",38) = 8
read(3,30)             = -1 EAGAIN (Resource temporarily unavailable)

/ dev / random block如果没有足够的熵,那么可能需要一段时间.

你有几个选择可以让它变得更快.最简单的方法是使用更改-r / dev / random到-r / dev / urandom来使用非阻塞(但不安全)的随机生成器.对于像您希望使用多年的GPG或SSH密钥这样的东西,这可能不被认为是安全的,但是对于每30天更换一次的东西,它可能是安全的.

另一种选择是使用像EGDhaveged这样的东西作为/ dev / random的替代品.

如果您想要更安全的RNG,那么使用专用硬件RNG会更好.除非您管理TLD或银行域,否则这些可能对DNSSEC而言过度.

您可能希望坚持使用/ dev / random作为KSK,但/ dev / urandom应该对ZSK有利.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些