HTTPS 的加密流程

目录

一、HTTPS是什么?

二、为什么要加密

三、"加密" 是什么

四、HTTPS 的工作过程 

1.对称加密

2.非对称加密

3.中间人攻击

4.证书

总结


一、HTTPS是什么?

HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 协议之上的安全协议,用于在客户端和服务器之间通过互联网传输数据的加密和身份验证。它使用 SSL/TLS (Secure Sockets Layer/Transport Layer Security) 协议来保护数据的安全性,可以防止数据被窃听、篡改或伪造。

HTTP 协议是一种明文传输的协议,数据在传输过程中不加密,容易被黑客截获并窃取敏感信息。而使用 HTTPS 协议进行数据传输,可以通过 SSL/TLS 协议将数据加密,使得数据在传输过程中无法被黑客窃取,保护了数据的安全性。

HTTPS 还可以对服务器端的身份进行验证,防止伪造服务器,保护了双方的身份安全。在 HTTPS 和 SSL/TLS 协议的支持下,现在许多电子商务、银行、社交网络和其他网站都采用 HTTPS 协议来保护用户的隐私和安全。

二、为什么要加密

HTTP 是一种应用层协议,是用于在 Web 应用程序之间传递数据的标准方式,但是 HTTP 本身并不安全,因为 HTTP 在传输数据时是明文传输的,攻击者可以很容易地截获和窃取数据。这就会导致以下不安全的情况:

1. 窃取敏感信息: 攻击者可以窃取用户登录信息、信用卡信息、银行账户信息等敏感信息。

2. 篡改数据:攻击者可以在传输过程中篡改数据,比如,将网页内容篡改成恶意代码,欺骗用户下载恶意文件等。

3. 伪造身份:攻击者可以伪造身份,冒充网站或服务器,从而欺骗用户提供个人信息或敏感信息。

HTTPS 是在 HTTP 协议基础上加入了 SSL/TLS 加密机制,对 HTTP 的传输过程进行加密,可以保护数据的安全性和完整性,解决了 HTTP 明文传输所带来的安全问题。因此,在需要保护用户隐私信息或者防止黑客攻击时,使用 HTTPS 更加安全可靠。

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等), 那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改.这就是运营商劫持
点击 "下载按钮", 其实就是在给服务器发送了一个 HTTP 请求, 获取到的 HTTP 响应其实就包含了该 APP的下载链接. 运营商劫持之后, 就发现这个请求是要下载天天动听, 那么就自动的把交给用户的响应给篡改 成 "QQ浏览器" 的下载地址了

 三、"加密" 是什么

加密就是把 明文 (要传输的信息)进行一系列变换, 生成 密文 .
解密就是把 密文 再进行一系列变换, 还原成 明文 .
在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为 密钥 (正确发音 yue 四声, 不过大家平时都读作 yao 四声)

四、HTTPS 的工作过程 

既然要保证数据安全, 就需要进行 "加密".
网络传输中不再直接传输明文了, 而是加密之后的 "密文".
加密的方式有很多, 但是整体可以分成两大类: 对称加密 和 非对称加密

1.对称加密

进行安全传输,其中最核心的技术就是加密,而其中最为简单、有效的方法就是“对称加密”。对称加密的方式如下:

明文 +  key  =>  密文。加密的过程

密文 +  key  =>  明文。解密的过程

其中key就表示密钥,是一串数字或者字符串。同一个密钥可以用来加密也可以用来解密,因此就称其为“对称密钥”。但是其保证安全性的前提是,不能让密钥被他人知道,如果密钥被一些不法之徒获取,那么这个加密也就形同虚设了。

下面我们用图片演示过程及信息:

但是问题来了,客户端需要自己生成一个密钥,如何把这个密钥告诉给服务器呢?

答案是:网络传输

这样的话看起来我们是需要针对key也进行加密一下  所以接下来我们引用了非对称加密.

2.非对称加密

非对称加密就是,生成一对密钥,一个叫公钥(pub)一个叫密钥(pri)。加密方式如下:

明文 + 公钥 => 密文。

密文 + 私钥 => 明文。

其中,明文也可以使用私钥加密,密文可以使用私钥解密。公钥是可以公开的,私钥是私密的。

所以我们接下来的目标就是客户端把自己的key安全传输到服务器

首先服务器生成一对公钥私钥。其中客户端持有公钥,服务器持有私钥。由于客户端的公钥从服务器获取,因此黑客也可以知道公钥。但是由于私钥只有服务器才知道,不会告诉别人。因此就算黑客知道了公钥,也无法解密。

接着客户端使用公钥来对对称密钥进行加密,传输给服务器,服务器通过私钥进行解密,获得对称密钥。此时客户端就可以使用这个对称密钥进行后续的传输工作。

但是由于非对称加密比较慢,对称加密比较快。因此一般使用非对称加密来进行对称密钥的加密传输。而用对称加密来进行后续的传输工作。 

3.中间人攻击

上面所说的非对称加密和对称加密好像是已经把要传输的数据保护的天衣无缝了。但是,其实其中还有一个巨大的漏洞。这就是我们所说的中间人攻击。

虽然我们认为已经非常安全了,但是黑客不是吃素的

上图就是关于中间人攻击的一个介绍。实质上就是黑客在中间充当一个双面客。服务器将公钥pub发送过来,黑客在中间劫持。并且自己生成了一对非对称密钥。将自己生成的pub2发送给客户端。但是由于客户端不知道发送来的pub2是不是服务器发送来的公钥,因此也就上当。将对称密钥通过pub2进行加密,发送给黑客。然后黑客将以pub2加密的对称密钥进行解密,那到对称密钥。再将对称密钥使用pub1进行加密,发送给服务器。由于服务器也不知道这个加密过的对称密钥是不是客户端发过来的,因此也就使用这个对称密钥进行后续的加密了。

从上述过程来说,客户端无法判断公钥的真假造成的。如果客户端可以辨别公钥的真假,那么这个中间人攻击也就迎刃而解了!

4.证书

证书是什么

SSL/TLS 证书是一种网络安全协议,用于在互联网上建立安全通信。在 HTTPS 这种加密方式中,证书用于验证网站的身份和保证数据传输的安全性。

证书由数字签名机构(CA)颁发,证明了网站的身份信息和公钥的有效性。CA 通过审核网站申请者的身份信息,发放证书并签名,网站通过证书验证来证明其身份,以确保用户与网站建立的加密连接是信任的。

证书包含网站的信息,如名称、域名、过期日期和公钥等等。证书中的公钥可用于安全地加密用户数据并将其发送到服务器。证书还包含签名,以确保其未被篡改。如果签名无效或证书已过期,则表示证书不可信任。

浏览器通常默认信任一些公共的 CA,这些 CA 证书预装在浏览器中。这意味着如果网站使用由公共 CA 颁发的证书,浏览器将信任该证书,并且用户可以通过 HTTPS 安全地与该网站建立连接。

为了解决上述问题,人们就想出来了“证书”这个方法。就是上服务器(网站)在成立的时候,需要去一些专门的认证机构(第三方机构)申请证书。服务器需要提供一些资质。当申请通过之后,机构就会给你颁发证书。其中,证书中也就包含了公钥。此时客户端申请公钥的时候,此时就不应该只是请求要一个公钥了,而是请求要一个证书。当客户端拿到证书之后,就可以进行校验。验证证书是不是假的或者被篡改的。如果客户端发现证书是无效的,浏览器就会直接弹框警告。

客户端拿到证书之后,就首先需要针对证书进行校验!!

  1. 得到初始的签名:客户端使用系统内置的权威机构的公钥pub针对证书中的加密签名解密,得到了初始签名
  2. 计算现在的签名:客户端使用相同的签名算法,基于证书的属性进行计算
  3. 比较两个签名是否相同  如果相同证明整数中的数据都是未被篡改的原始数据, 如果签名不同说明证书数据被篡改,客户端的浏览器弹框报错.

 在这里我们需要明确证书的校验:

证书中包含很多信息,我们用这些属性进行一个计算也就是校验和(签名),再由证书颁布机构使用自己的私钥进行加密, 此处我们要知道的是 这个私钥只有证书机构自己知道

也就是说输入数据没有被篡改那么根据相同的算法得到的签名也是一样的

反之,签名不同了,那么数据一边被篡改了

在这种加密过程下,黑客是无法修改我们数据的,黑客如果想改就要知道证书机构的密钥,否则解密了之后 黑客无法再次进行加密,那么到客户端就会直接弹框报错


总结

HTTPS 工作过程中涉及到的密钥有三组.

  1. 第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.
  2. 第二组(非对称加密): 用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.
  3. 第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

其实一切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥工作的.
第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.
第一组非对称加密的密钥是为了让客户端拿到第二组

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

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

相关文章

关于Android Studio Http Proxy设置

对敌人最大的蔑视就是沉默。--鹿丸 我们使用Android Studio 开始构建的时候会有卡顿的情况,甚至死机,也就是所谓的【android studio】构建卡住问题,如果依赖库类都是国内的,检查是否开启了代理 这个地方选择下面的自动代理 国内…

Visual Studio 2019 c++ 自定义注释 ----doxygen

可加入C 也可自定义。 <?xml version"1.0" encoding"utf-8"?> <CodeSnippets xmlns"http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"><CodeSnippet Format"1.0.0"><Header><Title>注释…

打开vim的语法高亮

在一个Ubuntu中自带的vim版本是8.2.4919&#xff0c;默认就是开始了语法高亮的&#xff0c;打开一个Java文件效果如下&#xff1a; 它不仅仅对Java文件有语法高亮&#xff0c;对很多的文件都有&#xff0c;比如vim的配置文件也有语法高亮&#xff0c;有语法高亮时读起来会容易…

【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

第17节 题目1&#xff1a;在有序二维数组中查找目标值 给定一个每一行有序、每一列也有序&#xff0c;整体可能无序的二维数组 再给定一个数num&#xff0c; 返回二维数组中有没有num这个数 例子 数组如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …

[C++]笔记-函数的栈空间(避免栈空间溢出)

错误1 当数组的内存占用较大时,会引发异常 #include <iostream> using namespace std; int main() {char buff[2000000];cout << (int)buff[sizeof(buff) - 1] << endl; 错误 2 当调用次数较小的时候,栈内存还没有满,可以输出,该地址相减除以1024等于100,就…

CANoe自动化工程的搭建

基于XMLCAPL建立自动化工程 1、导入ini文件2、新建 Test Environment3、报告类型4、代码编写 1、导入ini文件 工程的配置的文件&#xff0c;配置DUT相关信息&#xff0c;具体视工程而编写内容。 2、新建 Test Environment 1、新建XML测试用例环境 2、导入XML测试用例文件 …

奥威BI财务数据分析方案:借BI之利,成就智能财务分析

随着智能技术的发展&#xff0c;各行各业都走上借助智能技术高效运作道路&#xff0c;财务数据分析也不例外。借助BI商业智能技术能够让财务数据分析更高效、便捷、直观立体&#xff0c;也更有助于发挥财务数据分析作为企业经营管理健康晴雨表的作用。随着BI财务数据分析经验的…

一元三次方程求解

一元三次方程求解 题目描述提示输入输出格式输入格式输出格式 输入输出样例输入样例输出样例 算法分析A C 代码 题目描述 有形如&#xff1a; a x 3 b x 2 c x d 0 ax^3bx^2c^xd0 ax3bx2cxd0一元三次方程。给出该方程中各项的系数 ( a a a&#xff0c; b b b&#xff0c;…

解密 AI 客服;在不同硬件设备上运行大型语言模型的可能性

&#x1f989; AI新闻 &#x1f680; 微软必应首席执行官称必应聊天优于OpenAI的GPT-4&#xff0c;但成本更高 摘要&#xff1a;微软必应的首席执行官米哈伊尔・帕拉欣表示&#xff0c;必应聊天表现优于OpenAI的GPT-4&#xff0c;但使用了更高成本的检索增强推理技术。必应聊…

