HTTPS 协议原理

一.HTTPS的定义

大家在刚开始学习的时候是不是也是非常好奇HTTP与HTTPS之间有什么区别和联系,两者都是应用层协议,而HTTPS是在HTTP的基础上引入了加密层,从而将HTTP的明文传输进行加密,保障数据的安全性



二.加密与解密

定义:将明文(要传输的数据)通过一系列变化转换成密文的过程就是加密

           将密文通过密钥转换成明文的过程称为解密

关于加密的原因不用想大家肯定都知道是为了防止信息泄露,那么我们就通过另外一个例子来了解加密的重要性;

假如现在你要下载一个名为A的程序软件,但当你的请求在网络中传输时,由于是明文传输,网络运营商就可以获取到你的请求并且可以将其劫持,然后发送其想要你下载的软件,然后你就会发现下载好的内容不对,但是期间就会浪费大量时间与陈本,如果你的下次下载请求还是被劫持,这样是不是就会非常难受,这就是运营商劫持,这也体现出明文传输在网络中的巨大缺点

如下图;

下面我们来了解下加密的方式:

对称加密:

定义:通过单密钥的加密方式,同一个密钥可以同时用作信息的加密和解密,,这种加密方法称为对称加密, 也称为单密钥加密
常见对称加密算法(了解): DES、 3DES、 AES、 TDEA、 Blowfish、 RC2 等
特点: 算法公开、 计算量⼩、 加密速度快、 加密效率⾼
例如:

密钥是按位异或,假设原始数据时a,通过密钥key加密得到b,此时接受端得到b,对b^key就得到a,此时就完成解密,双方使同一密钥,当然实际当然不会如此简单

非对称加密:

定义:

通过两个密钥来进行加密和解密, 这两个密钥是公开密钥(public key, 简称公钥) 和私有密钥(private key, 简称私钥)

公钥:是指即使泄露也没关系的密钥,而非是指直接公开的密钥

私钥;是指不能泄露的密钥

常见非对称加密算法(了解): RSA, DSA, ECDSA
特点: 算法强度复杂、 安全性依赖于算法与密钥但是由于其算法复杂, 而使得加
密解密速度没有对称加密解密的速度快
补充点:

我们是可以用公钥加密也可以用私钥加密,当然需要对应的另一个来解密

公钥和私钥是配对的. 最大的缺点就是运算速度非常慢, 比对称加密要慢很多
例如:

假设A持有B给的一把锁,当其将文件放入柜子时,将柜子锁上,而锁可以有多把,也可以给C,但是钥匙只有B持有,即公钥是指锁,私钥是指钥匙




三.数据摘要 && 数据指纹

数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定⻓度的数字摘要。 数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
摘要常见算法: 有 MD5、 SHA1、 SHA256、 SHA512 等, 算法把无限的映射成有限, 因此可能会有碰撞(两个不同的信息, 算出的摘要相同, 但是概率非常低)
摘要特征: 和加密算法的区别是, 摘要严格意义不是加密, 因为没有解密, 只不
过从摘要很难反推原信息, 通常用来进行数据对比

 




四,HTTPS加密所用的方案

1.只使用对称加密

如果通信双方都各自持有同一个密钥 X, 且没有别人知道, 这两方的通信安全当然是可以被保证的(除非密钥被破解)

我们知道服务器会同时与多个客户端建立连接,而每一个连接的对称的密钥肯定要保证不同,所以每一个连接都需要双方协商,所以密钥是不是就要传输,从而保证双方都拿到同一个密钥来保证通信,但是密钥如果在传输过程中被截获,双方的通信是不是就相当于对窃取者透明,如果截取者再对密钥修改,是双方的内容必须通过截取者这个中间人,那么信息就会完全泄露而且内容也可能被修改

2.只使用非对称加密

鉴于非对称机制,如果服务器将公钥发送给客户端,那么客户端将信息加密(通过公钥)传递给服务器,服务器就可以通过私钥解密,这样看起来信息就不会泄露,那么不妨我们多想想,如果服务器需要将信息发送客户端,那么服务器是不是就需要用私钥加密,但是我们知道公钥是可以被截取的,那么其他人也可以通过公钥对服务器发送的信息进行解密,这样就会出现信息泄露,所以这种方法也是不安全的

3.双方同时进行非对称加密

服务器持有私钥S和公钥S',客户端持有私钥C和公钥C',双方同时将公钥发送给对方,然后这样是不是就看起来可以实现通信并且保证安全

这种方法首先最严重的问题是效率太低了,并且其实也无法保证安全,后面会讲,而在网络通信时,时间是非常重要的,所以也不是最优解

4.非对称加密和对称加密
服务器持有私钥S和公钥S',当客户端发送https请求时,服务器将公钥发送给客户端,客户端得到公钥后,生成对称加密的密钥X,然后利用公钥加密X,发送给服务器,服务器通过私钥S解密,得到对称加密的密钥X,然后双方就可以通过来进行对称加密

