计算机网络基础知识(七)—— 什么是HTTPS协议?你听我“瞎掰”

news2025/4/7 4:31:51

文章目录

  • 01 | 工作原理
  • 02 | SSL/TLS协议
    • 2.1 | 握手协议
    • 2.2 | 更换密码协议(Change Cipher Spec Protocol)
    • 2.3 | 警告协议(Alert Protocol)
    • 2.4 | 应用数据协议(Application Data Protocol)
  • 03 | 加密算法
    • 3.1 | 对称加密算法
    • 3.2 | 非对称加密算法
  • 04 | 总结

HTTPS是一种基于TLS/SSL协议的安全传输协议,用于保障网络通信过程中的机密性、完整性、身份认证和不可否认性。
在HTTP通信中,数据包裹在报文中明文传输,安全性较低。而HTTPS使用了TLS/SSL协议对通信过程进行加密和认证,从而提高通信的安全性。
HTTPS是一种安全的网络传输协议,可以确保通信过程中的数据安全和可信。它广泛应用于电子商务、网上银行等需要保密性的场景,成为了互联网上的重要保障手段。

01 | 工作原理

在这里插入图片描述

HTTPS的工作原理涉及到握手协议、数字证书验证、加密解密等多个方面,下面先了解一下HTTPS的工作原理

当客户端和服务器建立HTTPS连接时,会执行以下流程:

在这里插入图片描述

当客户端(如浏览器)和服务器之间建立HTTPS连接时,会在传输层(Transport Layer)之上创建一个安全通道,该通道包括以下四个基本步骤:

在这里插入图片描述

  1. 客户端发起SSL/TLS连接请求:客户端向服务器发起连接请求,告诉服务器想要建立一个SSL/TLS加密通道;

  2. 服务器响应SSL/TLS连接请求:服务器收到客户端的请求后,回复自己的身份信息和公钥等证书。客户端验证服务器的身份,若验证通过则接受服务器提供的公钥;

  3. 客户端向服务器发送加密数据:客户端使用服务器提供的公钥对需要传输的数据进行加密,并将加密后的数据传输给服务器;

  4. 服务器解密并响应客户端请求:服务器使用自己的私钥对客户端发送的加密数据进行解密,并对客户端的请求做出相应的响应;

02 | SSL/TLS协议

在这里插入图片描述

TLS/SSL协议(Transport Layer Security/Secure Socket Layer)是实现HTTPS加密通信的核心技术,需要深入学习TLS/SSL协议中包括握手协议、证书验证等在内的各个部分,掌握其基本原理和实现方法。

SSL/TLS协议主要包括以下几个部分:

  1. 握手协议:客户端和服务器之间通过通信的方式协商加密算法、确定对称密钥等;

  2. 更改密码协议:客户端和服务器之间通过通信的方式确认切换到加密传输模式;

  3. 警告协议:用于在发生协议运行错误时通知对方;

  4. 应用数据协议:基于已经协商完成加密设置的通道上进行的应用数据传输

其中,握手协议是SSL/TLS协议中最重要的部分之一。在握手协议中,客户端和服务器首先会协商加密算法,包括非对称加密算法和对称加密算法,并确定使用哪些算法进行加密传输。接下来,客户端和服务器会采用非对称加密算法来交换密钥,并由双方生成会话密钥用于对称加密算法的加解密操作

2.1 | 握手协议

在这里插入图片描述

SSL握手协议分为四个部分:客户端hello、服务器hello、证书和密钥协商。流程如下:

  • 客户端hello:客户端向服务器发出请求,并发送包括支持的加密算法、随机数生成器以及其他信息的“hello”消息。

  • 服务器hello:服务器向客户端回复,并发送包括支持的加密算法、随机数生成器以及其他信息的“hello”消息。

  • 证书验证:服务器返回它的数字证书,这个数字证书通常是由一个受信任的第三方数字证书颁发机构(CA)签发的。客户端使用预装的根证书或中间证书验证证书的合法性,确保连接到的是真实的服务器。证书验证通过后,客户端可以获取服务器的公钥。

  • 密钥协商:客户端使用服务器公钥加密一个随机值,称之为会话密钥,用于加密通信。服务器使用自己的私钥解密该随机值,获得客户端会话密钥。