k8s的pv和pvc创建

//NFS使用PV和PVC 1、配置nfs存储 2、定义PV 实现 下图的pv和pvc测试 pv的定义 这里定义5个PV&#xff0c;并且定义挂载的路径以及访问模式&#xff0c;还有PV划分的大小 vim /pv.yamlapiVersion: v1 kind: PersistentVolume metadata:name: pv001 spec:capacity:storage: …

Mac OS minicom 无法设置921600问题

MacOS minicom 无法设置921600问题 介绍过程解决方案参考资料 介绍 minicom是Mac上一款非常好用的串口工具。本文假设你已经安装minicom&#xff0c;并且知道minicom的一般配置和使用方法。这是“MacOS minicom 无法设置921600”的解决问题记录。它在以下环境中设置成功&#…

【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeuS(DTU格式)数据集

【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeuS(DTU格式)数据集 提示:最近开始在【三维重建】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeuS(DTU格式)数据集前言下载…

BDA初级分析——用SQL筛选数据

一、用SQL对数据分组 GROUP BY Group by&#xff0c;按...分组 作用:根据给定字段进行字段的分组&#xff0c;通常和聚合函数配合使用&#xff0c;实现分组的分析 写法:select ...from ...group by 字段名 (也可以是多个字段) GROUP BY的逻辑 SELECT gender,COUNT(user_id) …

数据分析 | 调用Optuna库实现基于TPE的贝叶斯优化 | 以随机森林回归为例

1. Optuna库的优势 对比bayes_opt和hyperoptOptuna不仅可以衔接到PyTorch等深度学习框架上&#xff0c;还可以与sklearn-optimize结合使用&#xff0c;这也是我最喜欢的地方&#xff0c;Optuna因此特性可以被使用于各种各样的优化场景。 2. 导入必要的库及加载数据 用的是sklea…

恒运资本:布林线什么意思?

布林线是一种经过股票价格的标准差核算出涨跌起伏的技能剖析方法。这种剖析方法由约翰布林在1980年左右开发而来&#xff0c;是一种常用的股市剖析东西。本文将从前史、原理、应用等多个视点叙述布林线的含义&#xff0c;以及它对出资者所带来的意义。 一、前史 布林线在1983年…

Kafka 入门到起飞 - 什么是 HW 和 LEO?何时更新HW和LEO呢?

上文我们已经学到&#xff0c; 一个Topic&#xff08;主题&#xff09;会有多个Partition&#xff08;分区&#xff09;为了保证高可用&#xff0c;每个分区有多个Replication&#xff08;副本&#xff09;副本分为Leader 和 Follower 两个角色&#xff0c;Follower 从Leader同…

安防监控视频云存储平台EasyCVRH.265转码功能更新:新增分辨率配置

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求&#xff0c;让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上&#xff0c;视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…

系统架构设计师-信息安全技术(1)

目录 一、信息安全基础 1、信息安全五要素 2、网络安全漏洞 3、网络安全威胁 4、安全措施的目标 二、信息加解密技术 1、对称加密 2、非对称加密 3、加密算法对比 三、密钥管理技术 1、数字证书 2、PKI公钥体系 四、访问控制技术 1、访问控制基本模型 2、访问控制的实现技术…

【ES6】—使用 const 声明

一、不属于顶层对象window 使用const关键字 声明的变量&#xff0c;不会挂载到window属性上 const a 5 console.log(a) console.log(window.a) // 5 // undefined二、不允许重复声明 使用const关键字不允许重复声明相同的变量 cosnt a 5 cosnt a 6 // Uncaught SyntaxEr…

Java基础知识实际应用(学生信息管理系统、猜拳小游戏、打印日历)

一、Java学生信息管理系统 这个系统包含了添加、修改、删除、查询和显示所有学生信息等功能。您可以在此基础上进行修改和完善&#xff0c;以适应您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…