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

相关推荐
小华同学ai8 分钟前
千万别错过!这个国产开源项目彻底改变了你的域名资产管理方式,收藏它相当于多一个安全专家!
前端·后端·github
Vowwwwwww11 分钟前
GIT历史存在大文件的解决办法
前端·git·后端
捡田螺的小男孩24 分钟前
京东一面:接口性能优化,有哪些经验和手段
java·后端·面试
艾露z32 分钟前
深度解析Mysql中MVCC的工作机制
java·数据库·后端·mysql
前端付豪41 分钟前
揭秘网易统一日志采集与故障定位平台揭秘:如何在亿级请求中1分钟定位线上异常
前端·后端·架构
陈随易1 小时前
Lodash 杀手来了!es-toolkit v1.39.0 已完全兼容4年未更新的 Lodash
前端·后端·程序员
未来影子1 小时前
SpringAI(GA):Nacos3下的分布式MCP
后端·架构·ai编程
Hockor1 小时前
写给前端的 Python 教程三(字符串驻留和小整数池)
前端·后端·python
码农之王1 小时前
记录一次,利用AI DeepSeek,解决工作中算法和无限级树模型问题
后端·算法
Wo3Shi4七1 小时前
消息不丢失:生产者收到写入成功响应后消息一定不会丢失吗?
后端·kafka·消息队列