计算机网络学习随笔记(九)

HTTPS协议:

HTTPS是加密传输,对于加密算法总共有两大类一种是对称加密算法,一种是非对称加密算法。

在对称加密算法中,加密和解密使用的**是相同的。也就是说,加密和解密使用的是同一个**。因此,对称加密算法要保证安全性的话,**要做好保密。只能让使用的人知道,不能对外公开。

在非对称加密算法中,加密使用的**和解密使用的**是不相同的。一把是作为公开的公钥,另一把 是作为谁都不能给的私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密(大多数情况下使用公钥加密,私钥解密)

HTTPS 的工作模式

计算机网络学习随笔记(九)

当登录一个网站的时候,由于是 HTTPS,客户端会发送 Client Hello 消息到服务器,以明文传输 TLS 版本信息、加密套件候选列表、压缩算法候选列表等信息。另外,还会有一个随机数,在协商对称 **的时候使用。

然后,网站返回 Server Hello 消息, 告诉客户端,服务器选择使用的协议版本、加密套件、压缩算 法等,还有一个随机数,用于后续的**协商。

然后,网站会给你一个服务器端的证书,然后说:“Server Hello Done,我这里就这些信息了。”

你当然不相信这个证书,于是你从自己信任的 CA 仓库中,拿 CA 的证书里面的公钥去解密外卖网站的 证书。如果能够成功,则说明外卖网站是可信的。这个过程中,你可能会不断往上追溯 CA、CA 的 CA、CA 的 CA 的 CA,反正直到一个授信的 CA,就可以了(CA是颁发证书,可以通过它来验证证书的真实有效性)

证书验证完毕之后,觉得这个网站可信,于是客户端计算产生随机数字 Pre-master,发送 Client Key Exchange,用证书中的公钥加密,再发送给服务器,服务器可以通过私钥解密出来。

到目前为止,无论是客户端还是服务器,都有了三个随机数,分别是:自己的、对端的,以及刚生成的Pre-Master 随机数。通过这三个随机数,可以在客户端和服务器产生相同的对称**。

有了对称**,客户端就可以说:“Change Cipher Spec,咱们以后都采用协商的通信**和加密算法 进行加密通信了。然后发送一个 Encrypted Handshake Message,将已经商定好的参数等,采用协商**进行加密,发送给服务器用于数据与握手验证。

同样,服务器也可以发送 Change Cipher Spec,说:“没问题,咱们以后都采用协商的通信**和加密算法进行加密通信了”,并且也发送 Encrypted Handshake Message 的消息试试。当双方握手结束之后,就可以通过对称**进行加密传输了。