Linux:详解https协议

文章目录

  • 什么是https协议
  • 信息窃取
  • 常见的加密
  • 数据摘要和数据指纹
  • https的工作过程
    • 只使用对称加密
    • 只使用非对称加密
    • 都使用非对称加密
    • 非对称加密+对称加密
  • 证书
    • 数据签名
    • https方案

本篇要总结的内容是关于https协议的相关内容

什么是https协议

在讲述https协议之前,首先要明确的一点是,在应用层中是允许http协议和https协议同时存在的,那对于https的协议理解,我先借助下面这张图来进行描述

在这里插入图片描述
在上述图中,下三层表示的是在内核当中的,严格意义来说传输层和网络层是在操作系统的内部,而数据链路层是在网卡驱动层,因此也就比对了对应的网络协议,网络协议栈,操作系统之间的关系,而其中在前面认识到的套接字和系统调用接口,都是可以帮助程序员进行开发

那之前对于http的协议认识来说,用户的数据是会以http请求或相应来作为载体,之后再进行对应的交付信息,但是http的最大问题是,它的传输是明文传输,是不安全的,这也就意味着中间人都能够有资格去获得对应的http协议想要传递的内容,这是不可被接受的,因此基于这样的原因,数据安全的设计者就在此基础上添加了一层软件层,当数据准备交给操作系统之前,要增加一个ssl加密解密层,用来维护这当中的各种信息,那未来这些信息都会用加密的方式来进行传输,最终传输到对方的信息后,再在对方的应用层进行解析,换句话说,只有双方的应用层才能知道传递的是什么信息

在这里插入图片描述
所以此时操作系统其实在发送的消息已经变成了一些毫无意义的二进制信息,但是操作系统不关心,它还是会正常的进行信息的传递过程

所以说,其实核心来说,https协议本质上也是一种应用协议,它核心就是在http的基础上新增了一个加密层,而之前的http协议在进行网络传输的时候使用的都是明文传输,有很大的可能会进行所谓的读取抓包篡改的行为,而为了解决这样的问题,其中一种思路就是让双方一个进行加密,一个进行解密,这样就能做到在传递的时候先加密,然后传递到对方手中再进行解密

为了更好的理解这个过程,我这里举一个例子,比如现在进程a向进程b发送了一个信息是10,那现在在进行网络传输的过程中,很有可能这个过程就会被人劫持,劫持之后对应的信息就都会被发现,那为了解决这样的问题,提前进行一个约定,我们约定在进行数据传输之前要对这个数字按位异或上9876这个数字,那么当传输到网络的时候,实际上此时的数字已经变成了一个没有什么意义的数字,而在传递到对方的手中时,再对这个数字继续进行按位异或上9876,那么就能解析出对应的数据信息了,这就是对于https加密的一个基本理解

信息窃取

不管怎么说,只要信息在网络上没有进行加密,就可能会出现被窃取的可能性,我举一个最简单的例子,比如在局域网中,有一个路由器,当用户的网络连接到这个服务器之后,会通过这个服务器进行各种信息的交互,而这些信息是必然要通过这个路由器向外界进行传输,进而传递到基站,然后传递到更远的位置,那这个路由器就有可能会充当一个信息窃取的角色,它可以对于当前用户的信息进行抓包,甚至进行更改用户想要传递的信息,这样就能做到对于信息窃取的功能,这样就更加突出了比如要对于信息进行保护

常见的加密

基于这样的原因,自然就要对于信息做出一些常见的加密,那么从这里开始就要对于信息的加密方式进行一一列举和分析

对称式加密

所谓对称式加密,最大的特点就是加密和解密都用同样的一个数字,就比如刚才的按位异或的方法就是一个最典型的案例,而除此之外这样的加密特点是速度非常快,这也可以理解,毕竟直接进行运算就可以

非对称加密

那除了上面的加密方式外,还有一种是非对称加密,那所谓非对称加密就是说的是加密和解密用的是不同的数据,有两组数据作为中间数据,进行加密和解密的过程,这个和前面的区别是会出现两套不同的密钥,比如对于客户端的加密可以采用的是公钥进行加密,而传递到服务端进行解析采用的是私钥进行解密,这样的方法原理就是非对称加密,那非对称加密的运行特点是速度很慢,但是由于私钥的存在,所以在世界上只有拥有私钥的人才能对于信息进行解密,所以从某种意义来说私钥是相对比较安全的

数据摘要和数据指纹

在了解了上面的概念后,引入的下一个概念是关于数据摘要和数据指纹,所谓数据摘要,就是利用一些哈希函数,对于当前的信息进行一系列复杂的运算,最终运算出的结果可能是一串固定长度的数字摘要,那这个数字摘要就可以被看做是一种数字指纹,这个内容并不是进行加密,而是被用来判断这份数据到底有没有被进行修改,当这份数据被修改过后,它所形成的数据摘要就会截然不同,根据这个原理就可以判断信息是否被修改和截取

