Linux之Https协议原理

Linux之Https协议原理

  • 一.Https协议的概念
  • 二.常见的加密方法
  • 三.数据摘要(数字指纹)
  • 四.Https协议加密方法的逐渐完善
    • 4.1使用对称或者非对称加密
    • 4.2增加CA证书

一.Https协议的概念

Https协议是基于Http协议延申出的一种应用层协议,其原理就是在Http协议的的基础上加了一层保密层。
我们使用Http协议传输时都是以文本的形式传输的,无论什么信息都是光明正大的写在上面这就导致一些人去篡改文本的内容从而产生错误或者造成用户的隐私安全问题。
Https协议的保密手段就是加密,那么什么是加密和解密呢?简单来说加密就是将明文也就是我们要传输的信息转换为密文也就是别人看不懂的信息,解密就是将密文转换为明文。而在加密和解密的过程中通常我们还需要使用一个或者多个数据来辅助进行这个过程,这样的数据就叫做密钥。

我们说Http协议是以文本的形式传输的所以需要加密,那么别人该如何知道文本的内容呢?也就是 说为什么需要加密呢?
我们都知道我们国家有三大运营商:电信,移动和联通。所以我们发送的信息会先以数据的形式传输到运营商的手上再传输到对方的手上。那么如果运营商想要对我们的数据做手脚我们岂不是丝毫不知毕竟我们通过http协议发送的数据都是以文本的形式,这就造成了运营商劫持事件。如今我们很少见到运营商劫持的情况发送但是在我们国家互联网刚刚发展的那段时间这种事件是屡见不鲜的。就比如我们想要在网上下载一个软件时正常的流程应该是我们用户发起http请求后运营商接收后再像软件公司的服务器提交请求,之后服务器会把数据返回给运营商再由运营商发送给我们。但是某些运营商就会篡改服务器返回的数据从而导致我们下载成了其他的软件等等。
并且不止有运营商有这种能力篡改我们的数据有些黑客也可以直接偷到你像服务器发送的数据以及服务器发送给你的数据。所以加密的事情是刻不容缓的。
在这里插入图片描述

二.常见的加密方法

Https协议中常见的加密方法有两种:对称加密和非对称加密

  1. 对称加密
    采用单密钥的加密方法,同一个密钥可以进行信息的加密和解密。
    特征:加密和解密用的都是同一把密钥类似于我们利用异或进行加密:将明文异或成密文再将密文异或成明文,异或就是密钥。
    常见的对称算法:DES、3DES、AES、TDEA、Blowfish、RC2 等
    特点:算法公开、计算量⼩、加密速度快、加密效率⾼

  2. 非对称加密
    采用双密钥的加密方法,两个密钥分别是公开密钥和私有密钥
    特征:公钥和私钥是配对的,可以用公钥加密私钥解密也可以用私钥加密公钥解密
    常见的非对称算法:RSA,DSA,ECDSA
    特点:算法强度复杂、安全性依赖于算法与密钥
    缺点:运算速度非常的慢

三.数据摘要(数字指纹)

数据摘要(数字指纹),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算, 生成一串固定⻓度的数据摘要。数据摘要并不是一种加密机制,但可以用来判断数据有没有被篡改以及判断两份数据是否相同。
因为生成的数据摘要基本是独一无二的所以只要原始数据有一点变动都会造成利用单向散列函数产生的摘要和原本的摘要不一样。
摘要常见算法:有 MD5、SHA1、SHA256、SHA512 等
特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比。
在这里插入图片描述

四.Https协议加密方法的逐渐完善

4.1使用对称或者非对称加密

