当前位置: 首页 > news >正文

Linux网络编程:详解https协议

目录

一. https协议概述

二. 中间人截获

三. 常见的加密方法

3.1 对称加密

3.2 非对称加密

四. 数据摘要和数据签名的概念

五. https不同加密方式的安全性的探究

5.1 使用对称加密

5.2 使用非对称加密 

5.3 非对称加密和对称加密配合使用

六. CA认证 

七. 总结


一. https协议概述

在早期的网络中,传输数据一般采用http协议。但是,无论是用GET方法通过url传递数据,还是使用POST方法通过报文正文传递数据,都是明文传送数据,只要是明文传送数据,那就是不安全的,在传输过程中就很容易被中间人截获,造成信息泄露或者信息被篡改。

结论:http采用明文传递数据,不具有安全性。

为了解决http协议明文传输数据的安全性问题,就需要对数据进行加密处理,加密是在应用层实现的,将加密数据在网络中传输的协议,即为https协议。相较于http协议,https协议更具有安全性,图1.1为https协议工作方式的图解。

结论:https协议传输加密数据,安全性更有保证。

图1.1 https协议工作原理

二. 中间人截获

在早期采用http协议传输数据时,有时候会存在运营商截获现象,一个最典型的场景是,我们希望下载软件A,但是使用软件A的下载链接下载后,发现实际上下载的是软件B。造成这种现象可能得原因之一,就是运营商在网络中截获的数据信息,发现了软件A的下载链接,将软件A得下载链接替换为软件B的下载链接,就造成了希望下载的软件与实际下载的软件不同的现象。

在这种场景下,运营商充当的就是中间人,在网络中截获并篡改数据

在公共场所中,我们常会用到免费WIFI,这其实就是安全隐患,提供免费WIFI的路由器等设备,都有可能截取到用户发送的数据,造成信息泄露。

图1.2 中间人截获并篡改数据的原理

三. 常见的加密方法

3.1 对称加密

  • 对称加密仅使用一个秘钥key,加密和解密都使用这一把秘钥,这种加密解密的方法称为对称加密,也称为单秘钥加密。
  • 常见的对称加密算法:DES,3DES,Blowfish。
  • 对称加密的特征:算法简单,加密解密速度快、效率高。

通过按位异或的方式加密解密,就是最简单的一种对称加密方式。如,原文数据a=2023,秘钥key=8888,那么a加密后的数据c就变为了c=a^key=9567,使用同一把秘钥key对密文数据进行解密获取原文数据,a=c^key=2023。

3.2 非对称加密

  • 对称加密使用两把秘钥配对使用,一把公钥一把私钥,公钥向全网公开,私钥则是私密的。当客户端拿到公钥时,可以使用公钥进行加密,服务端在获取到加密后的信息后,通过秘钥进行解密,从而获取原始的明文数据。
  • 公钥和私钥,一把用于加密一把用于解密,可以用公钥加密私钥解密,反过来使用私钥加密公钥解密亦可。
  • 常见的非对称加密算法:RSA、DSA、ECDSA。
  • 非对称加密的特点:加密的可靠性依赖于秘钥、公钥以及算法的可靠性和复杂度,由于其算法复杂,因此加密和解密效率较低。

四. 数据摘要和数据签名的概念

数据摘要:

  • 数据摘要,就是通过哈希算法,将原文转换为一定长度的密文,即使非常小幅度的改变原文,通过哈希算法生成的密文差别也会非常大。
  • 通过哈希算法生成的数据摘要,严格来说不能算是一种加密方法,因为没有对应的解密手段,即:原文生成密文很容易,但是如果要通过密文破解原文,难度则非常之大。
  • 常见生成数据摘要的哈希算法:MD5、SHA256、SHA512。
  • 数据摘要,也被称为数据指纹。

数据签名:

  • 通过特点的秘钥对数据摘要加密生成的密文,被称为数据签名。
  • 数据签名,主要用于认证数据的合法性,保证客户端接收到的数据不会被中间人篡改(见第六章)。

五. https不同加密方式的安全性的探究

5.1 使用对称加密

使用对称加密时,客户端和服务器要事先协商秘钥,客户端和服务器在向网络中发送数据时,都要实现通过秘钥加密,这样中间人在网络中截获到的数据就是被加密后的数据,中间人拿不到秘钥,也就无法破解密文获取原文数据。

