IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP与HTTPS的区别 -> 正文阅读

[网络协议]HTTP与HTTPS的区别

?📒个人主页:热爱生活の李📒
???感谢大家阅读本文,同时欢迎访问本人主页查看更多文章???
🙏本人也在学习阶段,如若发现问题,请告知,非常感谢🙏

基本概念

HTTP
超文本传输协议,是一个基于请求与响应,无状态的应用层协议,常基于TCP传输数据,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议。
HTTPS
是以安全为目标的HTTP通道,就是HTTP的安全版,即在HTTP下加入SSL,因此加密的详细内容就需要SSL。

区别
HTTP协议传输的数据都是没有加密的,也就是明文的,因此使用HTTP协议传输隐私信息不安全,为了保证这些隐私数据能够加密传输,于是Netscape公司设计了SSL协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。简单的说HTTPS = HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全。
HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
HTTP与HTTPS使用的安全不同的连接方式,用的端口也不同,HTTP是80,HTTPS是443
HTTP连接很简单无状态
HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全

HTTPS缺点
HTTPS协议多次握手,导致页面的加载时间延长近50%
HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗
申请SSL证书需要钱,功能越强大的证书费用越贵
SSL涉及的安全算法会消耗CPU资源,对服务器资源消耗较大

SSL

SSL协议的三个特性
1、保密:在握手协议中定义了会话密钥后,所有的消息都被加密
2、鉴别:可选的客户端认证和强制的服务端认证
3、完整性:传送的消息包括消息完整性检查(使用MAC)

SSL的工作原理
握手协议 :握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。
记录协议 :记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:
1、保密性:使用握手协议的秘密密钥实现
2、完整性:握手协议定义了MAC。用来保证消息完整性
警报协议
客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥

SSL握手协议总过程(访问w3school为例)

在这里插入图片描述

SSL建立第一阶段

客户端发送ClientHello消息到服务端,服务端收到ClientHello消息后,再发送ServerHello消息回应客户端

在这里插入图片描述

ClientHello
客户端版本
客户端随机数
会话ID
加密套件
压缩方法

在这里插入图片描述

ServerHello
服务器版本Version
服务器随机数
加密套件
会话ID
压缩算法
拓展包

这个阶段之后,
1、客户端和服务端知道了SSL版本
2、密钥交换、信息验证、加密算法
3、压缩方法
4、有关密钥生成的两个随机数

SSL建立第二阶段

服务器启动SSL握手第二阶段:
1、证书:服务器将数字证书和到根CA整个链发给客户端,使客户端能用到服务器证书中的服务器公钥认证服务器
2、服务器密钥交换(可选):这里看密钥交换算法而定
3、证书请求:服务端可能会要求客户自身进行验证
4、服务器握手完成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SSL建立第三阶段

客户机启动SSL握手第三阶段
1、证书:为了对服务器证明自己,客户要发送一个证书信息
2、客户机密钥交换:这里客户端将预备主密钥发送给服务端,注意这里会使用服务端的公钥进行加密
3、证书验证:对预备密钥和随机数进行签名

在这里插入图片描述

SSL建立第四阶段

建立起一个安全的连接,客户端发送一个Change Cipher Spec,并且把协商得到的CipherSuite拷贝到当前连接的状态之中。然后客户端用新的算法、密钥参数发送一个Finished消息,这条消息可以检查密钥交换和认证过程是否已经成功。其中包括一个校验值,对客户端整个握手过程的消息进行校验。服务器同样。握手过程完成,客户端和服务起可以交换应用层数据进行通信。

在这里插入图片描述

消息验证代码(HMAC)和TLS数据完整性

当服务器或客户端使用主密钥加密数据时,它还会计算明文数据的校验和(哈希值),这个校验和称为消息验证代码(MAC)。然后在发送之前将MAC包含在加密数据中。密钥用于从数据中生成MAC,以确保传输过程中攻击者无法从数据中生成相同的MAC,故而MAC被称为HMAC(哈希消息认证码)。另一方面,在接收到消息时,解密器将MAC与明文分开,然后用它的密钥计算明文的校验和,并将其与接收到的MAC进行比较,如果匹配,那我们就可以得出结论:数据在传输过程中没有被篡改。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 12:14:59  更:2022-05-10 12:15:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:43:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码