easy-rsa
生成初始密钥和证书。一切正常,直到我运行./build-dh
(此处为脚本)。 24小时后,我写了这篇文章。我以前在其他设备和相同的RaspberryPi上但在Raspbian下配置了OpenVPN。而且我不记得这个命令花了这么长时间。上一次我使用2048位密钥,大约花了一个小时。现在我正在尝试使用4096位密钥,已经超过一天了。实际上,距离我重新启动所有设置又启用了内置硬件随机数生成器并再次尝试,已经过了12个小时了。但是它仍在进行中。
cat /proc/sys/kernel/random/entropy_avail
返回的值在3000-3100之间。是否有人对此有过任何经验?如何检查它是否不是在循环中执行?
#1 楼
如果openssl
使用大量CPU,则不会阻塞等待“熵”。在这方面,OpenSSL实际上是理智的,并且使用加密安全的PRNG将初始种子扩展到所需的任意数量的比特。使用
dhparam
时,OpenSSL不仅会生成DH参数;它还会生成DH参数。它还希望通过小心使用模数来维持自己的社会地位,即所谓的“强质数”,这对安全性没有用,但是需要大量的计算工作。 “强素数”是素数p,因此(p-1)/ 2也是素数。素数生成算法如下所示:生成随机奇数整数p。
测试p是否为素数。如果不是,则循环。
测试(p-1)/ 2是否为质数。如果不是,请循环。
随机的4096位奇数整数是素数的大约1/2000,并且由于p和(p-1)/ 2都必须是素数,因此平均而言生成并测试约400万个奇数素数的素数。这肯定会花费一些时间。
从2048位变为4096位时,强质数的密度除以4,并且素数测试也将慢4倍左右,因此如果生成2048位DH模数平均需要1个小时,则具有相同软件的同一台计算机将平均使用16个小时来获得4096位DH模数。这只是平均值;取决于您的运气,每一代可能会更快或更慢。
合理的解决方案是添加
-dsaparam
选项。openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096
此选项指示OpenSSL生成“类似于DSA”的DH参数(p使得p-1是较小质数q的倍数,并且生成器具有乘法阶q)。这是相当快的,因为它不需要嵌套素性测试,因此只能生成并测试成千上万个候选对象,而不是数百万个。
据学者所知,DH的类似DSA的参数同样安全。使用“强质数”并没有实际优势(术语是传统的,实际上并不意味着额外的强度)。
类似地,您也可以使用2048位模数,这已经非常进入“无法突破”区域。 4096位模数将使DH计算变慢(对于VPN而言这不是真正的问题;这些问题仅在连接开始时发生),但实际上并不能提高安全性。
对于某些人在某种程度上,4096位模数可能会吸引审核员,但是审核员不太可能对Raspberry-Pi印象深刻,因为Raspberry-Pi实在太便宜了。
#2 楼
当我需要为正在升级的Raspberry pi邮件服务器上进行的鸽子升级生成.pem时,我遇到了同样的问题。 dovecot文档推荐的命令参数似乎在RPi上花了很长时间,因此我在笔记本电脑上运行了推荐的命令,即2.5 GHz四核Intel Core i7,它用了不到半小时的时间:openssl dhparam 4096 > dh.pem
然后我使用scp将.pem传输到RPi。
评论
关于-dsaparam的好提示
–豆腐
16年2月10日在19:24
可以在其他更强大的计算机上进行生成,然后将参数文件保存为scp。
–尼克T
16年4月4日在8:30
您能否提供类似DSA的参数“同等安全”的引用?
–完全
16-11-22在19:52
“请注意,使用此类DSA风格的DH参数,应为每次使用创建一个新的DH密钥,以避免可能发生的小小组攻击。” -知道如何确保TLS实施正在执行此操作吗?
–橙色狗
19年1月3日,16:15
有关“ -dsaparam”样式的dhparams的OpenSSL安全公告:openssl.org/news/secadv/20160128.txt(CVE-2016-0701)。因此,据我了解,使用这些dhparams时需要使用(EC)DHE(PFS)密码。使用标准的DH密码是不安全的。
– EnnoGröper
19-4-30在9:13