由于对称加密效率远高于非对称加密,该方案在后续过程中一直使用对称加密,效率明显提高,那么这种方法是否安全?

如果中间人将后序信息窃取是无法破解的,但是如果中间人在服务器发送公钥S'时就对信息截取并将原本发送给客户端的公钥S'修改成中间人自己的公钥M',这样客户端收到公钥M’,然后将X发送给中间人,这样中间人就毫不费力的截取到对撑加密的密钥,后续的所有信息还是回完全泄露。

目前来看所有的组合是都存在问题的,那么该如何破局呢?




五.证书与签名

服务器在使用HTTPS之前去CA认证一份数字证书,证书中包含了服务器的诸多信息以及公钥,然后服务器将证书发送给浏览器,浏览器得到证书后可以得到对应的公钥,然后双方即可进行通信,下面我们就来一一认识具体的细节:

1.证书的申请:

服务器生成一个公钥S’和私钥S,然后将自身的诸多信息发送给CA认证机构,注意:私钥是不发送的,公钥要发送给CA,CA机构对信息进行审核,然后生成一份包含服务器公钥的证书

对于证书:大家可以看成一个结构化的字符串里面包含了以下信息:
• 证书发布机构
• 证书有效期
• 公钥
• 证书所有者
• 签名
• ......
2.签名的理解:

当CA机构得到服务器的申请时,会在自身生成一个公钥A',私钥A,然后将服务器发送的数据形成一份散列值,然后将散列值通过A进行加密形成签名。如果此时在将数据和签名整合,就会形成一份数字签名的数据,后面CA的公钥A会发送给浏览器,此时就可以通过将签名解密和数据形成的散列值进行对比,此时就可以确定数据是否合法,当然这些我们后面会讲,这里简单提下,这个过程叫验证
现在我们知道了证书的相关概念,那么我们是否可以通过证书来实现安全的网络传输呢?




六.非对称加密+对称加密+证书机制

首先,当浏览器对一个服务器明文发送一个请求时,服务器会将一份经过CA机构认证的证书发送给浏览器,证书中包含了服务器的公钥S,然后在浏览器端将数据散列值和签名用公钥解密得到的散列值进行对比,如果相等,说明得到的是安全的数据,然后客户端生成一个对称加密的密钥X,然后通过证书中的服务器公钥进行加密,发送给服务器,服务器通过私钥解密得到密钥X,然后双方就可以对称加密通信

现在问题来了,该方法是如何保证通信安全的呢?

我们知道非对称加密和对称加密的组合只有在服务器第一次发送响应时可以被中间人截取信息,那么证书机制如何保证这个过程的安全呢?

首先,当服务器发送的证书被中间人截获后,其可能已经得到了对应的公钥,所以可以对其解包,得到数据和签名,但是签名由于其根本不掌握对应的私钥是无法修改的,当用户进行验证时,如果中间人对数据做过修改,散列值和签名解密得到的内容是无法做到相等的。

此时你可能好奇,中间人不可以用自己的私钥重新生成一份签名,然后和数据整合形成一份证书吗?

问题来了,我客户端为什么要认中间人的公钥呢?如果我不认中间人对应的公钥是不是就无法做到对签名解密,那么肯定是网络传输中出现了问题,客户端直接丢弃该内容即可

通过以上方案就可以实现网络通信的安全保障了

最后,感谢大家的支持!!!

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

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

相关文章

00 DSA-- 入门、实现动态数组、实现链表、栈和队列、环形数组、哈希表

两种代码模式 核心代码模式 核心代码模式:就是给你一个函数框架,你需要实现函数逻辑,这种模式一般称之为。 目前大部分刷题平台和技术面试/笔试场景都是核心代码模式。 比如力扣第一题两数之和,就是给出 twoSum 函数的框架如下…

【周末推荐】Windows无缝连接iPhone

关注“ONE生产力”,获取更多精彩推荐! 又到了周末推荐时间了,今天我们介绍一个Windows内置的功能,能够帮助大家将自己的电脑和iPhone连接在一起。 很多用Windows的小伙伴羡慕macOS可以和iPhone无缝连接,轻松阅读和回…

AI驱动的图像文本提取【Llama 3.2-Vision】

本月初,我尝试了书籍封面识别,将 YOLOv10、EasyOCR 和 Llama 3 结合成一个无缝工作流程。结果如何?我自信地从书籍封面中提取标题和作者,就像这是我的新超能力一样。你可以在这篇文章中查看这一旅程:使用自定义 Yolov1…

着色器的认识

知识了解: 着色器: 顶点着色器: 用来描述顶点的特性,如位置、颜色等,其中,顶点:是指二维或三维空间中的一个点比如交点或者端点。 片元着色器:用来进行逐片元处理操作,比如光照、颜色叠加等&…

雷电模拟器ls内部操作adb官方方法

正常情况下,我们通过adb操作模拟器,如安装软件、运行shell命令等,但是用windows系统,adb就经常掉线,端口被占用,或者发现不到设备,对于调试或者自动化非常痛苦。就在雷电安装目录下,…