在我们了解了两种加密方法后大家能不能想出一个方法来让黑客也就是中间人无法得到我们的数据呢?
是只使用对称加密还是只使用非对称加密又或者使用对称加非对称加密的方法?我们一个一个的来试然后再找出问题再进行改进。

  1. 只使用对称加密
    如果通信双方都已经知道了密钥是什么那么这种方法就是万无一失除非中间人能把密钥给破解了。
    因为客户端和服务器传输的都是通过密钥加密过的密文。
    在这里插入图片描述
    但是这种形式过于理想化因为服务器不可能只服务给你一个人,服务器需要对接的客户端有很多每个客户端的密钥还不一样所以正常情况下需要客户端和服务器商量一下用哪个密钥也就需要客户端把密钥传输给服务器。但是密钥又只能明文传输也就会被中间人获取从而导致满盘皆输,三方都有密钥了。
    在这里插入图片描述

  2. 只用非对称加密
    因为非对称加密的密钥分为私钥和公钥,那么只要服务器把公钥传给客户端那么之后客户端发送给服务器的信息就是保密的因为只要客户端用公钥加密明文那么就只有客户端的私钥才能解密,而中间人并没有私钥。但是服务器发送给客户端的信息就无法保证保密了因为客户端和中间人都有公钥可以解密用私钥加密的明文。
    在这里插入图片描述

  3. 双方都用非对称加密
    这样一来客户端和服务器就都各有一个公钥和一个私钥了,那么只要客户端和服务器互相交换公钥那么他们互相发送的消息不就只有自己的私钥才能解密了吗?
    在这里插入图片描述
    这样貌似就万无一失了但是我们刚刚说过非对称加密的运算速度非常慢更何况这里使用了两个非对称加密就更加慢了不仅如此这个方法仍然存在与方案二一样的漏洞。

  4. 使用对称加非对称加密
    既然两个非对称加密的运算速度过慢那么我们试试用非对称加对称加密,这时服务器有公钥和私钥,我们只需要让服务器把公钥传给客户端随后客户端再在本地生成对称密钥,之后客户端再用公钥将对称密钥加密传输给服务器因为对称密钥被公钥加密所以只有服务器的私钥可以解密而中间人拿不到对称密钥,所以之后服务器和客户端只要用对称密钥通信即可。
    在这里插入图片描述
    这个方法似乎更好,不仅加快了运算速度还完成了保密。但是我想告诉大家的是它和上面两个方法都有着相同的隐患。

有聪明的加密方法那么自然也会有聪明的中间人,就以第四个方法为例。中间人只需要自己创建一个公钥M和密钥M‘,当服务器向客户端传输公钥S的时候将其拦截下来并替换成它的公钥M。这样在客户端利用公钥M将对称密钥C加密传输给服务器的途中再次将其拦截,并且使用自己的私钥M’解密得出对称密钥C,然后用第一次拦截得到的公钥S加密对称密钥C发送给服务器,服务器使用私钥S‘解密后就以为自己得到了对称密钥C。服务器和客户端就会觉得自己的传输毫无问题根本不会察觉到中间人也拥有了对称密钥C,所以在服务器和客户端之后用对称密钥C加密传输数据时中间人也可以轻而易举的得到数据。
在这里插入图片描述
这种方法也可以针对方案2和方案3,所以只使用对称加密和非对称加密是不可能完成真正的加密的。所以我们还需要利用其他的东西来完善我们的方案!

4.2增加CA证书

其实方案4已经非常的完善了我们可以思考一下方案4欠缺的是哪一点,其实就是客户端无法判断接收到的公钥是服务器的公钥还是中间人的公钥也就是无法判断公钥的合法性。中间人和公司的区别是什么:一个在明面一个在暗面,一个可以正儿八经出现一个只能藏起来。所以我们只需要创建一个只有公司能办中间人办不了的独一无二的数据并且将其加入到传输的公钥里,这样客户端只要看这个独一无二的数据就可以判断这到底是不是公司的服务器发出的公钥了。而这个独一无二的数据就是CA证书。
CA(Certificate Authority,证书授权)是由认证机构服务者签发,是数字签名的技术基础保障,也是网上实体身份的证明,能够证明某一实体的身份及其公钥的合法性,证明该实体与公钥二者之间的匹配关系。
这是我从百度百科中截取的对CA证书的解释从这段解释中我们也能发现CA证书最大的作用就是证明公钥的合法性以及将公钥和实体之间进行匹配。那么CA证书是如何做到这件事情的呢?
在这里插入图片描述
我们先来看看CA证书为什么是公司可以中间人不可以的。首先公司想要申请CA证书就必须把自己的公钥和私钥,域名真实姓名等等数据提交给CA公司,光这一点就够中间人喝一壶因为中间人是做着违法犯罪的事情怎么可能把自己的真实信息提交给CA公司就算他胆量够大真的提交了。在提交之后CA公司会对你的公司进行审核从而判断你是否有资格申请CA证书。而这个审核的手段包括但不限于查询你公司是否偷税纳税公司的规模甚至会去到公司进行实地考察,而这一条就是对中间人基于现实最无法做到的事情。更何况还有后手,在审核完成后CA公司会发放证书而证书中会包含一项数字签名,这个数字签名需要后面我们仔细研究现在我们先把流程走完。之后服务器在发送公钥时会把证书也发送过去而客户端只需要验证证书的真假即可完成密钥的协商。
这就是CA证书申请和使用的全过程,光申请证书就需要中间人有自己的公司可以把真实信息上传并且可以经受得住审核。

