网络学习(十) | 深入学习HTTPS与安全传输

news/2024/7/22 0:09:21/文章来源:https://blog.csdn.net/weixin_44435110/article/details/139278711

文章目录

  • HTTPS与HTTP的关系
    • 基本概念
    • 主要区别
    • 关系
    • 发展趋势
  • HTTPS的加密原理与SSL/TLS协议
    • 加密原理
    • 加密机制
    • 总结
  • HTTPS的握手vs三次握手
    • 三次握手
    • HTTPS握手过程
    • 区别
    • 总结
  • 证书颁发机构(CA)与数字证书的验证
    • 证书颁发机构(CA)
    • CA的主要功能
    • 数字证书
    • 数字证书的验证过程
    • 举个例子

HTTPS与HTTP的关系

HTTP(HyperText Transfer Protocol,超文本传输协议)和HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议)是用于在计算机网络上进行通信的两种协议。它们之间的关系及区别主要体现在以下几个方面

基本概念

  1. HTTP:一种无状态的应用层协议,主要用于在Web浏览器和服务器之间传输超文本数据(如HTML文档)。HTTP是明文传输的,数据在传输过程中不进行加密。
  2. HTTPS:基于HTTP协议,通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密传输,提供了数据完整性、数据保密性和身份认证等安全保障。

主要区别

  1. 安全性
  • HTTP:数据明文传输,容易被窃听和篡改。
  • HTTPS:数据经过加密传输,保护数据的机密性和完整性,防止窃听和篡改。
  1. 端口
  • HTTP:默认使用端口80。
  • HTTPS:默认使用端口443。
  1. 证书
  • HTTP:不需要证书。
  • HTTPS:需要由CA(Certificate Authority,证书颁发机构)签发的SSL/TLS证书,来验证服务器的身份。
  1. 性能
  • HTTP:由于不进行加密,传输速度相对较快。
  • HTTPS:加密和解密过程会消耗一定的资源,性能相比HTTP略低,但随着硬件和技术的发展,这种差异已经越来越小。

关系

  1. 协议层次
  • HTTPS可以看作是HTTP的一个扩展或者增强版本。它在HTTP的基础上加入了SSL/TLS层来保障安全性。
  1. 用途
  • 两者都用于Web数据传输,但HTTPS主要用于需要保护敏感信息的场景,如在线支付、个人信息提交等。
  1. 互操作性
  • 浏览器和服务器可以支持两种协议,但建议在涉及到安全敏感信息的场景下使用HTTPS,以保障数据安全。

发展趋势

随着互联网安全意识的提升,越来越多的网站开始强制使用HTTPS,以保护用户隐私和数据安全。浏览器也对未使用HTTPS的网站进行提示或警告,以引导用户注意网络安全。
总之,HTTPS是在HTTP基础上增强了安全特性,二者在数据传输上的基础功能相同,但HTTPS通过加密和身份认证机制提供了更高的安全保障。

HTTPS的加密原理与SSL/TLS协议

理解HTTPS的加密原理需要从几个关键技术和步骤入手,主要包括SSL/TLS协议的工作过程和相关的加密机制。

加密原理

HTTPS通过SSL/TLS协议对数据进行加密传输,确保数据的机密性、完整性和身份认证。其加密原理和过程大致可以分为以下几个步骤:

  1. 建立连接(握手过程)
  2. 客户端请求
    - 浏览器(客户端)发起一个HTTPS请求到服务器。
    - 客户端向服务器发送一个“ClientHello”消息,其中包含支持的SSL/TLS版本、加密算法、随机数等信息。
  3. 服务器响应
    - 服务器接收到“ClientHello”后,回复一个“ServerHello”消息,内容包括SSL/TLS版本、加密算法(从客户端支持的列表中选择)、服务器证书(包含公钥)等信息。
  4. 服务器证书验证
    - 客户端验证服务器证书的合法性,包括证书是否由受信任的CA签发、证书是否在有效期内等。如果验证失败,连接将被终止。
  5. 生成会话密钥
    - 客户端生成一个随机的“pre-master secret”(预主密钥),并使用服务器的公钥对其加密,然后发送给服务器。
    - 服务器使用自己的私钥解密获得“pre-master secret”。
    - 客户端和服务器使用“pre-master secret”及双方的随机数生成对称加密密钥(session key)。
  6. 握手完成
    - 双方使用生成的对称加密密钥加密后续的通信数据。
    - 客户端和服务器发送“Finished”消息,表明握手过程完成,接下来的通信都将使用对称密钥进行加密。
  7. 对称加密通信
  • 在握手完成后,客户端和服务器之间的通信使用对称加密算法(如AES、DES)进行加密和解密。对称加密相对非对称加密来说,速度更快,适合大量数据的加密传输。