对称加密要保证安全性,就必须为每个客户端都单独维护一个秘钥,因为如果使用相同的秘钥,那么秘钥就会广泛分布在网络设备中,黑客就可以很容易的获取到秘钥,也就无法保证安全性,而为每个客户端都维护独立的秘钥成本很高。

那么如果客户端和服务端在进行通信之前,事先协商秘钥呢?这样也是不可行的。因为双方协商的秘钥需要通过网络进行传输,而秘钥传输要通过明文进行,如果黑客截获了秘钥,那么后续传输的数据就很容易被黑客截获并破译。

那么如果将双方协商的秘钥再用另一把秘钥加密呢?对秘钥进行加密的秘钥要需要事先通过明文传送让通信双方获取,这样本质上与上段所提到的不安全场景没有区别,只不过是多了一层而已。

图5.1 对称加密实现协商秘钥不安全的原因

5.2 使用非对称加密 

非对称加密要用到一把公钥C和一把私钥S,,将公钥C公布于网络中,假设客户端使用公钥C加密,那么如果黑客在网络中截获了客户端加密后的信息,由于没有私钥,就无法破译原文,这样就可以基本保证客户端发送给服务端数据和安全性。但是服务器向客户端发送数据时,通过私钥加密,客户端就需要公钥来解密,由于公钥是在网络中公开的,黑客自然也就可以获取公钥,这样单向的非对称加密就无法保证数据的安全性。

那么如果通信双方均使用非对称加密呢?这样虽然可以极大地提高安全性,但也无法保证绝对安全,且由于非对称加密算法的复杂度大,这样加密和解密的效率就会很低。

图5.2 使用非对称加密不安全的原因

5.3 非对称加密和对称加密配合使用

非对称加密和对称加密配合使用的通信操作流程为:

  • 存在用于非对称加密的公钥M和私钥M'。
  • 在正式通信之前,客户端先向服务器发送请求,获取其公钥M。
  • 客户端生成对称加密的秘钥C,通过公钥M加密,服务器接收到了客户端加密传输的秘钥C,通过私钥M'解密,这条通信双方就都拿到了对称加密秘钥C。
  • 在之后的通信中,通信双方使用对称加密即可,秘钥双方已经通过非对称加密传输协商完成。
  • 这种场景下,如果黑客只截取了加密后的内容,由于拿不到秘钥,依旧无法破译获取原文。但是,黑客依旧有手段窃取和篡改数据。
图5.4 非对称加密与对称加密配合使用的原理

在这种场景下,虽然中间人(黑客)不能通过获取秘钥来破译信息,但依旧可以通过截取并篡改公钥的手段获取信息,原理如下:

  • 服务器有公钥S和配对秘钥S',中间人有一组公钥M和秘钥M'。
  • 当客户端向服务器发送请求获取公钥S时,服务器明文传回公钥S。
  • 此时,中间人如果截获了服务器明文传回的公钥,就可以将公钥S保存下来,然后替换为自己的公钥M发回给客户端,而客户端不知道公钥S已经被篡改为了M。
  • 之后客户端再向服务器发送协商好的对称加密秘钥C时,会使用中间人的公钥M加密,而中间人如果截获了客户端向服务器发送的数据,就可以使用自己的私钥M'破译出原文。
  • 中间人此时再通过先前保存的公钥S对破译获得的对称加密秘钥C加密发给服务器,服务器就无法得知C已经泄露,依旧使用秘钥S'解密获取C。
  • 之后客户端和服务器的正式通信都使用对称加密,秘钥为C已经被黑客窃取,此时如果信息被黑客截取,黑客就能够通过C解密获取原文。

六. CA认证 

首先分析对称加密和非对称加密配合使用场景下不安全的原因,这是由于黑客在对称加密秘钥协商完成之前就入侵了网络,并将数据进行了篡改。

那么,如果客户端能够识别出其收到的数据是被篡改过的数据,进而终止向服务器发送数据,就可以避免信息的泄露。而客户端识别数据是否被篡改的依据,就是权威的CA机构颁发的CA证书,在https协议中,服务器向客户端发送的就是其CA证书,CA证书上会携带服务器的公钥以及其他的服务器相关信息。

CA证书就类似于我们生活中的身份证,身份证由权威机构(政府)颁发,是可以被信任的,如果身份证冒用或者造假,很容易就会被识别出来。