2.2 | 更换密码协议(Change Cipher Spec Protocol)

在这里插入图片描述

用于确保在通信过程中任何恶意用户不能破译密码并窃取另一方使用密钥加密的后续数据。更换密码协议主要包括以下步骤:

  1. 客户端向服务器发送更换服务端加密密码规范记录。

  2. 服务器确认收到更改密码规范记录,并发送更改客户端加密密码规范记录。

  3. 客户端确认收到更改密码规范记录。

当上述操作完成之后,客户端和服务器即使用新的加密规范来加密和传输数据,从而确保了通信过程中数据的安全性和完整性。

更改密码协议并不是一个独立的协议,而是作为SSL/TLS协议的一个子协议在握手协议中进行的。更改密码协议可以确保任何已经拦截通信的第三方无法破解密码,并使用旧有的秘密密钥来进行解密等操作。

需要注意的是,更改密码协议并不影响对称加密算法的选取和会话密钥的生成,只是在通信过程中更新了对称加密算法所使用的密钥。更改密码协议的重要性在于能够确保SSL/TLS协议在通信过程中及时调整加密模式和密钥,从而提升通信过程的安全性和可靠性

2.3 | 警告协议(Alert Protocol)

在这里插入图片描述

用于在通信过程中传输各种警告信息,以提醒双方注意可能存在的安全问题或者协议运行错误等情况。警告协议主要包括以下两种类型的警告信息:

  1. 警告级别(Alert Level):警告级别分为致命警告和警告两种类型。致命警告用于提示严重的安全问题(例如证书验证失败),这种警告可能导致通信终止。而警告则表示一些非严重问题(例如扩展情况下的未知功能码)。

  2. 警告描述(Alert Description):对于每一种警告级别,SSL/TLS协议规定了一组警告描述信息,包括如下内容:

    • 消息认证码(MAC)故障

    • 解密故障

    • 认证失败

    • 等等

在使用SSL/TLS协议进行通信时,任何一个参与方都可能向另一方发送警告信息,以更好地保证数据的安全性和完整性。例如,在客户端和服务器之间建立SSL/TLS连接的过程中,如果服务器收到的客户端请求中包含有错误的证书或者无法验证的数字签名等问题,就可以通过警告协议向客户端发送相应的警告信息,以便客户端能够及时做出相应的响应和处理。

2.4 | 应用数据协议(Application Data Protocol)

在这里插入图片描述

是在握手协议和警告协议之后的最后一步协议。应用数据协议主要用于实际传输数据,包括SSL/TLS连接的加密数据和未加密数据

在SSL/TLS协议中,应用数据协议使用对称加密算法来对数据进行加密,输入的密钥是通过握手协议中的密钥交换协议生成的。对称加密算法可以提供高效的加密和解密速度,并且对于大多数应用场景来说,其安全性已经足够强大。而且,应用数据协议可以支持多种加密算法,如AES、DES、3DES等等,以满足不同安全需求。

因为应用数据协议是建立在握手协议和警告协议上的,所以在应用数据协议传输数据之前,需要确保握手协议已经正确执行,并且确保密钥协商完成。如果密钥协商过程出现问题,比如证书验证失败,将导致无法建立SSL/TLS连接,从而无法使用应用数据协议传输数据。

另外,应用数据协议还能够支持压缩数据,以便更有效地传输。同时,在传输数据时,SSL/TLS协议还支持分段传输,以及并发处理数据(即同时传输多条数据)等高级功能。这些功能能够进一步增强SSL/TLS协议的安全性和效率,适用于通信过程中各种应用场景。

03 | 加密算法