加密机制

  1. 非对称加密
  • 用于握手阶段,用于安全地传输“pre-master secret”。
  • 公钥加密、私钥解密,通常使用RSA、ECDHE等算法。
  1. 对称加密
  • 用于握手后的数据传输阶段,用于加密和解密实际传输的数据。
  • 使用同一个密钥进行加密和解密,常用算法包括AES、DES等。
  1. 消息认证码(MAC)
  • 用于保证数据的完整性,防止数据在传输过程中被篡改。
  • 常用的MAC算法包括HMAC。
  1. 数字证书
  • 用于身份认证,确保客户端和服务器之间的通信是可信的。
  • 证书由受信任的CA机构签发,包含服务器的公钥及其身份信息。

总结

HTTPS的加密原理通过SSL/TLS协议实现,主要包括非对称加密用于安全地交换对称加密密钥,对称加密用于加密实际数据,消息认证码用于保证数据完整性,数字证书用于身份认证。通过这一系列的机制,HTTPS确保了客户端和服务器之间数据传输的安全性。

HTTPS的握手vs三次握手

HTTPS中的握手过程和网络中常讲的三次握手是两个不同的概念,尽管它们都是为了建立可靠的通信连接。

三次握手

三次握手是TCP(Transmission Control Protocol)建立连接的过程,用于确保客户端和服务器之间能够可靠地通信。以下是三次握手的详细步骤:

  1. 第一次握手(SYN)
  • 客户端向服务器发送一个SYN(synchronize)包,请求建立连接。
  • 该包包含一个初始序列号。
  1. 第二次握手(SYN-ACK)
  • 服务器收到SYN包后,向客户端发送一个SYN-ACK包,表示同意建立连接,并发送自己的初始序列号。
  1. 第三次握手(ACK)
  • 客户端收到SYN-ACK包后,向服务器发送一个ACK包,确认连接建立。
  • 连接建立后,客户端和服务器可以开始数据传输。

三次握手的主要目的是建立一个可靠的TCP连接,确保双方的接收和发送能力正常。

HTTPS握手过程

HTTPS握手过程是SSL/TLS协议的一部分,用于在客户端和服务器之间建立一个安全的通信通道。这个过程不仅仅是为了建立连接,还涉及加密算法协商、证书验证和密钥交换。主要步骤如下:

  1. 客户端请求
  • 客户端发送“ClientHello”消息,包含支持的SSL/TLS版本、加密算法、随机数等信息。
  1. 服务器响应
  • 服务器发送“ServerHello”消息,包含选择的SSL/TLS版本、加密算法、随机数,以及服务器证书。
  1. 证书验证
  • 客户端验证服务器证书的合法性。
  1. 密钥交换
  • 客户端生成“pre-master secret”,用服务器的公钥加密后发送给服务器。
  • 服务器使用私钥解密,得到“pre-master secret”。
  1. 会话密钥生成
  • 客户端和服务器根据“pre-master secret”和随机数生成对称密钥。
  1. 握手完成
  • 双方使用对称密钥加密后续通信的数据。

区别

  1. 目的不同
  • 三次握手:用于建立可靠的TCP连接。
  • HTTPS握手:用于建立安全的通信通道,并协商加密算法和密钥。
  1. 层次不同
  • 三次握手:发生在传输层(TCP)。
  • HTTPS握手:发生在应用层(HTTP)和传输层之间,通过SSL/TLS协议进行。
  1. 内容不同
  • 三次握手:主要是同步序列号和确认连接。
  • HTTPS握手:包括加密算法协商、证书验证、密钥交换等安全相关操作。

总结

尽管三次握手和HTTPS握手都涉及建立连接,但它们的目的、层次和内容完全不同。三次握手用于建立TCP连接,而HTTPS握手则用于建立安全的SSL/TLS连接。

证书颁发机构(CA)与数字证书的验证

证书颁发机构(CA)和数字证书是HTTPS和其他基于SSL/TLS的安全协议中的核心概念。它们的主要作用是通过身份验证和加密,确保网络通信的安全性和完整性。以下是对证书颁发机构和数字证书验证过程的详细解释。

证书颁发机构(CA)

**证书颁发机构(CA,Certificate Authority)**是一个受信任的第三方组织,负责签发和管理数字证书。数字证书用于验证通信方的身份,并包含公钥等信息。

CA的主要功能

  1. 签发证书
  • CA对申请者(如网站、组织)的身份进行验证,确保其真实性。
  • 验证通过后,CA将申请者的公钥和相关信息封装在一个数字证书中,并对其进行数字签名。
  1. 证书管理
  • 颁发、更新和撤销数字证书。
  • 维护证书吊销列表(CRL,Certificate Revocation List)或提供在线证书状态协议(OCSP,Online Certificate Status Protocol)服务,以供用户查询证书的有效性。
  1. 确保信任链
  • 根证书(Root Certificate)由顶级CA签发,根证书的公钥预置在操作系统和浏览器中。
  • 中级证书(Intermediate Certificate)由根CA或其他中级CA签发,形成信任链。