如果某服务端希望实现https协议通信,那就要向权威的CA机构申请CA证书,CA机构会对服务端进行审核,审核通过为该网站生成专门的数据签名,流程如下:

  • CA机构尤其公钥A和私钥A'。
  • 通过Hash算法,获取服务端申请下来的认证证书对应的数据摘要。
  • CA机构通过其私钥A',对数据摘要进行加密,获取对应的数据签名。

我们可以认为,服务端获取的CA证书的内容为:证书的明文信息 + 对应数据签名,服务器就是将证书明文 + 对应数据签名发回给客户端的。

图6.1 通过CA认证获取数据签名的流程

客户端通过CA证书判别服务端发送的数据是否在网络中被黑客篡改的流程为:

  • 将服务器发回来的证书的明文信息和数据签名做分离。
  • 将分解出来的明文信息通过Hash算法生成对应的数据摘要,在通过CA机构的公钥A解密数据签名,得到解密后的数据摘掉。
  • 对比通过对明文Hash和解密数签名要后获取的摘要,如果不相同,则表示数据被替换过了,客户端会终止向服务器发送数据。如果相同,通过明文数据检查目标服务器是否正确,以防止黑客替换整张CA证书。
图6.2 客户端通过CA证书判断数据是否被篡改的流程

七. 总结

  • http协议采用明文传输数据,https协议采用密文传输数据,相对于http协议,https协议更加安全。
  • 早期采用http协议通信时,数据容易被中间人截获并篡改。
  • 对称加密和非对称加密是两种常用的加密方式,对称加密中加密和解密使用同一把秘钥进行,而非对称加密有一把公钥一把私钥,一把负责加密另一把负责解密,公钥在全网公开,私钥私有不公开。
  • 数据摘要是将正文内容通过Hash算法生成的内容,而数据签名则是对数据摘要使用秘钥加密后生成的内容。
  • 在https协议通信中,采用对称加密、非对称加密、对称加密与非对称加密配合的方法,都存在安全隐患,不能保证数据不被黑客截获。
  • 通过 CA认证 + 对称加密 + 非对称加密 的方式,可以保证数据传输的安全性。客户端通过检查服务端发回的CA证书的合法性,就能判断数据是否在网络中被第三方修改,如果数据被修改了,客户端就会终止向服务器发送数据。

相关文章:

Linux网络编程:详解https协议

目录 一. https协议概述 二. 中间人截获 三. 常见的加密方法 3.1 对称加密 3.2 非对称加密 四. 数据摘要和数据签名的概念 五. https不同加密方式的安全性的探究 5.1 使用对称加密 5.2 使用非对称加密 5.3 非对称加密和对称加密配合使用 六. CA认证 七. 总结 一.…...

LLVM IR 文档 专门解释 LLVM IR

https://llvm.org/docs/LangRef.html#phi-instruction...

免费服务器搭建网盘教程,给电脑挂载500G磁盘

免费服务器搭建网盘教程,给电脑挂载500G磁盘 请勿注册下载,注册下载是空白文件,使用免登录下载 免费搭建网盘教程,给电脑挂载500G磁盘 其他按照下载教程操作教程代码: 下载下来的文件pancn 文件拖到您创建的容器 手机的话点击…...

【Java】微服务——Nacos配置管理(统一配置管理热更新配置共享Nacos集群搭建)

目录 1.统一配置管理1.1.在nacos中添加配置文件1.2.从微服务拉取配置1.3总结 2.配置热更新2.1.方式一2.2.方式二2.3总结 3.配置共享1)添加一个环境共享配置2)在user-service中读取共享配置3)运行两个UserApplication,使用不同的pr…...

QT基础入门——信号和槽机制(二)

前言: 在Qt中,有一种回调技术的替代方法:那就是信号和槽机制。当特定事件发生时,会发出一个信号。Qt的小部件中有许多预定义的信号,但我们可以将小部件子类化,向它们添加自定义的信号。槽是响应特定信号的…...

黑豹程序员-架构师学习路线图-百科:JavaScript-网页三剑客

文章目录 1、为什么需要JavaScript2、发展历史3、什么是JavaScript3.1、JavaScript介绍3.2、JavaScript内部结构3.3、主要功能 4、TypeScript 1、为什么需要JavaScript 前面我们已经了解了网页三剑客的HTML和CSS,已经明确了它们的职责。 HTML负责页面的展现&#x…...

三、互联网技术——IP子网划分

