Https【Linux网络编程】

目录

一、为什么需要https 

二、常见加密方法

1、对称加密

2、非对称加密

3、数据指纹

 三、选择什么加密方案?

方案一:对称加密(×)

方案二:双方使用非对称加密(效率低)

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

中间人攻击

四、引入证书

五、数字签名

六、终级方案:非对称加密 + 对称加密 + 证书认证

七、HTTPS一定是安全的吗?


一、为什么需要https 

HTTP协议内容都是明文传输的,传输过程可能会经过很多中间设备(如一个局域网中的路由器,电脑连接手机热点,公共产所的wifi等),这些中间设备可以抓取我们的请求或响应,会导致信息泄露,消息篡改等信息安全问题,因此有了HTTPS。

HTTPS协议也是一个应用层协议,是在HTTP协议的基础上引入了一个加密解密层:

二、常见加密方法

1、对称加密

加密和解密时使用相同的密钥。

特点:加密速度快,加密效率高 。

常见对称加密算法:DES、3DES、AES等

2、非对称加密

特点:解决密钥安全配送问题,但运行效率低。

通信双方各有一组密钥:公钥和私钥

公钥可公开,私钥必须保密,用公钥加密的密文必须用与该公钥配对的私钥解密。

接收方将自己的公钥公开给发送方。发送方使用接收方的公钥对数据进行加密,然后传输给接收方。即使在加密数据的过程中,接收方的私钥始终保密,因此无需对外公开。只有接收方拥有私钥可以解密数据。

常见非对称加密算法:RSA是使用最广泛的非对称密码算法。

3、数据指纹

对于一份明文数据,通过一种Hash算法(MD5),可以让其生成一个固定长度的,非常低概率发生冲突的固定长度的字符串(也叫数据摘要),具有唯一性,如果原文发生细微更改,生成的字符串都会有很大的不同,这就叫这份明文的数据指纹。

使用案例:

平时我们使用百度网盘的时候,可能会有看到秒传这样的现象,如何做到的呢?

假设有一个用户传了一部电影到百度网盘服务端,服务端会根据用诸如MD5这样的hash算法计算出它的摘要或者叫数据指纹,然后入库,当下一次另一个用户上传同样的一部电影时,经过计算发现其数据指纹对应的数据在服务端已经存在,就不需要再上层了,从而实现秒传。

 三、选择什么加密方案?

方案一:对称加密(×)

客户端和服务端双方约定好同一个密钥,但这并不靠谱。

1. 密钥分发困难:对称加密需要双方共享相同的密钥,如果密钥在传输过程中被攻击者截获,会导致加密效果失效。在服务端和客户端之间安全地传输密钥是一项挑战。

2. 密钥管理成本高:当客户端数量庞大时,需要为每个客户端分配一个唯一的密钥,密钥管理成本将大大增加。

方案二:双方使用非对称加密(效率低)

由于非对称密钥算法效率比对称密钥算法的效率低,所以我们还行再改进一下。

依旧有安全问题

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

服务端具有公钥S和私钥S'

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

客户端形成一个对称密钥C,将C通过服务器端的公钥进行加密发送给服务器。服务器通过私钥S’进行解密获得对称密钥C。

之后双方就采用对称加密,这样只有传送对称密钥C时采用的是非对称密钥,其他时候都采用的是对称密钥,因此可以大大提高效率。

接近最佳方案,但依旧有安全问题

中间人攻击

上面的方案都有一个安全问题:如果在一开始就受到中间人攻击了呢?

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$进行对称加密,进行通信。但是一切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

根本原因:客户端无法确定收到的含有公钥的数据报文,就是目标服务器发送过来的。

四、引入证书

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

怎么保证证书是真的,且没有被篡改过?看下面:

五、数字签名

签名:用签名者的私钥对数据摘要进行加密,就形成了一个签名,将加密后的数据摘要附加到原始数据上就形成了带有数据签名的数据,并将他们一同发送给接收方。

验证: 接收方收到两部分内容:数据摘要和原文;要对签名进行验证,首先要签名者的公钥解密得到数据摘要,再根据原文用相同的算法计算出数据摘要,比较俩个值,如果相同,则数字签名有效。

CA机构就是通过数字签名技术来帮助辨别CA证书的真伪。

六、终级方案:非对称加密 + 对称加密 + 证书认证

