对称加密
快速高效,但是无法实现**安全传输
非对称**
一定程度上保证**传输安全
数字证书
数字证书中包括公钥、证书所有者、颁发机构、有效期
HTTPS 的工作模式
(1)客户端会发送 Client Hello 消息到服务器,以明文传输 TLS 版本信息、加密套件候选列表、压缩算法候选列表等信息。另外,还会有一个在协商对称**时使用随机数。
(2)服务器返回 Server Hello 消息, 告诉客户端,服务器选择使用的协议版本、加密套件、压缩算法等,还有一个随机数,用于后续的**协商。
(3)服务器会给客户端端的证书,客户端通过自己信任的CA仓库中,拿CA证书的**解密验证证书的可信度;
(4)客户端计算产生随机数字 Pre-master,发送 Client Key Exchange,用证书中的公钥加密,再发送给服务器,服务器可以通过私钥解密出来。到目前为止,无论是客户端还是服务器,都有了三个随机数,分别是:自己的、对端的,以及刚生成的 Pre-Master 随机数。通过这三个随机数,可以在客户端和服务器产生相同的对称**。
(5)有了对称**,客户端发送Change Cipher Spec,采用协商的通信**和加密算法进行加密通信了。然后发送 Encrypted Handshake Message,将已经商定好的参数等,采用协商**进行加密,发送给服务器用于数据与握手验证。
(6)同样,服务器也发送 Change Cipher Spec,同意采用协商的通信**和加密算法进行加密通信了,并且也发送 Encrypted Handshake Message 的消息试试。当双方握手结束之后,就可以通过对称**进行加密传输了。
重放与篡改
有了加密和解密,黑客截获了包也打不开了,但是它可以发送 N 次。这个往往通过 Timestamp 和 Nonce 随机数联合起来,然后做一个不可逆的签名来保证。Nonce 随机数保证唯一,或者 Timestamp 和 Nonce 合起来保证唯一,同样的,请求只接受一次,于是服务器多次受到相同的 Timestamp 和 Nonce,则视为无效即可。