数字证书

数字证书是一种电子文档,用于证明持有者的身份,并包含以下信息:

  • 持有者的公钥
  • 持有者的身份信息(如域名)
  • 证书的有效期
  • 颁发该证书的CA信息
  • CA的数字签名

数字证书的验证过程

当客户端(如浏览器)与服务器(如网站)建立HTTPS连接时,会对服务器的数字证书进行验证,以确保通信的安全。以下是验证过程的主要步骤:

  1. 接收证书
  • 客户端从服务器接收数字证书。
  1. 验证证书链
  • 客户端检查证书的签发者(CA)是否可信,并通过证书链(从服务器证书到中级CA证书再到根CA证书)逐级验证。
  • 如果证书链中的任何一个证书无效,验证将失败。
  1. 验证签名
  • 客户端使用CA的公钥验证证书的数字签名,以确保证书未被篡改。
  • 这一步确保证书确实是由可信的CA签发的。
  1. 检查证书有效期
  • 客户端检查证书的有效期,确保当前日期在证书的有效期内。
  • 如果证书已过期,验证将失败。
  1. 检查证书吊销状态
  • 客户端查询CRL或使用OCSP,检查证书是否已被吊销。
  • 如果证书被吊销,验证将失败。
  1. 验证域名
  • 客户端检查证书中的域名信息,确保其与请求的服务器域名匹配。
  • 如果域名不匹配,验证将失败。

举个例子

假设用户访问https://www.example.com,浏览器将与服务器进行以下交互:

  1. 浏览器发送请求
  • 浏览器请求访问www.example.com
  1. 服务器发送证书
  • 服务器发送其数字证书给浏览器。
  1. 浏览器验证证书
  • 检查证书链,验证每个证书的签名。
  • 检查证书是否在有效期内。
  • 查询证书的吊销状态。
  • 确认证书中的域名与www.example.com匹配。
  1. 建立安全连接
  • 验证通过后,浏览器与服务器使用证书中的公钥进行密钥交换,生成对称密钥,用于后续的数据加密传输。

通过上述过程,CA和数字证书的验证确保了通信双方的身份真实性和数据传输的安全性。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改了vue3 <script setup>留言板

Лунная ночь <template><button class"edit_view_checkbox"><input type"checkbox" v-model"editshowInput" value"编辑" /></button><div class"editshowInput" v-if"editshowI…

线性回归计算举例

使用正规方程计算&#xff08;一元线性回归&#xff09; import numpy as np import matplotlib.pyplot as plt # 转化成矩阵 X np.linspace(0, 10, num 30).reshape(-1, 1) # 斜率和截距&#xff0c;随机生成 w np.random.randint(1, 5, size 1) b np.random.randint(1,…

骆驼大赛

目录 一&#xff0c;主版图 二&#xff0c;骰子 三&#xff0c;初始设置 四&#xff0c;核心规则 五&#xff0c;结算 这是适合5-8人玩的一个概率推理类的回合制桌游。 一&#xff0c;主版图 赛道由16个格子组成&#xff0c;编号为1-16。 一共7个骆驼&#xff0c;其中正…

基于 Java 的浏览器——JxBrowser使用分享

软件介绍 JxBrowser 是一个基于 Java 的浏览器&#xff0c;它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架&#xff0c;如 Swing、JavaFX 和 SWT&#xff0c;使得在 Java 应用程序中嵌入浏览器组件变得简单。 JxBrowser 是一个适用于多种用途…

MySQL索引和视图

MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能&#xff0c;而视图用于提供一个逻辑上的表结构&#xff0c;方便用户查询和操作数据。 索引是一种数据结构&#xff0c;可以加速对数据库表中的数据进行查询的速度。通过创建索引&#xff0…

基于QEMU-aarch64学习UEFI(EDK2)-7Print打印函数

1 基于QEMU-aarch64学习UEFI(EDK2)-7Print打印函数 文章目录 1 基于QEMU-aarch64学习UEFI(EDK2)-7Print打印函数1.1 Print打印函数输出字符串1.2 Print打印函数其他用法程序开发我们以 edk2-stable202302版本为准。 1.1 Print打印函数输出字符串 我们把edk2/MdeModulePkg/App…

Py列表(list)

