HTTPS

2018-10-22  本文已影响0人  JarvanZ

HTTP的缺点

其他未加密的协议中也会存在这类问题。

通信使用明文可能会被窃听
不验证通信方的身份就可能遭遇伪装
无法证明报文完整性,可能已遭篡改

HTTP+加密+认证+完整性保护=HTTPS

HTTP加上加密处理和认证以及完整性保护后即是HTTPS
HTTPS是身披SSL外壳的HTTP
  HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已。 image.png

  在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。
  SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。

相互交换秘钥的公开秘钥加密技术

  SSL采用一种叫做公开密钥加密的加密处理方式。近代的加密方式中加密算法是公开的,而密钥却是保密的。
  加密和解密都会用到密钥。任何人只有持有密钥就能解密了。如果密钥被攻击者获得,那加密也就失去了意义。

证明公开密钥正确性的证书

  公开密钥加密方式存在一些问题。那就是无法证明公开密钥本身就是货真价实的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。

  为了解决上述问题,可以使用由数字证书认证机构和其相关机关颁发的公开密钥证书。数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。 image.png
HTTPS的安全通信机制
image.png

步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。 报文中包
含客户端支持的 SSL的指定版本、 加密组件(Cipher Suite) 列表(所使用的加密算法及密钥长度等) 。
步骤 2: 服务器可进行 SSL通信时, 会以 Server Hello 报文作为应答。 和客户端一样, 在报文中包含 SSL版本以及加密组件。 服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3: 之后服务器发送 Certificate 报文。 报文中包含公开密钥证书。
步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端, 最初阶段的 SSL握手协商部分结束。
步骤 5: SSL第一次握手结束之后, 客户端以 Client Key Exchange 报文作为回应。 报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。 该报文已用步骤 3 中的公开密钥进行加密。
步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。 该报文会提示服务器, 在此报文之后的通信会采用 Pre-master secret 密钥加密。
步骤 7: 客户端发送 Finished 报文。 该报文包含连接至今全部报文的整体校验值。 这次握手协商是否能够成功, 要以服务器是否能够正确解密该报文作为判定标准。
步骤 8: 服务器同样发送 Change Cipher Spec 报文。
步骤 9: 服务器同样发送 Finished 报文。
步骤 10: 服务器和客户端的 Finished 报文交换完毕之后, SSL连接就算建立完成。 当然, 通信会受到 SSL的保护。 从此处开始进行应用层协议的通信, 即发送 HTTP 请求。
步骤 11: 应用层协议通信, 即发送 HTTP 响应。
步骤 12: 最后由客户端断开连接。 断开连接时, 发送 close_notify 报文。 上图做了一些省略, 这步之后再发送 TCP FIN 报文来关闭与 TCP的通信。

  在以上流程中, 应用层发送数据时会附加一种叫做 MAC(Message Authentication Code) 的报文摘要。 MAC 能够查知报文是否遭到篡改, 从而保护报文的完整性。 image.png
上一篇下一篇

猜你喜欢

热点阅读