大型网站的HTTPS实践(一)——HTTPS协议和原理

前言


HTTP协议大家耳熟能详了,目前大部分WEB应用和网站都是使用HTTP协议传输的。

TLS是,它的前身是,最早由Netscape公司于1995年发布,1999年经过IETF讨论和规范后,改名为TLS。如果没有特别说明,SSL和TLS说的都是同一个协议。

HTTP和TLS在协议层的位置以及TLS协议的组成如下图:

大型网站的HTTPS实践(一)——HTTPS协议和原理

百度使用HTTPS协议主要是为了

HTTP本身是的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。

这里提到的主要指一些,是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如WIFI热点,路由器,防火墙,反向代理,缓存服务器等。

在HTTP协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过HTTPS是这些劫持行为的克星,能够完全有效地防御。

总体来说,HTTPS协议提供了三个强大的功能来对抗上述的劫持行为:

  1. 。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容;

  2. 。保证用户访问的是百度服务,即使被DNS劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持;

  3. 。防止内容被第三方冒充或者篡改。

那HTTPS是如何做到上述三点的呢?下面从原理角度介绍一下。

内容加密

加密算法一般分为两种,。所谓对称加密(也叫密钥加密)就是指加密和解密使用的是相同的密钥。而非对称加密(也叫公钥加密)就是指加密和解密使用了不同的密钥。

大型网站的HTTPS实践(一)——HTTPS协议和原理

大型网站的HTTPS实践(一)——HTTPS协议和原理

对称内容加密强度非常高,一般破解不了。但存在一个很大的问题就是无法安全地生成和保管密钥。假如客户端软件和服务器之间每次会话都使用固定的、相同的密钥加密和解密,肯定存在很大的安全隐患。如果有人从客户端获取到了对称密钥,整个内容就不存在安全性了,而且也是一件很复杂的事情。

非对称加密主要用于(也叫密钥协商),能够很好地解决这个问题。浏览器和服务器每次新建会话时都使用非对称密钥交换算法协商出对称密钥,使用这些对称密钥完成应用数据的加解密和验证,整个会话过程中的密钥只在内存中生成和保存,而且每个会话的对称密钥都不相同(除非会话复用),中间者无法窃取。

非对称密钥交换很安全,但同时也是HTTPS严重降低的“罪魁祸首”。想要知道HTTPS为什么影响速度,为什么消耗资源,就一定要理解非对称密钥交换的整个过程。

下面重点介绍一下非对称密钥交换的数学原理及在TLS握手过程中的应用。

大型网站的HTTPS实践(一)——HTTPS协议和原理