而且证书真正的厉害之处还没有体现,我们来更加深入的了解CA证书中包含了哪些东西
在这里插入图片描述
我们首先来关注一下数字签名,从图中我们可以看出数字签名其实就是把公钥经过单向散列函数计算出的数据摘要再通过CA公司的私钥加密后形成的一串数字。虽然只是一串数字却是经过了两项措施:单向散列函数形成基本上独一无二的数字,用CA公司的私钥将数字再次加密。
而这串签名则会和CA审核通过后颁发的证书一起形成一个带有数字签名的数据。
当服务器将数据发送给客户端后客户端可以将其拆分为两部分:数据,签名。首先数据我们再次通过单向散列函数生成一个散列值,其次用证书中附带的CA公司的公钥把签名解密形成另外一个散列值,只要我们把两个散列值对比一下就知道数据是否被篡改。
那么如果中间人想要篡改的话他需要干什么呢?

  1. 只改数据
    导致数据通过散列函数形成的散列值与签名解密后的散列值不同,所以数字签名无效数据也无效。
  2. 只改签名
    就不论可行性这样做就根本没有意义,你都不改数据你还算啥篡改啊。其次你修改了签名也会导致散列值不同从而数字签名无效数据也无效。
  3. 同时更改数据和签名
    中间人如果想要同时更改数据和签名他就必须保证他也有一本证书这样他才能把数据换成自己证书的数据再使用自己证书中的CA公司的公钥解密签名再将其换成自己的签名。这样才能让数据和签名的散列值相同,但是我们要知道CA证书中是会存放域名的也就是IP地址,中间人把数据更换了也就是把域名也换成自己的了这样客户端只要和与自己想要访问的服务器的域名一对比就会发现域名不同也就导致了数据无效。

所以这是一个无解的方法,除非你可以直接破解CA公司的私钥这样你就可以伪造一个数字签名出来。但是为什么这个方法具有权威性那就是因为大家都知道这件事是不可能的这件事是有国家背书的。
那么我们来总结一下CA证书是如何进行保密的,一共可以分为三方面

  • 现实中的中间人大多不敢暴露自己的真实信息也没有可以通过审核的公司
  • 没有人可以破解CA公司的私钥,所以CA公司的数字签名具有唯一性中间人想要更换数据就必须更换签名
  • 客户端的验证方法不止是判断两个散列值是否相同,还会判断域名是否相同这也就导致了就算中间人有自己的证书但是域名不同所以无法通过判断。

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

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

相关文章

基于Java的在线购物系统的设计与实现

引言 课题背景 随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强…

HarmonyOS 5.0应用开发——全局自定义弹出框openCustomDialog

【高心星出品】 文章目录 全局自定义弹出框openCustomDialog案例开发步骤完整代码 全局自定义弹出框openCustomDialog CustomDialog是自定义弹出框,可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹出框…

CSS基本语法和常用属性

目录 一、CSS二、CSS基本语法三、CSS的三种形式1、行内样式2、内部样式3、外部样式4、三者的优先级问题5、代码演示 四、选择器1 基础选择器1.1标签选择器1.2 ID选择器1.3 Class选择器1.4 属性选择器 2. 组合选择器2.1 层次选择器4.2.2 并列选择器 3. 伪类选择器4、选择器的优先…

白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?

大家都知道,在设计的初期,我们通常会先绘制草图,然后再进行上色处理,最终才开始进行最终的设计工作。在这个上色的过程中,配色是至关重要的一环。这不仅方便了内部同事的评审,也让产品方和客户可以直观地了…

在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

题目:在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。 延时函数分析LED首先实现8个数码管单独依次显示0~9的数字所有数码管一起同时显示0~F的值,如此往…

手动配置IP

手动配置IP,需要考虑四个配置项: 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址:格式表现为点分十进制,如192.168.254.1 子网掩码:用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…

2025年知识竞赛活动怎样办才有新意

2025年的知识竞赛活动要怎样举办才有新意。首先,我们需要理解用户的需求。他们可能是在策划一个活动,想要区别于传统的知识竞赛,吸引更多人参与,尤其是在2025年这样的未来时间点,科技发展可能更快,所以需要…

Chirpy3D:用于创意 3D 鸟类生成的连续部分潜在特征

