了解 HTTPS

什么是 HTTPS

简单来说,是在 HTTP 协议的基础上加一道通道。原因是 HTTP 的通信是明文、不安全的,很可能在你请求的时候被人破解,在你的浏览的页面中加入广告等黑客行为,所以就有人提出了安全协议,即安全版的 HTTP,是使用了 TLS/SSL 加密的 HTTP 协议

HTTP对比HTTPS

如图所示,所谓的 HTTPS 是在应用层加上 TLS/SSL,按照 TCP/IP 分层模型,HTTPS 中的 HTTP 是在 TLS/SSL 的基础上运行,TLS/SSL 负责安全部分,那什么是 TLS/SSL 呢?

TLS/SSL

TLS/SSL 全称安全传输协议 Transport Layer Security,是介于 TCP 和 HTTP 之间的一层安全协议

web-https03

SSL 是 TLS 的前身,SSL2 和 SSL3 分别在 2011 年和 2015 年被废弃,TLS 可以说是 SSL 的新版本

TLS/SSL 主要依赖于三类基本算法:散列函数、Hash、对称加密和非对称加密,其利用非对称加密实现身份认知和密钥协商,对称加密算法采用协商的密码对数据加密,基于散列函数验证信息的完整性

对称加密

  • AES
  • ChaCha

非对称加密

  • RSA
  • DH

摘要算法:SHA-2

非对称加密与对称加密

对称加密很好理解,就是指加密和解密时使用的密钥都是同一个 ,是对称的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性。

对称加密看上去好像完美地实现了机密性,但其中有一个很大的问题:如何把密钥安全地传递给对方,术语叫密钥交换。

因为在对称加密算法中只要持有密钥就可以解密。如果你和网站约定的密钥在传递途中被黑客窃取,那他就可以在之后随意解密收发的数据,通信过程也就没有机密性可言了。

所以,就出现了非对称加密(也叫公钥加密算法)。

它有两个密钥,一个叫公钥(public key),一个叫私钥(private key)。两个密钥是不同的(不对称),公钥可以公开给任何人使用,而私钥必须严格保密。

公钥和私钥有个特别的单向性,虽然都可以用来加密解密,但公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密 。

非对称加密可以解决密钥交换的问题。网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为没有私钥,所以就无法破解密文。

TLS/SSL 工作原理

为什么要三种算法结合,非对称加密所耗费时间过长,而对称加密又会不安全,所以结合两种

  • 客户端使用非对称加密与服务器进行通信拿到公钥信息(数字证书),实现身份验证
  • 由于服务器端私钥加密复杂,耗时较长,所以在客户端身份验证成功以后,会协商对称假面使用的密钥
  • 然后对称加密算法采用协商密钥对信息以及信息照耀进行加密通信,不同的阶段采用的对称密码不同,而从可以保证可能通信双方获取

HTTPS 连接大致上可以划分为两个部分,第一个是建立连接时的 非对称加密握手 ,第二个是握手后的 对称加密报文传输

参考资料

Last Updated:
Contributors: johan