那形成信息摘要的方法,就被叫做是摘要算法,一种常见的算法就是md5算法,这个算法就可以把当前的文本生成一个很小的序列,之后对于文本比对就可以转换为对于这个小序列进行比对,如果这个序列被改变了,那么就一定意味着这个文本被改变过

https的工作过程

为了方便于理解https协议,从本小节开始将会对于信息的加密进行一些设计

只使用对称加密

在这里插入图片描述
上图所示的内容就是一个基本的原理,服务器和客户端之间使用一个约定了一个密钥进行沟通,就类似于前面的按位异或9876这样的方案,但是这样的方案并不靠谱,因为这个数字随时可能被客户端进行泄漏,这样就会导致密钥失去它的意义

只使用非对称加密

第二种方法是可以使用非对称的加密方式,具体原理可以看做是,服务器先把公钥传输给浏览器,之后浏览器向服务器传输数据之前都使用公钥加密好再传递给服务器,服务器使用私钥解开公钥加密的数据

这样看似乎好像是安全一些,但是问题还是存在的,服务器会传递给一些信息传递给浏览器,浏览器可以使用服务器最开始传递的公钥来进行加密,但是这是有问题的,如果在最开始服务器把信息传递给浏览器之前,公钥就已经被截取了,那么此时服务器向浏览器发送的信息都可以用公钥进行解析,进而被利用

都使用非对称加密

第三种方法是说,服务器有公钥和私钥,客户端也有公钥和私钥,客户端和服务端进行互换公钥:
客户端向服务端发消息,先对信息用s进行加密,然后传递给服务器,服务器用私钥s’来进行解析
服务端向客户端发消息,先对信息用c进行加密,然后传递给客户端,客户端用私钥c’来进行解析

在这里插入图片描述
这样的做法看似可以,但是实际依旧有问题,第一个问题是在传输的时候用私钥进行解析的效率太低,同时也有安全问题,我这里给出一种攻破方案:

在这里插入图片描述
由此可见,这样的的方案是不好的,既没有解决效率问题,还没有解决传输安全问题

非对称加密+对称加密

这里先解决效率问题:

在这里插入图片描述
这样的解决措施可以解决效率问题,但是对于中间人劫持依旧没有解决措施,因此这样的方案还是不能被采用

证书

那为了解决这个问题,因此引入了证书的概念,服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性

在这里插入图片描述
需要注意的是:申请证书的时候,需要在特定平台⽣成查,会同时⽣成⼀对⼉密钥对⼉,即公钥和私钥。这对密钥对⼉就是⽤来在⽹络通信中进⾏明⽂加密以及数字签名的。其中公钥会随着CSR⽂件,⼀起发给CA进⾏权威认证,私钥服务端⾃⼰保留,⽤来后续进⾏通信(其实主要就是⽤来交换对称秘钥)

数据签名

如何理解数据签名?如下图所示

在这里插入图片描述
当服务器申请CA证书的时候,就会对这个服务端进行审核,形成对应的数字签名:

  1. CA有非对称的密钥a和a’
  2. CA对于服务端的数据进行hash处理,形成数据摘要
  3. 然后用私钥a’进行加密,形成数字签名s

在未来,验证的方法非常简单,只需要使用公钥a进行验证就可以了,如果这个证书是伪造的,那么通过公钥a解密后一定不可能还原数据,因为最开始是使用密钥a’进行加密的

https方案

所以基于这样的原因,就可以设计出一个非对称加密+对称加密+证书认证的一套逻辑:

在客户端和服务器建立链接的时候,服务器给客户端返回一个证书,其中包含了之前服务端的公钥,也包含了网站的身份信息,客户端就可以进行验证了,判断有效期是否过期,判断证书的发布机构是否受信任,检验证书是否被篡改,这些方法都可以验证这个证书到底是否安全

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

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

相关文章

差分约束系统

差分约束系统 差分约束系统(spfa)1、概述2、过程模拟3、推理 差分约束系统(spfa) 1、概述 x j − x i ≤ w k x_j-x_i\le w_k xj​−xi​≤wk​转换为: x j ≤ w k x i x_j\le w_kx_i xj​≤wk​xi​ 在松弛操作中&…

dubbo 源码系列之-集群三板斧---负载均衡(-)

dubbo 源码系列之-负载均衡 概述核心接口 LoadBalanceDubbo 提供了 5 种负载均衡实现,分别是:LoadBalance 接口AbstractLoadBalance ConsistentHashLoadBalance 一致性hash1. 一致性 Hash 简析1.0 hash 算法2.0 一致性Hash算法3.0 一致性hash算法 引入槽…

K8S--SpringCloud应用整合Nacos实战

原文网址:K8S--SpringCloud应用整合Nacos实战-CSDN博客 简介 本文介绍K8S部署SpringCloud应用整合Nacos实战。 本文是将原来的SpringCloud项目(闪速优选)迁移到K8S上,一行代码都不需要改动。用K8S运行Nacos、Gateway、SpringCl…

PHP 读取嵌入式数据 SQLite3

