Linux网络基础2之https

news2024/11/17 6:01:40

 (。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~icon-default.png?t=N7T8https://blog.csdn.net/ky233?type=blog

点个关注不迷路⌯'▾'⌯

http是明文的可以通过一些的工具获取到正文层,从而导致账号密码泄露,所以就有了https 

一、安全的定义

世界上没有真正的安全,所谓安全就是你破解的所花费的成本,要远大于你的收益这就叫做安全 

二、https的概况

1.概况

首先我们的应用层是http,socket是传输层OS给我们提供的接口,这样我们才能简单的写一个http,其中应用层中还有一个小的模块叫做TLS/SSL,这个模块主要负责加密和解密用的,如果我们的http直接通过这个模块进入传输层,这就叫做https

在接收方也是先通过TLS/SSL然后还原成http的,所以在网络中就是经过加密的https,不法分子也无法来获取到你的信息。

2.加密和解密

 加密就是将明文转化成密文,解密则相反

三、https的工作过程探究

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

方案一:只使用对称加密

引入对称加密之后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容是啥了
但事情没这么简单.服务器同一时刻其实是给很多客户端提供服务的.这么多客户端,每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能拿到了).因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情~

因此密钥的传输也必须加密传输!
但是要想对密钥进行对称加密就仍然需要先协商确定一个“密钥的密钥"这就成了"先有鸡还是先有蛋”的问题了.此时密钥的传输再用对称加密就行不通了

方法二:非对称加密

看似没问题,可是服务器给客户端发消息,这个过程就有可能被黑客拿走,就会被人看到!所以方案二也不行

方案三:双方非对称加密

1.服务端拥有公钥S与对应的私钥S,客户端拥有公C与对应的私钥C
2.客户和服务端交换公钥,客户端给服务端发信息:先用S对数据加密,再发送,只能由服务器解密,因为只有服务器有私销
3.服务端给客户端发信息:先用C对数据加密,在发送,只能由客户端解密,因为只有客户端有私钥
这样貌似也行啊,但是
1.效率太低
2.依旧有安全问题

方案四:非对称加密+对称加密

服务端具有非对称公钥S和私钥S。

客户端发起https请求,获取服务端公钥S

客户端在本地生成对称密钥C,通过公钥S加密,发送给服务器.

由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥(真的吗?)

服务器通过私钥S'解密,还原出客户端发送的对称密钥C.并且使用这个对称密钥加密给客户端返回的响应数据.

后续客户端和服务器的通信都只用对称加密即可.由于该密钥只有客户端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义

由于对称加密的效率比非对称加密高很多,因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密.

虽然上面已经比较接近答案了,但是依旧有安全问题方案2,方案3,方案4都存在一个问题,如果最开始,中间人就已经开始攻击了呢?

四、中间人攻击-针对上面的场景

1..服务器具有非对称加密算法的公钥S,私钥S
2.中间人具有非对称加密算法的公钥M,私钥M'
3.客户端向服务器发起请求,服务器明文传送公钥S给客户端
4.中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥S替换成为自己的公钥M,并将伪造报文发给客户端
5.客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),自己形成对称秘钥X,用公钥M加密X,形成报文发送给服务器
6.中间人劫持后,直接用自己的私钥M'进行解密,得到通信秘钥X,再用曾经保存的服务端公钥S加密后,将报文推送给服务器
7.服务器拿到报文,用自己的私钥S解密,得到通信秘钥X
8.双方开始采用X进行对称加密,进行通信。但是一切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

但是只要已经交换密钥了,中间人就没有办法了,它只能在最开始的时候进行篡改

这个中间人攻击能够成功的本质是什么呢?本质是中间人能够对数据做篡改并且客户端无法验证收到的公钥是否是服务端发过来的

五、CA认证

服务端在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性

2.数据签名

签名是基于非对称加密算法的

当服务端申请CA证书的时候,CA机构会对该服务端进行审核,并专门为该网站形成数字签名,过程如下
1.CA机构拥有非对称加密的私钥A和公钥A'

2.CA机构对服务端申请的证书明文数据进行hash,形成数据摘要

3.然后对数据摘要用CA私钥A'加密,得至数字签名S
服务端申请的证书明文和数字签名S共同成了数字证书,这样一份数字证书就可以颁发给服务端了

如果这个时候,中间人再次替换我们的密钥,我们的客户端就可以拿着我们的CA机构的公钥对我们的明文数据进行hash,得出数据摘要,在取出数据签名对公钥对签名进行解密,如果相等则没被替换

中间人有没有可能篡改该证书?

中间人篡改了证书的明文

由于他没有CA机构的私钥,所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后的证书形成匹配的签名

如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不一致,则说明证书已被篡改,证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人

中间人整个掉包证书?

所以中间人只能向CA申请真证书,然后用自己申请的证书进行掉包

这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。

永远记住:中间人没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的

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

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

相关文章

【Spring Boot系列】快速上手 Spring Boot

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【数学建模】传染病模型笔记

传染病的基本数学模型,研究传染病的传播速度、空间范围、传播途径、动力学机理等问题,以指导对传染病的有效地预防和控制。常见的传染病模型按照传染病类型分为 SI、SIR、SIRS、SEIR 模型等,按照传播机理又分为基于常微分方程、偏微分方程、网…

《计算机网络》考研:2024/3/7 2.1.4 奈氏准则和香农定理

2024/3/7 (作者转行去干LLMs了,但是又想搞定考研,忙不过来了就全截图了呜呜呜。。。 生活真不容易。) 2.1.4 奈氏准则与香农定理

出现“error: failed to push some refs to ‘https://github.com/****.git‘”,如何解决问题