前面提到几种方案都有安全隐患即:客户端无法确定收到的含有公钥的数据报文,就是目标服务器发送过来的。

那么这个方案就可以解决这个问题:

客户端发起第一次请求时,服务端要将自己的CA证书(包括CA机构的认证签名,服务端的

公钥、域名等信息)响应给客户端。客户端收到证书后,用其内置的很多权威CA机构的公钥来验证签名(用公钥对数据摘要解密,再与计算根据明文计算出来的数据摘要进行比对),比对成功,则证明证书是可信的,也就是说证书上的服务端的公钥是可信的,由此就可以防范中间人攻击。之后客户端就可以用服务端的公钥来加密自己的对称密钥R,发送给服务端后,双方就可以通过对称密钥来进行通信。

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

1)篡改明文?篡改明文后客户端验证签名时会比对失败

2)掉包整个证书?中间人没有私钥,所以无法制作假证书,只能用真证书来掉包,但证书里面是有域名等信息的,客户端可以识别出来域名发生了变化。

 为什么签名不直接加密,而是要先hash形成摘要?

1)缩小签名密文长度,加快数字签名的签名和验证效率。

七、HTTPS一定是安全的吗?

不一定。

上面提到的中间人攻击本质是对客户端进行攻击,那如果客户端本身就是攻击者呢?

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

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

相关文章

电子级高纯PFA材质实验室器皿耗材PFA漏斗PFA试剂瓶PFA烧杯

PFA三角漏斗,整体均是PFA材质,无污染风险,可高压灭菌。 尺寸:外径40mm、160mm PFA三角漏斗 特点: 1、一体式成型,结构稳定; 2、化学耐受性强,耐受强酸、强碱以及各种有机溶剂&…

C语言例3-1:阅读下列程序,写出程序运行的结果。

代码如下&#xff1a; #include <stdio.h> int main(void) {int x8;do{printf("*");x--;x--;}while(x0);printf("\n");return 0; } 结果如下&#xff1a; 分析&#xff1a; do-while语句&#xff0c;先执行后判断先打印 "*" &#xff0…

58集团校园招聘(含内推码)

招聘链接&#xff1a;校招链接 内推码在后文。 内推码 填写我的推荐码&#xff1a;EVBAJS 投递

1、Cocos Creator 基础入门

目录 Cocos Creator 是什么&#xff1f; 语言支持 功能特性 工作流程 功能模块 相关游戏 参考 Cocos Creator 是什么&#xff1f; Cocos Creator 既是一款高效、轻量、免费开源的跨平台 2D&3D 图形引擎&#xff0c;也是一个实时 2D&3D 数字内容创作平台。拥有…

线上剧本杀小程序成为行业发展大势,商家该如何选择?

在过去的几年中&#xff0c;剧本杀成为了年轻人娱乐社交的新方式&#xff0c;深受年轻人的喜欢&#xff0c;市场规模持续上升。 目前&#xff0c;剧本杀的布局也向线上发展&#xff0c;线上剧本杀的发展势头持续上升&#xff0c;规模也在持续扩大中。通过开发剧本杀小程序&…

在Windows的Docker上部署Mysql服务

在我们做一些和数据库相关的测试时&#xff0c;往往需要快速部署一个数据库作为数据源。如果开发环境是Windows&#xff0c;且开发的代码不依赖于系统&#xff0c;即不用在linux上做开发&#xff0c;则可以将全套环境都部署在Windows上。 本地安装数据库会污染操作系统环境&…

某某45浏览器干净卸载详细教程

​ 某某45是个什么软件&#xff1f;某某45浏览器是病毒吗&#xff1f;这个问题想必困惑着很多小伙伴&#xff0c;新装机的电脑总是有某某45全家桶。那么今天咱们一起看看。 ​ 某某45是个什么软件 某某45是一个中国软件公司&#xff0c;提供各种软件产品和服务。其中&#xff0…

【c 语言 】malloc函数详解

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

FFMPEG C++封装(一)(C++ FFMPEG)

1 概述 FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C封装&#xff0c;形成C FFMPG库。 2 架构 架构图如下所示&#xff1a; 架构说明: Init 初始化FFMPEG库。IStream 输入流&#xff0c;FFMPEG的输入音视频文件。Packet 音视频数据包Decoder 音视频编码器F…

字符集 --java学习笔记