Chirpy3D框架可以将细粒度的2D图像理解提升至3D生成的全新境界。当前的3D生成方法往往只关注于重构简单的对象,缺乏细致的特征和创造性。Chirpy3D通过结合多视角扩散模型和连续的部件潜在空间,能够生成全新且合理的3D鸟类模型。该系统不仅能够保持细致的…

【Git】ssh如何配置gitlab+github

当我们工作项目在gitlab上,又希望同时能更新自己个人的github项目时,可能因为隐私问题,不能使用同一′密钥。就需要在本地电脑上分别配置两次ssh。 1、分别创建ssh key 在用户主目录下,查询是否存在“.ssh”文件: 如…

用python获取AH股股票列表并且输出-附源代码

用python 获取在A股和香港上市的公司和在A股和香港上市的公司股票代码和名称 import akshare as akdef get_ah_stocks():# 获取A股股票列表a_stock_list ak.stock_zh_a_spot_em()a_stock_list a_stock_list[["代码", "名称"]]# 获取港股股票列表h_stock…

继承QLineEdit类实现自动补全功能

QlineEdit类本身是没有自动补全功能的,可以使用QCompleter配合实现功能。 但是在开发过程中发现,输入的字符串如果匹配那么QCompleter类会弹窗显示匹配项,如果输入的字符串不匹配则QCompleter类会关闭弹出(这点我也倒是能理解,没有…

VMware Workstation Pro 免注册下载链接

VMware Workstation Prohttps://softwareupdate.vmware.com/cds/vmw-desktop/ws/https://softwareupdate.vmware.com/cds/vmw-desktop/ws/ 访问不了或下载速度慢挂VNP

【如何掌握CSP-J 信奥赛中的深搜算法】

CSP-J 信奥赛中的深搜(深度优先搜索)算法是一个重要知识点,以下是一些学习深搜算法的建议: 理解基础概念 定义与原理:深度优先搜索是一种用于遍历或搜索图、树等数据结构的算法。它从起始节点开始,沿着一条…

BFS解决拓扑排序(3题)

目录 拓扑排序 1.如何排序? 2.如何形成拓扑排序 3.如何建图 1.看数据稠密度 2. 根据算法流程灵活建图 1.课程表 2.课程表2 3.火星词典 拓扑排序 找到做事情的先后顺序,拓扑排序的结果可能不是唯一的 1.如何排序? 1.找出图中入度为…

区块链技术:Facebook 重塑社交媒体信任的新篇章

在这个信息爆炸的时代,社交媒体已经成为我们生活中不可或缺的一部分。然而,随着社交平台的快速发展,隐私泄露、数据滥用和虚假信息等问题也日益凸显。这些问题的核心在于传统社交媒体依赖于中心化服务器存储和管理用户数据,这种模…

机器学习-关于线性回归的表示方式和矩阵的基本运算规则

最近在学习机器学习的过程中,发现关于线性回归的表示和矩阵的运算容易费解,而且随着学习的深入容易搞混,因此特意做了一些研究,并且记录下来和大家分享。 一、线性模型有哪些表示方式? 器学习中,线性模型…

安宝特方案 | AR助力制造业安全巡检智能化革命!

引言: 在制造业中,传统巡检常面临流程繁琐、质量波动、数据难以追溯等问题。安宝特AR工作流程标准化解决方案,通过增强现实AR技术,重塑制造业安全巡检模式,以标准化作业流程为核心,全面提升效率、质量与…

【deepseek】利用deepseek+cherry构建高效本地知识库

项目简介 本项目旨在开发一个高效、准确且用户友好的智能问答系统。该系统利用先进的向量化技术和深度学习模型来理解和回答用户的提问。通过整合多个模块的功能,系统能够从大量结构化或非结构化的数据中快速找到相关信息,并以自然语言的形式提供答案。…

小程序实现消息订阅通知完整实践及踩坑记录

1. 实现效果预览 2. 实现步骤 2.1 模版配置 进入小程序后端,选用一次性订阅模版,没有关键字的需要进行2-5天审核,提前进行 2.2 后端核心代码实现 import com.alibaba.fastjson2.JSONObject

vue学习4

1.自定义创建项目 2.ESlint代码规范 正规的团队需要统一的编码风格 JavaScript Standard Style 规范说明:https://standardjs.com/rules-zhcn.html 规则中的一部分: (1)字符串使用单引号 ‘aabc’ (2)无分号 const name ‘zs’ (3)关键字后加空格 if(n…