HTTPS使用了多种加密算法来保证数据传输的安全性,如对称加密算法、非对称加密算法、哈希算法等,需要熟悉这些加密算法的基本原理和使用方法。

在这里插入图片描述

数字证书是一种电子文件,其中包含与网站相关的证书信息,例如网站的名称、公钥等。数字证书可以由权威机构颁发,用于识别和验证网站的身份。当客户端连接到一个HTTPS网站时,服务器会返回其数字证书给客户端,以此来证明自己身份的真实性。客户端会使用预装的根证书或中间证书验证证书的合法性,确保连接到的是真实的服务器。

3.1 | 对称加密算法

在这里插入图片描述

是一种使用同样的密钥来进行加密和解密的加密算法,也被称为共享秘密加密。在对称加密算法中,发送方使用密钥对明文进行加密得到密文,接收方收到密文后再使用同样的密钥对密文进行解密得到明文。

对称加密算法具有速度快、效率高和安全性平衡(因为如果坏人拿到这份共同的密钥,安全性就几乎荡然无存了)等特点,因此广泛应用于网络通信、数据传输、文件加密等领域。常见的对称加密算法有AES、DES、3DES等。

在对称加密算法中,密钥是关键。密钥长度越长,破解难度越大,但也会相应地带来更高的加解密成本。同时,密钥的管理和分配也是一个重要的问题,需要确保密钥的安全性,不能被恶意攻击者获取。

对于对称加密算法,还有一个重要的问题就是密钥交换。在通信双方建立连接之前,需要协商出一个共享的密钥并确保密钥的安全性。在对称密钥交换中,有以下两种常见的方法:

  1. 预共享密钥:预共享密钥是指在通信双方建立连接之前,通过其他渠道将密钥交给对方。这种方法相对安全,但密钥分配较为繁琐。

  2. 密钥交换协议:密钥交换协议是一种在通信双方建立连接过程中协商密钥的方法,常见的密钥交换协议有Diffie-Hellman、RSA等。

总之,对称加密算法是一种高效、快速、安全的加密算法,在各种应用领域都得到了广泛的应用。通过选择合适的密钥长度和密钥交换方法,可以保证通信数据的机密性和安全性。

3.2 | 非对称加密算法

在这里插入图片描述

也称为公钥加密算法,是一种使用不同的密钥来进行加密和解密的加密算法。在非对称加密算法中,每个参与者都有一对密钥:公钥和私钥。公钥可以公开,而私钥必须保密。发送方用接收方的公钥对明文进行加密得到密文,接收方用自己的私钥对密文进行解密得到明文

非对称加密算法具有密钥管理与分发和验证身份等优点,广泛应用于数字签名、密钥交换协议、数字证书等领域。常见的非对称加密算法有RSA、DSA、ECC等。

在非对称加密算法中,公钥可以公开,但私钥必须保密;因此,在数学上设计一个安全的非对称加密算法是非常困难的。虽然公钥加密能够有效地达到“加密速度慢、加密强度高”的效果,但它的加密复杂度是对称加密算法的成千上万倍,不适用于大规模数据的加密。

在非对称加密算法中,还有一个重要的问题就是密钥交换。在通信双方建立连接之前,需要通过一些方法将公钥传输给对方。常见的方法有通过密钥交换协议(如Diffie-Hellman)虽然不公开私钥,但可以让通信双方共同协商出一个对称密钥,从而避免中间人攻击。

总之,非对称加密算法是一种安全、可靠、实用的加密算法。它具有密钥管理与分发和身份验证等优点,但也存在着加密速度慢、加解密效率低、密钥交换等缺陷。需要按照实际需求合理选择加密算法与密钥长度,并结合对称加密算法等加密技术,从而达到更好的保护通信安全的效果。

04 | 总结

在这里插入图片描述

