总结 HTTPS 的加密流程

与HTTP一样,属于应用层协议;相当于HTTP协议再套一个TSL/SSL协议。

HTTP协议是超文本传输协议,信息是明文传输;在互联网上, 明文传输是比较危险的事情。

所以我们采用 HTTP+TSL/SSL 来组成HTTPS,Https则是具有安全性的ssl加密传输协议。

加密:

加密就是把 明文 (要传输的信息)进行一系列变换, 生成 密文 .
解密就是把 密文 再进行一系列变换, 还原成 明文 .
在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为 密钥 (正确发音 yue 四声, 不过大家平时都读作 yao 四声)

对称加密:

加密和解密使用同一把密钥。

但是如果直接把密钥明文传输, 那么黑客也就能获得密钥了~~ 此时后续的加密操作就形同虚设了.因此密钥的传输也必须加密传输!

但是要想对密钥进行对称加密, 就仍然需要先协商确定一个 "密钥的密钥". 这就成了 "先有鸡还是先有蛋"的问题了. 此时密钥的传输再用对称加密就行不通了.
就需要引入非对称加密.

非对称加密:

非对称加密要用到两个密钥, 一个叫做 "公钥", 一个叫做 "私钥".
公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多.

  • 客户端在本地生成对称密钥, 通过公钥加密, 发送给服务器.
  • 由于中间的网络设备没有私钥, 即使截获了数据, 也无法还原出内部的原文, 也就无法获取到对称密钥
  • 服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据.
  • 后续客户端和服务器的通信都只用对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其他主机/设备不知道密钥即使截获数据也没有意义

引入证书

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书.

这个证书包含了刚才的公钥, 也包含了网站的身份信息

HTTPS 的工作过程

1.握手阶段:基于非对称加密,生成密钥。

2.数据传输阶段:基于对称加密,使用1中生成的密钥来进行加密解密。

第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的。签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.

第二组(非对称加密): 用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密
 

### HTTPS 协议原理及加密解密流程详解 HTTPS(HyperText Transfer Protocol Secure)是一种基于 SSL/TLS 协议的安全通信协议,用于确保客户端与服务器之间的数据传输安全。其核心机制是通过加密手段保护数据的完整性和隐私性,防止中间人攻击和数据篡改。 HTTPS加密过程主要包括以下几个关键步骤: #### 1. 证书验证阶段 在 HTTPS 连接建立之初,客户端(如浏览器)会向服务器发起连接请求。服务器响应后,会将自己的数字证书发送给客户端。该证书中包含了服务器的公钥以及由可信证书颁发机构(CA)签名的信息。客户端通过操作系统中预置的 CA 公钥,验证证书的合法性,确保该证书未被篡改,并且确实属于目标服务器。这一阶段使用的是非对称加密技术,用于验证证书的真实性[^3]。 #### 2. 密钥交换阶段 一旦证书验证通过,客户端将生成一个随机的对称加密密钥(也称为会话密钥),用于后续数据的加密和解密。为了确保该密钥在传输过程中不被窃取,客户端会使用服务器证书中的公钥对该对称密钥进行加密,并将加密后的密钥发送给服务器。服务器接收到该加密密钥后,使用与其证书匹配的私钥进行解密,从而获得客户端生成的对称密钥。这一阶段同样使用非对称加密技术,确保密钥交换的安全性[^1]。 #### 3. 数据传输阶段 在密钥交换完成后,客户端和服务器之间所有的通信都将使用之前协商的对称密钥进行加密和解密。由于对称加密算法在加解密效率上优于非对称加密,因此适用于大量数据的传输。通过这种方式,HTTPS 实现了高效且安全的数据传输[^3]。 ### 加密流程总结 HTTPS加密流程可以归纳为以下三组密钥交互过程: - 第一组:非对称加密用于验证服务器证书的合法性,客户端使用 CA 的公钥验证服务器证书。 - 第二组:非对称加密用于安全地传输客户端生成的对称密钥,确保服务器能够解密并获取该密钥。 - 第三组:对称加密用于后续所有数据的传输,提高通信效率并保障数据安全[^3]。 ### 示例代码:HTTPS 请求过程(Python) ```python import requests # 发起 HTTPS 请求 response = requests.get('https://example.com') # 输出响应状态码和内容 print(f"Status Code: {response.status_code}") print(f"Response Body: {response.text}") ``` 该示例展示了如何使用 Python 的 `requests` 库发起 HTTPS 请求,并自动处理底层的 SSL/TLS 加密过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值