文章目录 一、IP地址基础1.1 IP地址分类1.2 网络掩码/子网掩码 二、子网划分VLSM2.1 为什么要进行子网划分2.2 怎么进行子网划分2.3 子网划分原理2.4 例题一2.5 例题二2.6 例题三2.6 例题四2.7 例题五2.8 例题六2.9 例题七2.10 例题八 三、无类域间路由CIDR3.1 例题一3.2 例题二…...

TinyWebServer学习笔记-log

为什么服务器要有一个日志系统? 故障排查和调试: 在服务器运行期间,可能会发生各种问题和故障,例如程序崩溃、性能下降、异常请求等。日志记录了服务器的运行状态、错误信息和各种操作,这些日志可以用来快速定位和排查…...

【kubernetes】CRI OCI

1 OCI OCI(Open Container Initiative):由Linux基金会主导,主要包含容器镜像规范和容器运行时规范: Image Specification(image-spec)Runtime Specification(runtime-spec)runC image-spec定义了镜像的格式,镜像的格式有以下几…...

竞赛 机器视觉opencv答题卡识别系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 答题卡识别系统 - opencv python 图像识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分…...

Youtube视频下载工具分享-油管视频,音乐,字幕下载方法汇总

YouTube视频下载方法简介 互联网上存在很多 YouTube 下载工具,但我们经常会发现自己收藏的工具没过多久就会失效,我们为大家整理的这几种方法,是存在时间较久并且亲测可用的。后续如果这些工具失效或者有更好的工具,我们也会分享…...

【算法练习Day11】滑动窗口最大值前 K 个高频元素

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 滑动窗口最大值前 K 个高频…...

华为云HECS云服务器docker环境下安装nginx

前提:有一台华为云服务器。 华为云HECS云服务器,安装docker环境,查看如下文章。 华为云HECS安装docker-CSDN博客 一、拉取镜像 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) docker pull nginx查看镜像 dock…...

GET 和 POST的区别

GET 和 POST 是 HTTP 请求的两种基本方法,要说它们的区别,接触过 WEB 开发的人都能说出一二。 最直观的区别就是 GET 把参数包含在 URL 中,POST 通过 request body 传递参数。 你可能自己写过无数个 GET 和 POST 请求,或者已经看…...

机器学习(监督学习)笔记

目录 总览笔记内容线性回归梯度下降特征缩放多输出线性回归 逻辑回归二分类与逻辑回归分类任务的性能指标(召回率,精度,F1分数等)支持向量机SVMK近邻朴素贝叶斯分类器朴素贝叶斯分类器进阶多分类逻辑回归二分类神经网络多分类神经…...

科普rabbitmq,rocketmq,kafka三者的架构比较