AI驱动的低代码未来:加速应用开发的智能解决方案

引言 随着数字化转型的浪潮席卷全球,企业对快速构建应用程序的需求愈发强烈。然而,传统的软件开发周期冗长、成本高昂,往往无法满足快速变化的市场需求。在此背景下,低代码平台逐渐成为开发者和企业的优选方案,以其“低…

python实战(四)——RAG预热实践

一、任务目标 为了清晰直观地展示RAG(检索增强生成)方法的有效性,我们手搓一套RAG的流程进行演示,作为后续LangChain等技术的预热。本文编程实践的目的是展示RAG的工作原理及流程(科普为主),不过…

pycharm与anaconda下的pyside6的安装记录

一、打开anaconda虚拟环境的命令行窗口,pip install,加入清华源: pip install PySide6 -i https://pypi.tuna.tsinghua.edu.cn/simple 二、打开pycharm,在文件--设置--工具--外部工具中配置一下三项: 1、 QtDesigner…

MATLAB实现人类学习优化算法HLO

1.算法简介 人类学习优化算法(Human Learning-based Optimization,HLO)是一种基于人类学习过程开发的启发式算法。HLO算法的设计灵感来源于人类的智慧和经验,特别是人类在学习和调整过程中展现出的适应性、学习能力和创新思维。该…

ubuntu openmpi安装(超简单)

openmpi安装 apt update apt install openmpi-bin openmpi-common libopenmpi-dev安装到此完毕 测试一下,success !

车位识别系统项目设计

车位识别系统需求分析 1.概述 1.1问题描述 随着车辆保有量的不断增长,对车位中是否停有车辆进行检测的车位检测装置的需求不断增加。为了改善停车体验,建设停车引导系统非 常必要。而停车引导系统的核心,是需要检测哪些车位被占用,哪些空闲。 室内停车场因为施工…

2 columns passed, passed data had 4 columns

文章目录 一、问题复现二、原因分析 在使用Pandas等数据处理库时,我们经常需要将数据赋值给DataFrame。然而,有时候我们可能会遇到ValueError: 2 columns passed, passed data had 4 columns这个错误。这个错误表明你在构建一个 Pandas DataFrame 时&…

深度学习中one-hot 编码的正确理解

one-hot编码 是一种表示类别标签的方法。对于一个分类问题(例如图像分割中的类别标签),one-hot编码会将一个类别标记转换为一个向量,这个向量中只有一个位置为1,其余位置为0。划重点:一个one hot 编码可以理…

vscode和pycharm在当前工作目录的不同|python获取当前文件目录和当前工作目录

问题背景 相信大家都遇到过一个问题:一个项目在vscode(或pycharm)明明可以正常运行,但当在pycharm(或vscode)中时,却经常会出现路径错误。起初,对于这个问题,我也是一知…

《操作系统真象还原》第3章 完善MBR【3.1 — 3.2】

目录 引用与说明 3.1、地址、section、vstart 浅尝辄止 1、什么是地址 2、什么是 section【汇编】 3、什么是 vstart【汇编】 3.2、CPU 的实模式 1、CPU 工作原理【重要】 2、实模式下的寄存器 4、实模式下 CPU 内存寻址方式 5、栈到底是什么玩意儿 6 ~ 8 无条件转移…

tiktok双旋转验证码识别,利用图像处理技术准确率达97

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为 如有侵犯,请联系作者下架 该文章模型已经上线ocr识别网站,欢迎测试!!,地址:https://yxlocr.windy-rain.cn/ocr/othe…

TVM前端研究--Relay

文章目录 深度学习IR梳理1. IR属性2. DL前端发展3. DL编译器4. DL编程语言Relay的主要内容一、Expression in Relay1. Dataflow and Control Fragments2. 变量3. 函数3.1 闭包3.2 多态和类型关系3.3. Call4. 算子5. ADT Constructors6. Moudle和Global Function7. 常量和元组8.…

angular使用http实现get和post请求

说明: angular使用http实现get和post请求 提示:在运行本项目前,请先导入路由router,可以参考我上一篇文章。 效果图: step1:E:\projectgood\ajsix\untitled4\package.json “angular/cdk”: “^18.2.10”, “angula…

虚拟现实辅助工程技术助力航空航天高端制造业破局

在当今竞争激烈的航天产业环境中,高昂的研发成本、复杂的制造流程、繁重的维护任务以及对关键太空资产需求的不断升级,是航空航天高端制造业亟待破解的困境。在此背景下,虚拟现实辅助工程技术正以前所未有的速度渗透至各行各业,成…

LySocket 远程ShellCode注入工具

一款基于C/C开发的远程ShellCode注入工具,通常配合Metasploit一起使用,可实现远程注入反弹代码到指定进程,它由服务端和客户端两部分组成,并使用最少的代码实现了多Socket套接字管理机制,目前主要功能包括,…