目录
- 1. 简介
- 2. TLS 握手过程
- 3. 常见的加密算法
- 3.1 对称加密算法
- 3.2 非对称加密算法
1. 简介
HTTPS在HTTP的基础上引入了一个TLS层,采用密文进行传输,结合对称加密技术和非对称加密技术来实现数据的安全性和完整性。
客户端会生成随机密钥,并使用服务端的公钥加密后再传给服务端。根据非对称加密算法,公钥加密的消息仅能通过私钥解密,这样服务端解密后,双方就得到了相同的密钥,再用它加密应用消息。(公钥如何获取:CA证书里)
- CA证书:保证密钥发售者身份的真实性
- 非对称加密技术:保证消息不被冒充
- 对称密钥传送:保证消息不被泄露
- 为什么要采用非对称加密技术:保证密钥分发给通信双方的安全性
2. TLS 握手过程
- 第一次握手:客户端首先会发一个「Client Hello」消息。消息里面有客户端使用的 TLS 版本号、支持的密码套件列表,以及生成的随机数(Client Random)
- 第二次握手:当服务端收到客户端的「Client Hello」消息后,会发送 「Server Hello」消息:包含确认 TLS 版本号是否支持,和从密码套件列表中选择一个密码套件,以及生成随机数(Server Random)。然后,服务端为了证明自己的身份,会发送「Server Certificate」给客户端,这个消息里含有数字证书。最后,服务端发了「Server Hello Done」消息,目的是告诉客户端,我已经把该给你的东西都给你了。客户端拿到证书后, 使用CA 公钥确认服务器的数字证书的真实性。
- 第三次握手:如果证书没有问题(通过 CA 的公钥解密),客户端会从数字证书中取出服务器的公钥,生成一个新的随机数 (pre-master),用服务器的 RSA 公钥加密该随机数。向服务器发送如下信息:随机数、加密算法改变通知、客户端握手结束通知。
- 第四次握手:服务端收到后,用 RSA 私钥解密,得到客户端发来的随机数。双方根据已经得到的三个随机数,生成会话密钥(Master Secret),它是对称密钥,用于对后续的 HTTP 请求/响应的数据加解密。然后,向客户端发送最后的信息:加密通信算法改变通知、服务器握手结束通知,表示服务器的握手阶段已经结束。
3. 常见的加密算法
3.1 对称加密算法
在对称加密算法中,加密和解密使用的是同一个密钥
AES (Advanced Encryption Standard):
AES是目前最广泛使用的对称加密标准之一,提供了128、192和256位的密钥长度,因其高度的安全性和效率,在许多安全协议和系统中被采用。
DES (Data Encryption Standard):
DES是较早的加密标准,使用56位密钥,因其密钥长度较短,已被认为不够安全,容易受到暴力破解攻击,已逐渐被AES所取代。
非对称加密算法
3.2 非对称加密算法
使用一对密钥,一个公钥用于加密,一个私钥用于解密
RSA (Rivest-Shamir-Adleman):
RSA是最早和最著名的非对称加密算法之一,广泛用于数据传输和数字签名。RSA的安全性基于大数分解的难题。
ECC (Elliptic Curve Cryptography):
ECC是基于椭圆曲线数学的一种加密技术,相比于RSA,ECC可以在较短的密钥长度下提供相同或更高的安全性,在移动设备和IoT设备中特别受欢迎。