总结一下,HTTPS具体的步骤如下:

  1. 客户端向服务器请求SSL连接,此时客户端发送一个“Client Hello”消息,其中包括了:

    • 支持的SSL或TLS协议版本号

    • 生成的随机数

    • 支持的加密算法列表

  2. 服务器收到“Client Hello”消息后,向客户端发送一个“Server Hello”消息,其中包括了:

    • 确认协议版本号

    • 生成的随机数

    • 选择的加密算法

    同时,服务器还会向客户端发送其公钥和证书。

  3. 客户端对服务器返回的证书进行验证,包括以下步骤:

    • 检查证书是否过期

    • 检查证书是否在可信的证书颁发机构(CA)列表中

    • 验证证书中的数字签名是否正确

    如果证书验证通过,则客户端使用服务器发送的公钥来加密一个随机值,并将其发送给服务器。

  4. 服务器使用自己的私钥来解密客户端发送的随机值,并使用该随机值生成对称密钥。服务器将该密钥发送给客户端,并且从此以后使用该密钥来加密所有的数据。

  5. 客户端收到服务器发送的密钥后,会根据之前协商过的加密算法生成一个“Finished”消息,并使用对称密钥来加密该消息,然后发送给服务器。

  6. 服务器接收到来自客户端的“Finished”消息后,也会根据之前协商过的加密算法生成一个“Finished”消息,并使用对称密钥来加密该消息,然后发送给客户端。

  7. 安全通道建立完成后,双方可以开始进行加密通信了,客户端和服务器使用对称密钥来加密所有的数据,从而保证传输的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSRF及SSRF漏洞案例讲解(29)

讲解一下这个图片,用户在浏览器登陆银行界面发送一个请求,通过转账,转载的数据包假如是下面那串字符,黑客呢就自己一个网站或控制一个网站,去写入一个代码,这个代码就是请求这个数据包,刚好这个…

人工智能学习07--pytorch19--目标检测:常见指标(mAP计算+coco评价标准)

怎样才算正确检测到一个目标? 什么是IOU: https://blog.csdn.net/qq_51831335/article/details/125719420 mAP计算方法: 假设针对某一类别的AP情况 TP:预测正确的边界框个数。预测边界框与GT-box的IOU>0.5 FP:假…

原工程运行正常,重新复制一份后再 npm install 后再运行就报错的解决办法

原工程,运行正常 将刚刚的工程复制一份呢,重新 npm install 再 npm run serve 就报错 出现这个问题十之八九都是依赖的问题。有可能是因为这个工程里面之前安装过一些东西,后来莫名其妙的就把 package.json 里面相关的依赖给删掉了。但由于原…

lwIP 开发指南

目录 lwIP 初探TCP/IP 协议栈是什么TCP/IP 协议栈架构TCP/IP 协议栈的封包和拆包 lwIP 简介lwIP 源码下载lwIP 文件说明 MAC 内核简介PHY 芯片介绍YT8512C 简介LAN8720A 简介 以太网接入MCU 方案 lwIP 无操作系统移植lwIP 带操作系统移植ARP 协议ARP 协议的简介ARP 协议的工作流…

uni-app项目运行和项目结构目录讲解

UNI-APP学习系列 uni-app项目运行和项目结构目录讲解 文章目录 UNI-APP学习系列前言总结 前言 UNI-APP学习系列之uni-app项目运行和项目结构目录讲解 运行项目 使用 pnpm 包管理工具 # 查看是否安装pnpmpnpm -v# 无则安装npm install -g pnpm下载依赖 pnpm i运行pnpm dev:h…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…

python基础知识(二):变量和常用数据类型

目录 1. 变量1.1 变量的定义1.2 变量的命名规则 2. 常用数据类型2.1 字符串2.1.1 字符串的常用方法2.1.1.1 title()方法:将字符串中的单词首字母大写2.1.1.2 upper()方法:将字符串中的单词字母全大写2.1.1.3 lower()方法:将字符串中的单词字母…

什么是分段路由?如何在网络中实施分段路由?