字符集 为了将字符存进计算机&#xff0c;所以有了字符集 标准ASCI字符集 ASCl(American standard Code for Information Interchange):美国信息交换标准代码&#xff0c;包括了英文、符号等标准ASCI使用1个字节存储一个字符&#xff0c;首尾是0&#xff0c;总共可表示128个…

HarmonyOs开发:轮播图Banner组件封装与使用

前言 轮播图在每个项目中都很常见&#xff0c;鸿蒙中在容器组件中也提供了Swiper组件&#xff0c;用于子组件滑动轮播显示&#xff0c;和前端的使用起来也是异曲同工&#xff0c;我们先看下基本的用法。 Swiper() {ForEach(["1", "2", "3", &quo…

应用案例 | 复合机器人助力智能仓储物流实现高效发展

随着智能仓储物流技术的快速发展&#xff0c;复合机器人作为一种先进的自动化设备&#xff0c;正逐渐在仓储物流领域发挥重要作用。以下是一个复合机器人在智能仓储物流的应用案例。 案例背景 某大型电商企业面临着日益增长的订单量和仓储物流压力。为了提高物流效率、降低人力…

牛角工具箱源码 轻松打造个性化在线工具箱

&#x1f389; Whats this&#xff1f; 这是一款在线工具箱程序&#xff0c;您可以通过安装扩展增强她的功能 通过插件模板的功能&#xff0c;您也可以把她当做网页导航来使用~ 觉得该项目不错的可以给个Star~ &#x1f63a; 演示地址 https://tool.aoaostar.com &#x1f…

手动实现一个扩散模型DDPM

扩散模型是目前大部分AIGC生图模型的基座&#xff0c;其本质是用神经网络学习从高斯噪声逐步恢复图像的过程&#xff0c;本文用python代码从零开始构建了一个简单的扩散模型。 理论部分 DDPM(Denoising Diffusion Probabilistic Models) 是一种在生成对抗网络等技术的基础上发展…

MQTT.fx连接新版OneNet平台的一些问题

对于使用通信主题publish给OneNET时&#xff0c;如图所示&#xff1a; 但是点击Publish后&#xff0c;出现了Broker connection lost的问题 原因在于&#xff1a;新版OneNET和旧版OneNET的通信主题不一致了&#xff0c;查阅文档获知&#xff0c;格式如下&#xff1a; $sys/{p…

二叉树的深度和高度问题-算法通关村

二叉树的深度和高度问题-算法通关村 1 最大深度问题 LeetCode104: 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明&#xff1a;叶子节点是指没有子节点的节点。 对于node&#xff08;3&#xff09;&#xff0…

el-select的错误提示不生效、el-select验证失灵、el-select的blur规则失灵

发现问题 在使用el-select进行表单验证的时候&#xff0c;发现点击下拉列表没选的情况下&#xff0c;他不会提示没有选择选项的信息&#xff0c;我设置了rule如下 <!--el-select--><el-form-item label"等级" prop"level"><el-select v-m…

UE4_碰撞_使用蓝图控制物体移动时如何让被阻挡

当我们这样设置蓝图时&#xff1a; 运行效果&#xff1a; 利用蓝图更改一个物体的位置&#xff0c;发现本来两个应该相互阻挡的物体被穿过去了。为了不让相互阻挡的物体被穿过去&#xff0c;我们需要设置好蓝图节点的参数Sweep。 勾选之后 墙的蓝图我们这样设置&#xff1a; 运…

【Spring】SpringMvc项目当中,页面删除最后一条数据,页面不跳转并且数据为空。

期待您的关注 在之前学习SpringMvc的时候遇到过这样一个BUG&#xff0c;当我在一个页面删除该页面的最后一条数据的时候&#xff0c;一旦我删除成功&#xff0c;那么这个页面不会进行跳转&#xff0c;而是还停留在这个本不应该存在的页面&#xff0c;而且数据什么都没有。如下…

【JavaWeb】Day27.Web入门——Tomcat介绍

目录 WEB服务器-Tomcat 一.服务器概述 二.Web服务器 三.Tomcat- 基本使用 1.下载 2.安装与卸载 3.启动与关闭 4.常见问题 四.Tomcat- 入门程序 WEB服务器-Tomcat 一.服务器概述 服务器硬件&#xff1a;指的也是计算机&#xff0c;只不过服务器要比我们日常使用的计算…