对比 架构对比 从架构可以看出三者有些类似,但是在细节上有很多不同。下面我们就从它们的各个组件,介绍它们: RabbitMQ,是一种开源的消息队列中间件。下面是RabbitMQ中与其相关的几个概念: 1.生产者(P…...

加密货币交易技巧——地利(二)

EMA指标 针对资金体量大的代币,做现货交易或低倍合约,可参考以下指标: 1.指标介绍:EMA,移动平均线指标,这里只分享中长线用法,非常实用且准确率超高 2.适用群体:适用于现货或低倍…...

服务网关Gateway_微服务中的应用

没有服务网关 问题: 地址太多安全性管理问题 为什么要使用服务网关 网关是微服务架构中不可或缺的部分。使用网关后,客户端和微服务之间的网络结构如下。 注意: 网关统一向外部系统(如访问者、服务)提供REST API。在Sp…...

2G大小的GPU对深度学习的加速效果如何?

训练数据情况 总共42776张224*224*3张图片 Found 42776 files belonging to 9 classes. Using 12833 files for training. 模型参数情况 Total params: 10,917,385 Trainable params: 10,860,745 Non-trainable params: 56,640 batch-size:12 GPU信息 NVIDIA GeForce GT 7…...

intel 一些偏门汇编指令总结

intel 汇编手册下载链接:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html LDS指令: 手册中可以找到 位于 3-588 根据手册内容猜测:lds r16 m16:16 的作用,是把位于 [m16:16] 内存地址的数…...

python 多个proto文件import引用时出现ModuleNotFoundError错误

问题描述 my_proto文件夹里有两个proto文件,book.proto想要引用person.proto文件中的Person,如下 book.proto syntax "proto2";import "person.proto"; // 导入person.proto文件message Book {optional string name 1;optional …...

C语言图书管理系统

一、 系统概述 图书管理系统是一个用C语言编写的软件系统,旨在帮助图书馆或图书机构管理其图书馆藏书和读者信息。该系统提供了一套完整的功能,包括图书录入、借阅管理、归还管理、读者管理、图书查询、统计报表等。 二、 系统功能 2.1 图书录入 管理…...

归并排序及其非递归实现

个人主页:Lei宝啊 愿所有美好如期而遇 目录 归并排序递归实现 归并排序非递归实现 归并排序递归实现 图示: 代码: 先分再归并,像是后序一般。 //归并排序 void MergeSort(int* arr, int left, int right) {int* temp (int…...

【kubernetes】kubernetes中的Controller

1 什么是Controller? kubernetes采用了声明式API,与声明式API相对应的是命令式API: 声明式API:用户只需要告诉期望达到的结果,系统自动去完成用户的期望命令式API:用户需要关注过程,通过命令一…...

RabbitMQ-死信队列

接上文 RabbitMQ-java使用消息队列 1 死信队列简介 死信队列模式实际上本质是一个死信交换机绑定的死信队列,当正常队列的消息被判定为死信时,会被发送到对应的死信交换机,然后再通过交换机发送到死信队列中,死信队列也有对应的消…...

ElasticSearch - 基于 DSL 、JavaRestClient 实现数据聚合

目录 一、数据聚合 1.1、基本概念 1.1.1、聚合分类 1.1.2、特点 1.2、DSL 实现 Bucket 聚合 1.2.1、Bucket 聚合基础语法 1.2.2、Bucket 聚合结果排序 1.2.3、Bucket 聚合限定范围 1.3、DSL 实现 Metrics 聚合 1.4、基于 JavaRestClient 实现聚合 1.4.1、组装请求 …...

什么是数学建模(mooc笔记)

什么是数学建模 前提:我们数学建模国赛计划选择C题,故希望老师的教学中侧重与C题相关性大的模型及其思想进行培训。之后的学习内容中希望涉及以下知识点: logistic回归相关知识点。如:用法、适用、限制范围等。精学数学建模中常…...

基于SpringBoot的流浪动物管理系

基于SpringBoot的流浪动物管理系的设计与实现,前后端分离 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 首页 后台登陆界面 管理员界面 摘要 基于Spring Boot的…...

fcpx插件:82种复古电影胶卷框架和效果mFilm Matte

无论您是在制作音乐剪辑、私人假期视频还是大型广告活动,这个专业的插件都将帮助您为您的镜头赋予真正的电影角色。 复古效果在任何视频中都能立即识别出来,增添了感伤的复古氛围,并使镜头更具说服力。使用 mFilm Matte 轻松实现这些特征&…...

【LeetCode热题100】--98.验证二叉搜索树

98.验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 由于二…...

dede网站地图位置/关键词排名代发

2019独角兽企业重金招聘Python工程师标准>>> 其实微博是个好东西,关注一些技术博主之后,你不用再逛好多论坛了,因为一些很好的文章微博会告诉你,最近看到酷勤网推荐的一篇文章《30个提 高Web程序执行效率的好经验》&am…...

linux玩wordpress/在线域名查询网站

简单理解: 私有云是自己的房子,有钥匙的人可以进。 公有云是酒店,谁花钱给谁房卡,时间到了就退房。 公有云: 第三方提供商用户能够使用的云,一般可以通过网络连接服务器使用,成本比较低&#xf…...

电子商务网站建设的过程/2024年4月新冠疫情结束了吗

MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可…...

吉林做网站多少钱/重庆百度推广优化

多线程面试时,经常会考到一个用3个线程循环打印abcabcabc的问题 现用两种方法做了一下,也看了网上的其他 人的思路,大差不差一个对象,一个状态位控制,代码如下:package com.myTread.abcabc.my;import java.…...

重庆做网站建设的公司哪家好/品牌网站建设方案

一、创建DOM组件 React中Virtual DOM几乎涵盖了所有的原生DOM。React大部分工作都是在Virtual DOM完成的。 ReactDOMComponent针对Virturl DOM主要进行了一下处理: 属性的操作,事件的处理子节点的更新二、如何更新属性 当执行mountComponent时&#xff0…...

网站建设初衷/淘宝店铺运营推广

解决步骤:1、top命令查看CPU占用情况可以看到11042进程占用了非常多的CPU资源2、查看F5并发曲线:为什么应用耗费了这么多的线程,难道是用户量突然上来了,调取了F5的访问曲线图,可以看到在15:57左右并发量突然猛涨&…...