我是密码学领域的新手,但是我想通过设置使用Perfect Forward Secrecy托管的网站来使网络成为更好的网络。我有一个有关“完美向前保密”设置的问题列表。它可以解决以下问题:


我选择的证书颁发机构会妨碍使用完全正向保密吗?
如何仅使用完全正向保密来创建最强的证书(即如果浏览器无法使用PFS,它不会加载任何内容)?
我是否需要了解一些其他设置,以配置我的站点以使用这些证书(特别是因为我只想要PFS)?
其他我应该知道的,随时告诉我。我是这个想法的新手。


#1 楼

在开始的SSL握手中,客户端发送受支持的密码套件的列表(以及其他内容)。然后,服务器根据排名选择一个密码套件,并告诉客户端他们将使用哪个密码套件。

这一步是确定未来连接是否将具有完美的前向保密性的步骤。请注意,此时证书完全没有进入图片。这是因为连接是否具有完美的前向保密性取决于会话密钥的导出方式。会话密钥的派生方式由使用中的密码套件确定。因此,使用临时Diffie-Hellman(DHE)或椭圆曲线变体(ECDHE)的密码套件将具有完美的前向保密性,而其他选项则不会。

因此,为了配置PFS用于您的站点,要配置的是Web服务器的密码套件选择选项。



我选择的证书颁发机构会妨碍使用Perfect
正向保密吗?


否。完善的前向保密性可防止万能钥匙的泄露。 CA无法访问私钥(主);来自CA的证书是签名的公共密钥。 CA在这里说:“好的,客户,我已经验证这里的公钥确实与<host>相关联,这是安全的。” (或者相反,它是由CA签名的事实说明了这一点。)因此,您对CA的选择不会以任何方式影响PFS。


如何创建最强的证书仅使用Perfect Forward
保密(意味着如果浏览器无法使用PFS,它将不会加载
任何东西)?


如您所见,证书与密码套件(以及PFS)的选择无关。

相反,您使用的Web服务器可能在其SSL配置中具有密码套件配置。通常有两个相关的选项:首先,您希望服务器使用的密码套件,其次,服务器如何选择密码套件。这是我的nginx配置中的相关部分:显而易见,第一行告诉nginx使用这四个协议。第三行告诉nginx比客户端更喜欢自己的密码套件。这里的重点是我们要精确地控制将选择哪个密码套件。客户端可以发送建议使用非PFS密码套件的命令;因此,我们信任服务器。

第二行是神奇的地方。请注意,如果客户端支持这三种方案,则我首先手动指定我要使用这三种ECDHE- *方案。从那里,我回到通常的方案。我觉得有必要强调一点,我不会禁止不支持PFS的客户。有些加密总比没有加密好。并非所有客户端都支持PFS,因此这很重要。我意识到您的问题是您只需要PFS密码套件,但我建议您不要这样做。使用上述nginx配置,绝大多数连接的选定密码套件将具有PFS。 Apache的配置显然非常相似,考虑到两者都使用OpenSSL,这不足为奇。为此,一个有用的工具:SSL Labs SSL Test。它为您提供有关SSL配置的基本等级。例如,请参阅Google的成绩(单击一个)。该等级下有一个绿色的小方框,通知您该网站对其所有经过测试的浏览器均支持PFS,如果向下滚动至“配置”,则会看到密码套件优先级列表,其中包括哪些密码套件具有PFS,以及“模拟握手”,用于当今的通用浏览器。

评论


$ \ begingroup $
实际上,对于DH密码套件,您需要一个可用于签名的密钥。如果您的CA仅提供RSA密钥标记为“仅加密”的证书,则可能存在问题。 (不过,我从未尝试过。)
$ \ endgroup $
–PaŭloEbermann
2013年6月30日12:01

$ \ begingroup $
@PaŭloEbermann:您知道实际上会颁发这种证书的任何(广泛使用的)CA吗?我的印象是,CA基本上总是颁发带有keyEncipherment和digitalSignature集的证书。
$ \ endgroup $
–里德
2013年6月30日15:17

$ \ begingroup $
我之所以要求禁止不支持PFS的浏览器,是因为我正在开发一些需要高度安全性的产品。最好拒绝将页面提供给不支持PFS的客户端,或者将其重定向到错误页面。感谢您的详尽解释。非常感谢您的帮助。
$ \ endgroup $
–克莱·弗里曼
13年7月15日在1:17



$ \ begingroup $
该分析器遗漏了一些重要的服务器配置,其中涉及如何处理会话恢复。以错误的方式执行此操作,并且如果服务器受到威胁或您是NSLd,则实际上没有前向保密性。 imperialviolet.org/2013/06/27/botchingpfs.html
$ \ endgroup $
– imichaelmiers
13年8月23日在7:20

$ \ begingroup $
有一本很棒的书:《 OpenSSL Cookbook》,它是完全免费的。在第一章的“将它们放在一起”一节中,您可以找到解决方案,该方法仅过滤掉支持PFS的这些密码。
$ \ endgroup $
–patryk.beza
16 Sep 1'9:53



#2 楼

这是在SSL服务器上部署前向保密性的良好指南。这是另一本很好的指南,描述了如何为Apache,Nginx和OpenSSL部署前向保密性。

要回答您的特定问题:据我所知,您应该能够使用任何CA。前向保密性的选择不是来自证书;它来自您在服务器上配置的密码套件列表。因此,如果为服务器配置了简短的密码套件列表(仅列出提供正向保密性的密码套件),则将确保连接将使用正向保密性或失败。我上面链接的指南应该为您提供所有需要了解的指导。

#3 楼

警告:普遍认为,用于PFS的ECC曲线具有NSA后门。如果您不满意,设置使用NSA自己设计和推广的曲线和算法可能不是最佳解决方案。

评论


$ \ begingroup $
这个答案肯定需要证明。是的,人们普遍认为Dual EC DRBG是后门的,但是我不认为人们普遍认为所有PFS ECC曲线都是后门的吗?
$ \ endgroup $
–密码学家
2013年12月4日在12:03

$ \ begingroup $
NIST曲线有点可疑,因为它们包含选择的大常数,而没有适当应用无袖套技术。但是我们不知道这种弱点如何工作。
$ \ endgroup $
– CodesInChaos
2013年12月4日12:30

$ \ begingroup $
有关NIST曲线为何可疑的解释,请参见safecurves.cr.yp.to。特别是“刚性”标准。
$ \ endgroup $
–内特
13年12月29日在7:54

$ \ begingroup $
“广泛相信”可能有点夸张,但有怀疑的理由;加密系统应该是安全的,毫无疑问。
$ \ endgroup $
–莱昂·蒂默曼斯(Leon Timmermans)
15年6月11日在18:20

$ \ begingroup $
相反,如果NSA知道对NIST P-256曲线中的离散日志有攻击,那么他们(除其他事项外)将能够在DUAL_EC_DRBG中拥有后门而不会被抓住(即发布)两点都使用SHA-1种子)。如果他们知道对SHA-1的原像攻击,这也将奏效。因此,DUAL_EC_DRBG混乱充分证明了NIST P-256是安全的(或者至少在2006年DUAL_EC_DRBG标准化后才是安全的)。
$ \ endgroup $
– Circonflexe
16-3-31在7:51