在计算机网络中,分段路由(Subnetting)是一种将一个大的网络划分为多个较小子网的技术。它允许网络管理员更有效地分配 IP 地址和管理网络流量。本文将详细介绍分段路由的概念、原理以及如何在网络中实施分段路由。 1. 分段路由的概念 分段路…

【深入浅出Spring Security(一)】Spring Security的整体架构

Spring Security的整体架构 一、整体架构认证(Authentication)AuthenticationManagerAuthentication登录后的数据保存(SecurityContextHolder) 授权(Authorization)ConfigAttribute 二、总结 这篇博客所述主…

CISCN 2023 初赛 pwn——Shellwego 题解

这是一个用go语言写的elf程序,没有PIE。这也是本蒟蒻第一次解go pwn题,故在此记录以便参考。 而且,这还是一个全部符号表被抠的go elf,直接面对一堆不知名的函数实在有些应付不来,因此在比赛时委托逆向的队友把符号表…

2023/5/28总结

static static:静态,可以修饰成员方法,成员变量。(是所有成员共享的) static修饰的特点: 被类的所有对象共享(判断是否使用静态关键字的条件)可以通过类名和对象名调用在定义对象时,…

图【数据结构】

目录 一、图的定义和基本术语 二、图的类型定义 三、图的存储结构 1、数组(邻接矩阵)表示法 二、邻接表(链式)表示法 三、图的邻接表的存储表示 四、十字链表与邻接多重链表 (1)十字链表 &#xff…

113.删除有序数组中的重复项 removeDuplicatesFromSortedArray

文章目录 题目描述解题思路代码详解运行截图 题目描述 题目链接 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元…

Java中ReentrantLock的概念深入理解

ReentrantLock和Synchronized的区别 核心区别 ReentrantLock是一个类,Synchronized是Java中的一个关键字。 两者都是JVM层面实现互斥锁的方式 效率区别 线程竞争激烈推荐使用ReentrantLock去实现,不存在锁竞争观念; Synchronized是存在锁升…

大数据Doris(二十九):Broker Load导入HDFS csv 格式数据并提取文件路径中的分区字段

文章目录 Broker Load导入HDFS csv 格式数据并提取文件路径中的分区字段 一、创建Doris表 二、准备HDFS数据<

蚁群算法(解决TSP问题)

一、概述 蚂蚁在寻找食物源时&#xff0c;会在其经过的路径上释放一种信息素&#xff0c;并能够感知其它蚂蚁释放的信息素。信息素浓度的大小表征到食物源路径的远近&#xff0c;信息素浓度越高&#xff0c;表示对应的路径距离越短。通常&#xff0c;蚂蚁会以较大的概率优先…

chatgpt赋能python:Python文件复制粘贴到另一个目录

Python文件复制粘贴到另一个目录 Python是一种通用编程语言&#xff0c;可用于各种任务&#xff0c;包括文件复制和移动。在本文中&#xff0c;我们将探讨Python中的文件复制粘贴到另一个目录。 为什么要使用Python进行文件复制粘贴&#xff1f; Python提供了强大的文件处理…

case when用法

case when的基本使用&#xff1a; Case when 的用法: 一旦满足了某一个WHEN, 则这一条数据就会退出CASE WHEN , 而不再考虑 其他CASE。 Case when 的用法 -- -搜索Case函数: Case函数(Case搜索函数): 判断表达式的真假,如果为真,返回结果;如果为假,返回else值;如果未定义el…

批处理文件(.bat)启动redis及任何软件(同理)

批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件&#xff08;.bat&#xff09;启动Redis&#xff0c;请按照以下步骤进行操作&#xff1a; 打开文本编辑器&#xff0c;如记事本。 在编辑器中输入以下内容&#xff1a; 将文件保存…

70.爬楼梯问题+746.使用最小花费爬楼梯

目录 一、70.爬楼梯问题分析 二、代码 三、746.使用最小花费爬楼梯分析 四、代码 一、70.爬楼梯问题分析 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int climbStairs(int n) {if(n1||n2)return n;vector<int>dp(n1);dp…