Https基本原理

https结构

https在原有的http协议与tcp协议之间新增了一层,这一层初始使用的是ssl加密,后续逐渐使用tls。
https结构

https设计思路

  1. 首先需要明白https诞生的原因:解决通信过程中的安全问题,不会被攻击者获取通信中的信息。
  2. 为了实现这一目标,我们第一想法是对通信的内容进行加密。如对称加密、非对称加密等。
  3. 非对称加密安全性较高,但是比较耗时,所以我们尽量使用对称加密进行通信。对称加密通信中的密钥可以暂时称为“会话密钥”。显然,一个客户端的一次随机连接,应当对应一个会话密钥,即会话密钥应当是即时产生的,并且充分随机的。
  4. 由于保证会话密钥的安全性,是保证以后所有通信安全的基础。因此,我们可以在通信连接建立的时候,可以利用非对称加密传输会话密钥,我暂时称为“传输密钥”。
  5. 这里又出现一个问题,如何保证非对称加密的安全性呢?众所周知,非对称加密需要公钥和私钥。私钥服务端保留,公钥发送给客户端。但是服务端不可能将自己的公钥盲目的一股脑发送给客户端,这样无疑也给攻击者以可乘之机了。
  6. 为了解决这个问题,这里引入了一个第三方机构CA。服务端将自己的公钥通过CA进行加密传输,发送给客户端,这样就解决了这个问题。

以上涉及到了三对密钥:

  • 会话密钥,对称加密产生,是通信过程中真正使用的密钥。
  • 传输密钥,非对称加密密钥,为了保证会话密钥传输的安全性而引入的。
  • CA密钥,非对称加密密钥,是为了保证传输密钥的安全性而引入的。公钥被内置在客户端浏览器中。

下面我们来看一下CA证书是如何保证整个连接的安全性的。

CA证书原理

CA是负责发放和管理数字证书的权威机构。浏览器默认都是会安装一些CA证书的,这些CA证书是被认为是安全可靠的。
引入第三方机构后的通信流程图如下:
https通信原理图

  1. 服务端申请证书
    服务端要向CA申请证书,来保证本服务端通信的可靠性。服务端生成自己的公钥、私钥,然后将公钥交给CA。CA利用自己的私钥对服务端的公钥进行签名,生成证书,返还给服务端。
  2. 客户端浏览器内置了一些CA证书,可以拿到这些CA证书的公钥。
  3. 客户端与服务端进行三次握手的时候,服务端会将CA证书(包含服务端的公钥)、颁发日期、有效期等响应给客户端。
  4. 客户端进行CA证书的验证。
  5. 客户端获取服务端公钥。由于客户端浏览器拥有CA证书的公钥,所以可以通过解签计算获取到服务端的公钥。
  6. 客户端生成随机密钥,并通过公钥加密发送给服务端。随机密钥的生成使用的random既包含了客户端的请求,也包含了服务端的响应。这样可以保证是充分随机的。
  7. 服务端利用私钥解密获取到会话密钥
  8. 客户端与服务端利用生成的会话密钥进行通信

另:CA在颁发证书的时候,会生成一个数字证书的编号。这个编号是利用证书的一些相关信息生成的。客户端进行验证的时候,会利用这个编号进行验证。所以如果攻击者想要伪造证书、或自己申请一个CA证书进行攻击都是不可行的,从而保证了安全。

以上信息参考了咕泡学院 的公开课相关资料并进行了一些修改。如有错误,欢迎指正。

发布了136 篇原创文章 · 获赞 94 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/somehow1002/article/details/82955562