搜索

HTTPS是怎么加密数据的?

最近更新时间:2020-06-03 15:59:10

HTTPS是怎么加密数据的?对安全或密码学基础有了解的同学,应该知道常见的加密手段。一般来说,加密分为对称加密、非对称加密(也叫公开密钥加密)

对称加密

对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。

对称加密的优点在于加密、解密效率通常比较高。缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。此外,对于多个有数据交换需求的个体,两两之间需要分配并维护一把密钥,这个带来的成本基本是不可接受的。

非对称加密

非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。

什么叫做公钥呢?其实就是字面上的意思——公开的密钥,谁都可以查到。因此非对称加密也叫做公开密钥加密。相对应的,私钥就是非公开的密钥,一般是由网站的管理员持有。

公钥、私钥两个有什么联系呢?简单的说就是,通过公钥加密的数据,只能通过私钥解开。通过私钥加密的数据,只能通过公钥解开。

很多同学都知道用私钥能解开公钥加密的数据,但忽略了一点,私钥加密的数据,同样可以用公钥解密出来。而这点对于理解HTTPS的整套加密、授权体系非常关键。

 

那么,HTTPS的整个通信步骤有哪些呢?

1.请求由客户端发起。客户端发送Client Hello报文开始SSL通信。报文中包含了SSL的版本,加密组件等信息。

2.服务器收到请求会以Server Hello报文作为应答,报文内容和请求时差不多(经过筛选的)。

3.紧接着服务器再发送一条Certificate报文,报文中包含了证书。

4.服务器活还没干完,还需要发送Server Hello Done报文给客户端,表示SSL握手结束。

5.然后该客户端会回应一个Client Key Exchange报文,报文包含用步骤3中公钥加密后的随机密码串。

6.接着客户端继续发送Cipher Spec报文,提示服务器,用步骤5的随机密码串作为密钥加密之后的通信。

7.然后客户端发送Finished报文,表示这次协商结束,是否成功还得看服务器能不能解密该报文。

8.服务器没问题,发送Change Cipher Spec报文。

9.服务器发送Finished。

10.SSL连接完成,接下来使用HTTP进行通信。

11.最后由客户端断开连接。发送close_notify报文。