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

相关推荐
㳺三才人子3 小时前
初探 Flask
后端·python·flask·html
星栈独行3 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Java爱好狂.4 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
陈随易4 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
装不满的克莱因瓶4 小时前
SpringBoot 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
ltl5 小时前
Transformer 原论文实验结果:为什么 28.4 BLEU 足以改写路线图
后端
excel6 小时前
为什么我推荐使用 Termius:现代 SSH 工具的完整体验
前端·后端
卷毛的技术笔记6 小时前
Java后端硬核实战:用Spring AI Alibaba+Redis给LLM装上“超强记忆中枢”
java·人工智能·redis·后端·spring·ai·系统架构
IT_陈寒7 小时前
Java的Optional差点让我掉坑里,这几个坑你别踩
前端·人工智能·后端
子兮曰8 小时前
Harness 驾驭工程深度教程:从 AGENTS.md 到全链路 AI 编码基础设施
前端·后端·ai编程