HTTPS(一)基础及连接建立

一、 对称加密和非对称加密
1、对称加密
1)对称加密是一把密钥,这把密钥可以加密明文,也可以解密加密后的密文,
2)常见的对称加密算法有AES、DES、RC4,目前最常用的是AES。

2、非对称加密
1)非对称加密是两把密钥,分别是公钥和私钥,公钥加密的密文只有相对应的私钥才能解密,私钥加密的内容也只有相对应的公钥才能解密,其中公钥是公开的,私钥是自己保存,不能公开,
2)常见的非对称加密算法有RSA和ECC(椭圆曲线算法)。
3)相比对称加密,非对称加密的加解密效率比较低

二、 SSL和TSL
1、SSL(Secure Socket Layer)是Netscape开发的专门用户保护Web通讯的,最新版本为3.0
2、TLS(Transport Layer Security),SSL的后续版本,是IETF制定的一种新的协议

三、 HTTP和HTTPS
HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在HTTP层和TCP层之间加了一个SSL层,SSL向上提供加密和解密的服务。

四、 HTTPS的作用

  • 验证服务方身份,如我访问 google.com 的时候连的确实就是谷歌服务器
  • 防止数据被劫持,例如有些运营商会给 http 的页面插入广告
  • 防止敏感数据被窃取篡改等

五、 HTTPS连接建立
HTTPS建立连接的过程就是使用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列(哈希)函数验证信息的完整性
现在比较常用的握手协议使用DH握手,握手流程图如下:

 

握手过程:
1、客户端向服务端发送Client Hello,告诉服务端,客户端支持的协议版本,加密套件等信息。
2、服务端收到响应,选择双方都支持的协议,套件,向客户端发送Server Hello。
3、服务端将自己的证书发送到客户端(Certificate),客户端对证书合法性进行验证。
4、服务器利用私钥将客户端随机数,服务器随机数,服务器DH参数签名,生成服务器签名。向客户端发送服务器DH参数以及服务器签名(Server Key Exchange)。
5、客户端向服务端发送客户端DH参数(Client Key Exchange)。
6、客户端利用公钥验证服务器签名,客户端与服务器各自利用服务端DH参数、客户端DH参数生成预主密钥,再通过预主密钥、客户端随机数、服务端随机数生成主密钥(会话密钥)。最后握手完成,所有的消息都通过主密钥加密。

六、 HTTPS抓包分析
1、 Client Hello

 2、 Server Hello

3、 certificate
客户端收到证书信息后,会验证证书的合法性

 4、Server Key Exchange

 

5、Server Hello Done
Sever Hello Done 消息表明服务器已经将所有预计的握手消息发送完毕。在此之后,服务器会等待客户端发送消息。

6、Client Key Exchange

7、Change Cipher Spec
Change Cipher Spec 消息表明发送端已取得用以生成连接参数的足够信息,已生成加密密钥(主密钥),并且将切换到加密模式。客户端和服务器在条件成熟是会发送这个消息。

8、Encrypted Handshake Message
Encrypted Handshake Message 这是由客户端服务器之间协商的算法和密钥保护的第一个消息。它意味着握手已经完成。消息内容将加密,以便双发可以安全地交换验证整个握手完整性所需要的数据。

原文地址:https://www.cnblogs.com/guoxianqi2020/p/13813813.html