目录 正向索引&#xff1a; 反向索引&#xff1a; 嵌套列表&#xff1a; 修改列表中的值 列表常用的方法 实例 练习&#xff1a; 正向索引&#xff1a; 从0开始&#xff0c;依次递增。第一个元素的索引为0&#xff0c;第二个元素的索引为1&#xff0c;依此类推。 列表的下标…

Windows 使用技巧

Windows 使用技巧 ①局域网内共享文件 ②CTRL Y 和 CTRL Z ①局域网内共享文件 第一步&#xff1a; 选择要共享的文件&#xff08;分享方操作&#xff09; 第二步&#xff1a; 右键打开属性&#xff0c;选择共享&#xff08;分享方操作&#xff09; 第三步&#xff1a; …

redis数据类型set,zset

华子目录 Set结构图相关命令sdiff key1 [key2]sdiffstore destination key1 [key2...]sinter key1 [key2...]sinterstore destination key1 [key2...]sunion key1 [key2...]sunionstore destination key1 [key2...]smove source destination memberspop key [count]sscan key c…

使用Word表格数据快速创建图表

实例需求&#xff1a;Word的表格如下所示&#xff0c;标题行有合并单元格。 现在需要根据上述表格数据&#xff0c;在Word中创建如下柱图。如果数据在Excel之中&#xff0c;那么创建这个图并不复杂&#xff0c;但是Word中就没用那么简单了&#xff0c;虽然Word中可以插入图表&a…

[IMX6ULL驱动开发]-Linux对中断的处理(二)

上一篇文章中&#xff0c;引入了Linux对于中断的一些简略流程以及中断抽象为具体实际形象。此文章主要是继续加深对Linux对中断的处理流程以及一些相应的数据结构。 目录 Linux对中断的扩展&#xff1a;硬件中断、软件中断 多中断处理 中断上下部处理流程 发生中断A&#…

Golang | Leetcode Golang题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; func maxDepth(root *TreeNode) int {if root nil {return 0}queue : []*TreeNode{}queue append(queue, root)ans : 0for len(queue) > 0 {sz : len(queue)for sz > 0 {node : queue[0]queue queue[1:]if node.Left ! nil {queue…

第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展&#xff1a;求二进制的每位数字 &#xff08;注意&#xff1a;进制转换、1的个数、位运算&#xff09; x…

骨折分类数据集1129张10类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;1129 分类类别数&#xff1a;10 类别名称:["avulsion_fracture",…

景源畅信:抖音小店新手小白如何做好运营?

在数字时代的浪潮中&#xff0c;抖音小店成为了众多创业者和商家的新宠。但面对激烈的市场竞争和不断变化的平台规则&#xff0c;新手小白如何才能在抖音小店的海洋里稳健航行&#xff0c;捕捉到属于自己的商机呢?接下来的内容将为你揭晓答案。 一、精准定位&#xff0c;明确目…

常见开源蜜罐系统

蜜罐系统&#xff08;Honeypot&#xff09;在信息安全领域中是一种被广泛使用的技术&#xff0c;旨在吸引和诱导黑客入侵&#xff0c;从而获取和分析攻击者的行为和手段。以下是一些常见的蜜罐系统的介绍&#xff1a; HFish开源蜜罐系统 特点&#xff1a; 多功能&#xff1a;支…

Windows hook介绍与代码演示

Windows Hook 是一种机制&#xff0c;允许应用程序监视系统或处理特定事件。它可以拦截和更改消息&#xff0c;甚至可以插入到其他应用程序的消息处理机制中。Windows 提供了多种挂钩类型&#xff0c;例如键盘挂钩、鼠标挂钩、消息挂钩等。 hook代码实现 下面是一个使用 Wind…

就说说Java初学者求职准备项目的正确方式

当下不少Java初学者也知道求职时项目的重要程度&#xff0c;但在简历上写项目和准备面试项目时&#xff0c;真有可能走弯路&#xff0c;这样的话&#xff0c;加重学习负担还是小事&#xff0c;还真有可能导致无法入职。 1 对于在校生和应届生来说&#xff0c;你去跑通个学习项…

pillow学习3

Pillow库中&#xff0c;图像的模式代表了图像的颜色空间。以下是一些常见的图像模式及其含义&#xff1a; L&#xff08;灰度图&#xff09;&#xff1a;L模式表示图像是灰度图像&#xff0c;每个像素用8位表示&#xff08;范围为0-255&#xff09;&#xff0c;0表示黑色&#…

idea的project structure下project [lauguage ]()level 没有java的sdk17选项如何导入

idea的project structure下project lauguage level 没有java的sdk17选项如何导入 别导入了&#xff0c;需要升级idea版本。idea中没有project language level没有17如何添加 - CSDN文库 别听这文章瞎扯淡 2021版本就是没有&#xff0c;直接卸载升级到最新版本就可以了。没办法…