浅析HTTP与HTTPS的区别

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、采用数字证书来保证客户端的真实性,避免中间人伪造成服务器

相关推荐
小杨4041 小时前
springboot框架项目实践应用八(validation自定义校验)
spring boot·后端·架构
Cloud_.1 小时前
Spring Boot整合Sa-Token极简指南
java·后端·springboot·登录校验
冬冬小圆帽1 小时前
防止手机验证码被刷:React + TypeScript 与 Node.js + Express 的全面防御策略
前端·后端·react.js·typescript
陈明勇2 小时前
chromem-go:Go 语言 RAG 应用的高效轻量级向量数据库
后端·go
掘金詹姆斯2 小时前
从Guava缓存源码提炼业务开发心法:Get方法暗藏的12个高并发设计哲学
后端
零零壹112 小时前
理解Akamai EdgeGrid认证在REST API中的应用
前端·后端
uhakadotcom2 小时前
DataWorks邮件外发完全指南:从零开始实现数据自动推送(2025最新实践)
后端·面试·github
qq_5470261792 小时前
Spring Boot 实现多数据源配置
java·spring boot·后端
魔术师卡颂2 小时前
一次排查 Cursor bug 的经历
前端·人工智能·后端