SQLite3 属于轻量级开源的嵌入式关系型数据库,但它支持 ACID(Atomicity,Consistency,Isolation,Durability) 事务。 SQLite Download Page: https://www.sqlite.org/download.html 第一步:在 php.ini 中开启 extensionsqlite3 第二步:连接数…

Redis的String类型为什么重新设计使用了SDS数据结构呢

Redis 选择重新设计其 String 类型的底层数据结构,采用 SDS(Simple Dynamic String)而不是直接使用 C 语言标准库提供的原生字符串(char*)的原因主要包括以下几点: O(1) 时间复杂度获取长度: 在…

机器学习金融应用技术指南

1 范围 本文件提供了金融业开展机器学习应用涉及的体系框架、计算资源、数据资源、机器学习引擎、机 器学习服务、安全管理、内控管理等方面的建议。 本文件适用于开展机器学习金融应用的金融机构、技术服务商、第三方安全评估机构等。 2 规范性引用文件 下列文件中的内容通过…

C#,图论与图算法,用于检查给定图是否为欧拉图(Eulerian Graph)的算法与源程序

1 欧拉图 欧拉图是指通过图(无向图或有向图)中所有边且每边仅通过一次通路, 相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph), 具有欧拉通路而无欧拉回路的图称为半欧拉图。 对欧拉图的一个现代扩展是蜘蛛图,它向欧拉图增加了可以连接的存在点。 这给…

目标检测预测框可视化python代码实现--OpenCV

import numpy as np import cv2 import colorsys from PIL import Image, ImageDraw, ImageFontdef puttext_cn(img, text, pt, color(255,0,0), size16):if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型img Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2…

【HarmonyOS】ArkUI - 状态管理

在声明式 UI 中,是以状态驱动视图更新,如图1所示: 图1 其中核心的概念就是状态(State)和视图(View): 状态(State):指驱动视图更新的数据&#xf…

BI技巧丨个性化视觉对象

BOSS:那个,那个谁,最近用户反映了,说是你们做的报表不太行啊?! 白茶:(???)老板,怎么说? BOSS:就是…

pytest之统一接口请求封装

pytest之统一接口请求封装 pytest的requests_util.pyrequests_util.py 接口自动化测试框架的封装yaml文件如何实现接口关联封装yaml文件如何实现动态参数的处理yaml文件如何实现文件上传有参数化时候,怎么实现断言yaml的数据量大怎么处理接口自动化框架的扩展&#…

CSK6 接入聆思平台(LSPlatform)

一、开发环境 硬件:视觉语音大模型AI开发套件 二、使用大语言模型 官方指导文档: 开始使用 | 聆思文档中心 获取API密钥 | 聆思文档中心 1、注册 提交申请之后需要将注册电话号码通过微信发送给聆思科技工作人员,工作人员授权后&#xff…

阿里云4核16G服务器价格26.52元1个月、149.00元半年,ECS经济型e实例

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年,配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge,4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

Docker搭建LNMP环境实战(02):Win10下安装VMware

实战开始,先安装 VMware 虚拟机。话不多说,上手就干! 1、基本环境检查 1.1、本机Bios是否支持虚拟化 进入:任务管理器- 性能,查看“虚拟化”是否启用,如果已启用,则满足要求,如果未…

Linux 中的vim和gdb

目录 vim命令模式(常用)nyy-----复制n次np------黏贴n次u------撤销dd-----剪切/删除$-----将光标定位到当前行结尾^-----将光标定位到最开始。gg------将光标定位文本开始shiftg-----将光标定位文件尾。nshiftg----将光标定位到第n行上下左右键:h j k l (左下上右)…

故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型是一种深度学习模型,结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)的优点…

【Linux】详谈命令行参数环境变量

目录 一、浅谈命令行参数 二、环境变量 2.1环境变量的内涵以及理解 2.2PATH环境变量: 2.3输入程序名就能运行我们的程序 2.4系统中的环境变量 2.5导出环境变量 三、main函数的第三个参数 3.1获得环境变量的三种方法 四、本地变量 一、浅谈命令行参数 我们的m…

ubuntu arm qt 读取execl xls表格数据

一,ubuntu linux pc编译读取xls的库 1,安装libxls(读取xls文件 电脑版) 确保你已经安装了基本的编译工具,如gcc和make。如果没有安装,可以使用以下命令安装: sudo apt-update sudo apt-get install build-essentia…

C++ vector容器类型

vector类为内置数组提供了一种替代表示&#xff0c;与string类一样 vector 类是随标准 C引入的标准库的一部分 &#xff0c;为了使用vector 我们必须包含相关的头文件 &#xff1a; #include <vector> 使用vector有两种不同的形式&#xff0c;即所谓的数组习惯和 STL习…

基于python+vue超市货品信息管理系统flask-django-php-nodejs

在此基础上&#xff0c;结合现有超市货品信息管理体系的特点&#xff0c;运用新技术&#xff0c;构建了以 python为基础的超市货品信息管理信息化管理体系。首先&#xff0c;以需求为依据&#xff0c;根据需求分析结果进行了系统的设计&#xff0c;并将其划分为管理员和用户二种…