假设我在一个开放的无线网络上,正在被主动嗅探,并且我连接到HTTPS站点。即使我的后续流量是加密的,嗅探器也不能使用初始(非安全)握手中的数据解密我的后续数据吗?

评论

如果这是真的,HTTPS将完全无法完成它专门打算做的一件事。所以当然不对。

@David我们不要以为它没有坏,或者为了真正实现隐含的安全性,没有满足某些条件的精美印刷品。

我并不是在建议我们认为它没有损坏。我说的是,HTTPS并没有完全损坏,以至于它完全无法完成它原本打算做的一件事。

请记住,诸如sslstrip之类的工具可用于执行中间人攻击。用户将看到标准的http://页面,而不是https://页面。这不是由于加密中的任何漏洞,而仅仅是HTTP协议如何工作的问题。 HTTP Strict Transport Security似乎是对此的补丁:tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-03

#1 楼

SSL和TLS协议(基于HTTPS的协议)的设计方式是,攻击者(无论是被动的还是主动的)都无法读取任何加密部分(如果密码学假设成立,并且您不使用它) (没有加密的NONE密码)。

当然,攻击者可以读取协商部分。但是这部分将不包含任何(使用当前已知的算法)可用于其余部分的密码分析的方法。

有几种可能的算法来协商秘密会话密钥-选择哪种取决于具体协议客户端提供的套件(=要使用的算法集)以及服务器从中选择的内容。然后,我们使用交换的密钥使用对称算法对其余的连接进行加密。

一些流行的密钥交换机制如下:




Diffie-Hellman密钥交换(DHE):此处双方选择随机数a和b,计算并交换$ g ^ b $或$ g ^ a $,然后都计算$(g ^ b)^ a =(g ^ a)^ b $,这是相同的值。攻击者看不到$ a $或$ b $,仅看到$ g ^ a $和$ g ^ b $,并且无法从中得出值。 (所有这些计算都是在某个组中完成的,对于“正常” Diffie-Hellman,乘法组对大素数取模,对于ECDHE,则在椭圆曲线组中进行。)

在经过验证的通常情况下密钥交换后,服务器使用其私钥对所有协商数据的一些哈希签名,然后客户端可以使用公钥进行检查。 (这避免了主动的中间人攻击,在这种情况下,攻击者与服务器协商一个密钥,然后与客户端协商另一个密钥,然后转发数据。)对于匿名连接,没有这样的步骤(并且MITM是可能的)。


基于非对称加密(RSA密钥交换):客户端生成一个随机的主前机密,并使用服务器的公钥对其进行加密,然后将其发送到服务器。服务器现在可以解密,并且都知道相同的主密码。在其上应用散列可提供用于实际加密(和MAC)的主密钥。

问题在于,私钥的泄漏会损害所有过去的连接(使用此密钥的位置以及使用哪个密钥在Diffie-Hellman进行注册时),仅会影响以后的连接(攻击者可以在其中发起MITM攻击)。


由于不适合使用,因此使用较少事先没有共享数据同意的各方:



基于密码,例如安全远程密码协议:该方法类似于Diffie-Hellman(即,它在素数组-也可以加法和乘法。)服务器有一个密码验证程序$ v,s $(一旦随机选择$ s $,并且$ v = g ^ {\ operatorname {H}(s,p)} $),客户端就有了密码$ p $。

要进行身份验证(并交换密钥),客户端发送用户名,并且$ A = g ^ a $(其中$ a $是随机数据),服务器发送回$ s $和$ B = k \ cdot v + g ^ b $(具有$ b $随机和$ k $一些固定参数)。两者都计算$ u = \ operatorname {H}(A,B)$。然后,客户端计算$ S =(B-k \ cdot g ^ {\ operatorname {H}(s,p)})^ {a + u \ cdot x} $,而服务器计算$ S =(A \ cdot v ^ u)^ b $。如果密码正确,则它们是相同的。要获取密钥本身,都需要计算$ K = \ operatorname {H}(S)$。


RFC 4279中定义的预共享密钥:这是一堆算法基于双方之间共有的一些预共享密钥。 (显然,这在匿名Internet中是没有用的。)

PSK方法只是传输一些密钥标识符(尚未更详细地指定-它取决于应用程序,即使用此协议的更高级别的协议),然后两者都从此共享机密中导出主会话密钥。

DHE_PSK使用如上所述的Diffie-Hellman密钥交换,然后将此密钥与预共享密钥一起哈希在一起以形成主会话密钥。

对于RSA_PSK,客户端发送了一个RSA加密的随机数据和密钥ID-然后,由解密的随机数据以及预共享的密钥形成预主密钥。



#2 楼

是的。由于公钥加密的工作方式,他们将无法对其进行解密。

首先,意识到用公钥加密的内容只能用相应的私钥解密(或者,取决于

所以可以说每个人(包括嗅探器)都有服务器的公钥。您用它加密某些东西,然后将其发送到服务器。嗅探器没有私钥,因此它们无法解密。

要确保您确实拥有服务器的公钥,请使用安全证书。我将不做详细介绍,而只是说如果您拥有有效的证书,几乎没有机会有人会得到您发送的邮件。

评论


$ \ begingroup $
好点。我进行了更改,但是您必须意识到,对于当今的计算机和算法,解密将花费很长时间(ofc,这没有考虑到未来的技术)。
$ \ endgroup $
–山姆·彭博(Sam Bloomberg)
2011年8月4日,下午2:57

$ \ begingroup $
我完全同意。而且,您将不得不知道哪些数据包具有所需的信息,或者解密成千上万的数据包,以期在一堆针中找到您的特定针。
$ \ endgroup $
–乍得
2011年8月4日15:36

$ \ begingroup $
如果仍然有人对此有任何疑问,我建议您看一下此页面:en.wikipedia.org/wiki/Public_key_encryption#How_it_works并查看“数字签名”部分。
$ \ endgroup $
–山姆·彭博(Sam Bloomberg)
2011年8月5日在19:01