据我所知,当我通过HTTPS登录到一个网站时,公开密钥在会话开始时是共享的。我在互联网上看到的是,如果一个MITM从一开始就能读取整个对话,他就可以解密数据包并读取信息。我想知道的是,为什么密钥必须与每个连接共享?为什么浏览器不保留网站的密钥供以后使用(我假设它没有,因为我找不到任何说明它的东西)
发布于 2016-02-15 15:40:58
简单地说,大多数情况下没有“密钥”可供分享。web服务器和浏览器交换的东西比键更接近现在。它只用于加密用于传输其余部分的第二层“对称”加密密钥(因为公共/私有加密技术非常昂贵,我使用对称加密来方便解释)。我知道它更复杂)
问题是,最初您没有共同的理由来启动安全会话(没有只在您和服务器之间共享的加密库),因此我们必须使用一个复杂和“昂贵”的进程来设置只在浏览器和服务器之间共享的内容。
至于浏览器为什么不保持连接打开,这部分是历史,部分是浏览器的工作方式。幸运的是,对于我们有spdy的新浏览器和服务器,spdy允许让https连接打开更长时间(并尽可能长时间重复使用连接),甚至提前提供服务器已经知道客户端需要的数据(比如附加到特定html文件的css文件)。
https://security.stackexchange.com/questions/114697
复制相似问题