外观
HTTPS原理解析
1317字约4分钟
计算机基础网络安全HTTPS
2024-05-10
HTTPS(超文本传输安全协议)是HTTP协议的安全版本,它通过在 HTTP 协议上添加 SSL/TLS 层来实现数据的加密和安全传输。HTTPS 的核心在于采用 对称加密 和 非对称加密 的结合使用。
不进行加密
明文传输:在客户端和服务器数据传输过程中,可以获取到传输的账号密码和其他数据,非常不安全。
我们可以借助 抓包工具,如 Charles,Fiddler 等工具,对网络请求进行抓包,获取到传输的数据。
对称加密
对称加密:使用相同的密钥进行加密和解密。发送方和接收方必须在通信之前共享这个密钥。
加密步骤
- 密钥生成:发送方生成一个随机密钥(对称密钥)。
- 数据加密:使用对称密钥对数据进行加密,生成密文。
- 数据传输:将密文发送给接收方。
- 数据解密:接收方使用相同的对称密钥对密文进行解密,恢复原始数据。
优点
- 速度快:加密和解密速度快,效率高。
- 计算资源消耗低:实现简单,不需要复杂的密钥交换过程。
缺点
- 密钥传输问题:密钥的安全性依赖于密钥的保密性,密钥在传输过程中可能被窃取。
- 扩展性差:每对通信方都需要一个独立的密钥,随着通信方数量的增加,密钥管理变得复杂。
非对称加密
非对称加密:使用一对密钥,公钥和私钥。公钥可以公开,任何人都可以用它加密信息;而私钥则必须保密,只有密钥的拥有者才能用它解密信息。
加密步骤
- 密钥对生成:用户生成一对密钥,包括公钥和私钥。
- 公钥分发:用户将公钥发送给需要与之通信的其他方。
- 数据加密:发送方使用接收方的公钥对数据进行加密,生成密文。
- 数据传输:将密文发送给接收方。
- 数据解密:接收方使用自己的私钥对密文进行解密,恢复原始数据。
优点
- 安全性高:即使公钥被公开,只有拥有私钥的人才能解密信息,避免了密钥在传输过程中的泄露。
缺点
- 速度慢:非对称加密算法的计算复杂度较高,处理速度较慢,不适合大规模数据的加密。
- 计算资源消耗大:相较于对称加密,非对称加密需要更多的计算资源。
HTTPS 的加密机制
HTTPS 结合了 对称加密 和 非对称加密 的优点,通过以下步骤实现数据的安全传输:
握手过程
当客户端与服务器建立HTTPS连接时,首先进行SSL/TLS握手。在握手过程中,使用非对称加密来交换密钥,具体步骤如下:
客户端 ClientHello
客户端向服务器发送“Hello”消息,包含支持的SSL/TLS版本、加密算法列表和一个随机数(Client Random)。
服务器 ServerHello
服务器响应“Hello”消息,选择SSL/TLS版本和加密算法,并发送自己的随机数(Server Random)。
服务器证书
服务器将数字证书发送给客户端,证书中包含服务器的公钥。客户端验证证书的合法性,如果证书无效,则握手失败。
密钥交换
客户端生成一个随机密钥(会话密钥),并使用服务器的公钥对该密钥进行加密。这个加密后的会话密钥称为“预主密钥”(Pre-Master Secret)。
客户端将加密后的预主密钥发送给服务器。
服务器解密
服务器使用自己的私钥对预主密钥进行解密,得到会话密钥。
会话密钥生成
客户端和服务器使用预主密钥以及之前交换的随机数(Client Random 和 Server Random)生成一组对称加密的会话密钥。这些会话密钥将用于后续的数据加密和解密。
加密确认
客户端发送一条消息,表明后续的消息将使用会话密钥进行加密。
服务器收到后,发送一条确认消息,表明它也将使用会话密钥进行加密。
安全链接建立
握手完成,客户端和服务器之间的通信将使用会话密钥进行加密和解密,确保数据传输的安全性。
数据传输
在握手完成后,客户端和服务器之间的所有数据传输都将使用对称加密进行加密和解密。
- 数据加密:发送方使用会话密钥对要发送的数据进行加密,生成密文。
- 数据传输: 将加密后的密文发送给接收方。
- 数据解密:接收方使用相同的会话密钥对收到的密文进行解密,恢复原始数据。