HTTPS的实现原理

HTTPS协议之所以安全是因为HTTPS协议会对传输的数据进行加密,在内容传输的加密上使用的是对称加密,在证书校验阶段使用非对称加密。

HTTPS的整体过程分为证书校验阶段和数据传输阶段,具体的交互过程如下:
1、客户端发送自己支持的加密规则给服务器,代表告诉服务器自己要进行连接了;
2、服务器从中选出一套加密算法hash算法以及自己的身份信息以证书的形式发送给浏览器,证书中包含服务器信息,加密公钥,证书的颁发机构等;
3、客户端收到网站的证书后,首先验证证书的合法性,可以后浏览器生成一串随机数,并用证书中的公钥进行加密;
4、服务器接收到客户端传过来的信息后,首先用私钥解密,验证hash值是否与浏览器发过来的一致,如果一致则说明握手成功。

什么是对称加密和非对称加密?

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方。

非对称加密指使用一对非对称密钥,即:公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

为什么数据传输是用对称加密?

首先,非对称加密的加解密效率非常低,而HTTP的应用场景中通常端与端之间存在大量的交互,非对称加密的效率无法接受;
另外,在HTTPS的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以HTTPS中内容传输加密采取的是对称加密,而不是非对称加密。

为什么需要CA认证机构颁发证书?

HTTP协议被认为不安全是因为传输过程中容易被监听者勾线监听,伪造服务器,而HTTPS协议主要解决的便是网络传输的安全性问题。
首先我们假设不存在认证机构,任何人都可以制作证书,这带来的安全风险便是经典的”中间人攻击“问题。

中间人攻击:

  1. 本地请求被劫持(如DNS劫持等),所有请求均发送到中间人的服务器;
  2. 中间人服务器返回中间人自己的证书;
  3. 客户端创建随机数,通过中间人证书的公钥对随机数加密后传送给中间人,然后凭随机数构造对称加密传输内容进行加密传输;
  4. 中间人因为拥有客户端的随机数,可以通过对称加密算法进行内容解密;
  5. 中间人以客户端的请求内容再向正规网站发起请求;
  6. 因为中间人与服务器的通信过程是合法的,正规网站通过建立的安全通道返回加密后的数据;
  7. 中间人凭借与正规网站建立的对称加密算法对内容进行解密;
  8. 中间人通过与客户端建立的对称加密算法对正规内容返回的数据进行加密传输;
  9. 客户端通过与中间人建立的对称加密算法对返回结果数据进行解密。

由于缺少对证书的验证,所以客户端虽然发起的是HTTPS请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。

HTTP 和 HTTPS 的区别?

  1. 费用:HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费;
  2. 资源消耗:HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 ssl 加密传输协议,需要消耗更多的 CPU 和内存资源;
  3. 端口不同:HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443;
  4. 安全性:HTTP 的连接很简单,是无状态的;HTTPS 协议是由 TSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

HTTPS 的优缺点?

优点:

  1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. HTTPS 协议是由 SSL + HTTP协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性;
  3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

缺点:

  1. HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近 50%,增加 10% 到 20% 的耗电;
  2. HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
  3. SSL 证书需要钱,功能越强大的证书费用越高,个人网站、小网站一般不会用;
  4. SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗;
  5. HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。