HTTP协议
超文本传输协议HTTP(Hypertext Transfer Protocol)是一个用于在客户端(通常是浏览器)和服务器之间传输数据的协议。它是Web通信的基础协议,主要用于在客户端和服务器之间交换各种资源(如HTML文件、图片、视频等)。
HTTP协议的局限性
1、明文传输
- HTTP使用明文传输数据,任何中间人都可以轻易截获并查看通信内容
- 无法保护敏感信息(如密码,银行卡号等)
2、无法验证通信方的身份
- HTTP协议无法确认通信对方是否是可信的服务器,容易遭受黑客的攻击
3、无法保证数据的安全性
- HTTP协议无法检测数据是否被篡改
HTTPS协议
HTTPS协议就是在HTTP协议的基础上添加了TLS/SSL协议,来对数据进行加密,保证数据的机密性和完整性。
二者的区别
1、数据传输的安全性:HTTP数据使用明文传输,容易被监听和篡改。HTTPS通过TLS和SSL协议对数据进行加密传输,保证了数据的机密性和完整性。
主要手段包括:在建立连接时使用非对称加密,在家里连接以后使用对称加密,通过服务器证书来确认服务器的身份
2、默认端口号不同:HTTP协议使用80端口,HTTP协议使用443端口
3、性能:HTTP无需加密,建立连接速度更快,HTTPS需要加上TLS协议进行加密传输,增加了计算开销,但是差距很小。
4、加密方式:HTTP无加密机制,HTTPS使用混合加密的方式 (对称加密(建立连接前)+非对称加密(建立连接时))
HTTPS建立连接过程
HTTPS协议分为HTTP+TLS两个过程
:
1、HTTP:负责数据的传输
2、TLS/SSL:负责加密、身份认证和数据完整性校验
TLS 和 SSL协议的基本流程:
1、客户端向服务器索要并且验证服务器的公钥
2、双方生成 会话秘钥
3、使用 会话秘钥 进行加密通信
TLS 四次握手的流程:
1、客户端向服务器发起加密通话请求,并且包含以下信息:
- 客户端支持的 TLS 版本
- 客户端支持的 加密算法列表
- 客户端生成的 随机数(作为会话秘钥之一)
2、服务器收到客户端请求后,回复请求,包含以下信息:
- 确认通信的 TLS 版本
- 确定通信使用的 加密算法
- 客户端生成 随机数(作为会话秘钥之一)
- 将服务器的
公钥
发送给客户端,客户端根据公钥来确认服务器的身份
3、客户端验证证书的真实性,并且回复服务器,包括以下信息:
- 客户端向浏览器中的CA来验证服务器数字证书的真实性,如果真是就进行以下操作
- 取出服务器的公钥,并使用公钥加密报文进行回复
- 生成 第三个随机数(作为会话密钥之一)
- 通知服务器使用会话密钥进行加密
4、服务器对客户端进行确认,并使用会话密钥进行通信,包括以下信息:
- 通知客户端,后续通信使用
会话密钥
进行加密(密钥为三个随机数) - 通知客户端 TLS 握手结束
注意:在握手后的通信中,服务器和客户端使用协商好的加密算法和会话密钥进行加密传输,通过对称加密的方式进行传输,只有在TLS握手时,使用非对称加密的方式进行通信,这么做的目的是为了防止被中间人监听。
重点分析
1、TLS 使用四次握手
的方式来保证 HTTP 协议的安全性
2、使用非对称加密的方式
来交换会话密钥,来防止会话密钥被中间人监听和截获
3、采用3次随机数作为会话密钥
4、使用对称加密的方式
进行通信,来提高通信的性能
5、采用数字证书
来保证客户端的真实性,避免中间人伪造成服务器