一、出错情况: 今天继续推送整理的知识点的时候,出现了一个报错。“error: failed to push some refs to https://github.com/.git”,百思不得其解,之前推送的时候都可以轻松推送成功,如今却说本地库与远程库不一致。…

STM32电源及时钟介绍

一、STM32最小系统 二、电源电路 2.1供电电压VDD,VSS F103VET6 的引角图 在 F103VET6 的引角图中可找到 49\50 角, 74\75 角, 99\100 角, 27\28角,10 \11角一共 5 对的VDD,VSS,也就是给我们芯片…

体系班第十三节

1判断完全二叉树递归做法 有四种情况&#xff1a;1 左树完全&#xff0c;右数满&#xff0c;且左高为右高加一 2左满 &#xff0c;右满&#xff0c;左高为右高加一 3左满&#xff0c;右完全&#xff0c;左右高相等 4左右均满且高相等 #include<iostream> #include&l…

外边距折叠的原因和解决

参考文章 什么时候出现外边距塌陷 外边距塌陷&#xff0c;也叫外边距折叠&#xff0c;在普通文档流中&#xff0c;在垂直方向上的2个或多个相邻的块级元素&#xff08;父子或者兄弟&#xff09;外边距合并成一个外边距的现象&#xff0c;不过只有上下外边距才会有塌陷&#x…

Guiding Large Language Models viaDirectional Stimulus Prompting

1. 通过定向刺激提示指导大语言模型 论文地址&#xff1a;[2302.11520] Guiding Large Language Models via Directional Stimulus Prompting (arxiv.org) 源码地址&#xff1a;GitHub - Leezekun/Directional-Stimulus-Prompting: [NeurIPS 2023] Codebase for the paper: &qu…

[mmucache]-ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 思考: 1、cache的entry里都是有什么&#xff1f; 2、TLB的entry里都是有什么? 3、MMU操作…

保持长期高效的七个法则(一)7 Rules for Staying Productive Long-Term(1)

Easily the best habit I’ve ever started was to use a productivity system.The idea is simple:organizing all the stuff you need to do (and how you’re going to do it) prevents a lot of internal struggle to get things done. 无疑&#xff0c;我曾经建立过的最好…

简单了解TCP/IP四层模型

什么是计算机网络&#xff1f; 计算机网络我们可以理解为一个巨大的城市地图&#xff0c;我们想从A地前往B地&#xff0c;其中要走的路、要避开的问题都交给计算机网络解决&#xff0c;直到我们可以正常的到达目的地&#xff0c;那么我们会把其中的过程抽象成一个网络模型&…

分布式执行引擎ray入门--(3)Ray Train

Ray Train中包含4个部分 Training function: 包含训练模型逻辑的函数 Worker: 用来跑训练的 Scaling configuration: 配置 Trainer: 协调以上三个部分 Ray TrainPyTorch 这一块比较建议直接去官网看diff&#xff0c;官网色块标注的比较清晰&#xff0c;非常直观。 impor…

APP2:android studio如何使用lombok

一、前言 不知道从哪个版本开始&#xff0c;android studio便无法在plugins中下载lombok了&#xff0c;有人说是内置了&#xff0c;好像有这么回事儿。我主要面临如下两个问题&#xff1a; 使用内置lombok&#xff0c;可以自动生成setter、setter、toString等。但是&#xff0…

政安晨:【深度学习处理实践】(五)—— 初识RNN-循环神经网络

RNN&#xff08;循环神经网络&#xff09;是一种在深度学习中常用的神经网络结构&#xff0c;用于处理序列数据。与传统的前馈神经网络不同&#xff0c;RNN通过引入循环连接在网络中保留了历史信息。 RNN中的每个神经元都有一个隐藏状态&#xff0c;它会根据当前输入和前一个时…

【QT+QGIS跨平台编译】之七十:【QGIS_Analysis跨平台编译】—【qgsrastercalcparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…

free pascal 调用 C#程序读 Freeplane.mm文件,生成测试用例.csv文件

C# 请参阅&#xff1a;C# 用 System.Xml 读 Freeplane.mm文件&#xff0c;生成测试用例.csv文件 Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#x…

构建LVS集群

一、集群的基本理论&#xff08;一&#xff09;什么是集群 人群或事物聚集&#xff1a;在日常用语中&#xff0c;群集指的是一大群人或事物密集地聚在一起。例如&#xff0c;“人们群集在广场上”&#xff0c;这里的“群集”是指大量人群聚集的现象。 计算机技术中的集群&…

吴恩达机器学习-可选实验室:逻辑回归(Logistic Regression))

在这个不评分的实验中&#xff0c;你会探索sigmoid函数(也称为逻辑函数)探索逻辑回归;哪个用到了sigmoid函数 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_one_addpt_onclick import plt_one_addpt_onclick from lab_utils_common impor…

批量提取PDF指定区域内容到 Excel 以及根据PDF里面第一页的标题来批量重命名-附思路和代码实现

首先说明下&#xff0c;PDF需要是电子版本的&#xff0c;不能是图片或者无法选中的那种。 需求1&#xff1a;假如我有一批数量比较多的同样格式的PDF电子文档&#xff0c;需要把特定多个区域的数字或者文字提取出来 需求2&#xff1a;我有一批PDF文档&#xff0c;但是文件的名…

【CSP试题回顾】202006-1-线性分类器

CSP-202006-1-线性分类器 解题思路 线性分类问题&#xff0c;即根据给定的数据点和分类界限&#xff0c;判断是否存在一条线能够将属于不同类别的点完全分开。具体来说&#xff0c;数据点被分为两类&#xff0c;标记为A和B&#xff0c;我们要找出是否存在一个线性决策边界&…