Linux——HTTPS协议

news2024/11/17 12:20:07

HTTPS也是一个应用层协议:只是是在 HTTP 协议的基础上引入了一个加密层而已~

目录

概念准备

1什么是加密

2为什么要加密

3常见的加密方式 

对称加密

非对称加密

数据摘要(数据指纹)

一HTTPS加密方式

方案1只使用对称加密

方案2只使用非对称加密

方案3双方都使用非对称加密

方案4对称加密+非对称加密

​编辑

二中间人攻击

三CA认证证书

1理解数据签名

2证书

3查看浏览器的受信任证书发布机构 

4方案五对称加密+非对称加密+证书

5总结


概念准备

1什么是加密

加密:明文 (要传输的信息)进行一系列变换, 生成密文
解密:密文进行一系列变换, 还原成明文
在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这
样的数据称为密钥

在86版的火烧圆明园中,亲臣递给慈禧太后的周折中

明文 

秘钥:烧了的洞

密文:通过秘钥将文字进行组合成句子

2为什么要加密

例子:臭名昭著的 "运营商劫持"

未被劫持的效果

劫持的效果

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等)(中间人):那么它就可以解析出你传输的数据内容, 并进行篡改


至于为什么要这样做

3常见的加密方式 

对称加密

采用单钥密码系统的加密方法:同一个密钥用作信息的加密和解密

常见对称加密算法(了解): DES、 3DES、 AES、 TDEA、 Blowfish、 RC2 等

特点: 算法公开、 计算量小、 加密速度快、 加密效率高

简单对称加密例子:按位异或

假设 明文 a = 1234, 密钥 key = 8888
则加密 a ^ key 得到的密文 b 为 9834
然后针对密文 9834 再次进行运算 b ^ key, 得到的就是原来的明文 1234

非对称加密

需要两个密钥来进行加密和解密 这两个密钥:公开密钥和私有密钥(两者可以反着用)

常见非对称加密算法(了解): RSA, DSA, ECDSA
特点: 安全性依赖于算法与密钥,算法复杂,加密与解密速度慢

举生活例子来帮助理解:

A 要给 B 一些重要的文件, 但是 B 可能不在. 于是 A 和 B 提前做出约定:

B 说: 我桌子上有个盒子, 然后我给你一把锁,你把文件放盒子里用锁锁上, 然后我回头拿着钥匙来开锁取文件

在这个场景中, 这把锁就相当于公钥,钥匙就是私钥:公钥给谁都行(不怕泄露), 但是私钥只有 B 自己持有,持有私钥的人才能解密

数据摘要(数据指纹)

数字摘要(数据指纹),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定⻓度的数字摘要。 数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
摘要常见算法: 有 MD5、 SHA1、 SHA256、 SHA512 等(有可能发生碰撞,但概率极低)
摘要特征:摘要严格意义不是加密(没有解密),只不过从摘要很难反推原信息

常用来进行数据对比

百度云盘的秒传功能:用户在上传电影时,会先被服务器进行Hash函数的运算形成摘要;在自己的数据库中找对应摘要映射的资源;如果找到了,用户上传的速度立马就好了(实际是找到的资源拷贝一份到该用户资源空间中,达到秒传);如果没找到才进行资源上传的工作(通过网络将资源传输给服务器)

例外大部分储存用户密码的数据库也有应用:通过form表单提取到用户密码后进行Hash函数形成摘要进行保存:这样做的好处是:为了防止数据库泄露/不法人员得到用户数据进行牟取暴利

一HTTPS加密方式

方案1只使用对称加密

如果通信双方都各自持有同一个密钥 X, 且没有别人知道

但是怎么把秘钥X告诉客户端?

如果明文传输的话:不就被中间人给获取了吗!  

如果加密传输的话:就变成了先有鸡还是先有蛋的问题了

方案2只使用非对称加密

服务器生成公钥和私钥,在通信前把公钥交个服务器

保证单项通信安全(暂时)

但是:

非对称加密通信速度慢

往左通信的数据也能被中间人获取并解密(公钥大家都能获取)

方案3双方都使用非对称加密

双方都生成公钥和私钥,在进行通信前各自的公钥交给对方

看似安全,其实也是不安全的

用非对称加密通信速度慢 

方案4对称加密+非对称加密

客户端生成对称秘钥X,服务器生成公钥S和私钥S`:在通信前把公钥S交给客户端,客户端把自己的公钥X与公钥S加密后发给服务器,服务器私钥S`解密(只有它能解密)得到秘钥X;往后通信就通过对称加密进行!!

看似是最佳方案:通信速度快,通信过程都进行了加密

但是:还是一样不安全(与前一种类似) 

至于为什么会不安全,要看下面的中间人做了什么事~

二中间人攻击

server发送公钥S给client时,该信息会被中间人给劫持:换成自己的公钥X给client,client收到时是不知道被中间人篡改了:用中间人的公钥M进行加密发给server,发送过程又被中间人给劫持了:此时只有中间人能进行解密,得到对称秘钥X;在用之前劫持到的公钥S进行加密发给server,而服务器也不知道数据是被中间人篡改过的,以为是client发来的加密秘钥X,用私钥S`进行解密得到秘钥X:此刻client,server,mid都有了秘钥X,mid不就可以随便的来进行获取数据与篡改数据了吗!

那么为什么会让中间人得到秘钥呢?问题在哪?

在于首次server发送公钥时,client不知道公钥是不是‘合法’的!

三CA认证证书

1理解数据签名

签名的形成是基于非对称加密算法的, 注意:目前暂时和 https 没有关系,不要和https 中的公钥私钥搞混了

这里签名者是谁?暂时理解成签名者(临时)用自己生成公钥(Q)和私钥(Q`)来进行加密解密

假设这个签名者是我,要验证的人是张三:我用私钥钥(Q`)进行加密后与的带签名的数据和公钥(Q)交给张三,让张三去解密:在这个过程中如果出现了中间人(老六)把公钥换成它自己的公钥(L),张三认不认?当然不认:这份带签名的数据只有我的公钥(Q)能解密

说明:解密过程必须内置使用我的公钥(Q)来进行签名验证,并进行后续验证

这个世界上只有我有私钥(Q`):也就意味着:只有我有对数据进行签名的能力;当然这也是一种权利!谁持有大家都认的公钥(Q)对应的私钥(Q`),谁都可能进行签名!!

2证书

client第一次请求:除了得到公钥(Q),还会得到一份证书

那么这个证书从哪来的?谁给的?

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

证书就如身份证, 证明服务端公钥的权威性

 客户端(浏览器)一般都要内置可信的CA结构或者旗下授权的子公司的公钥来进行证书验证!

在线生成CSR和秘钥网站:CSR在线生成工具 

3查看浏览器的受信任证书发布机构 

 以Chrome 浏览器为例:进去浏览器后,点击右上角

选择 "设置", 搜索 "证书管理" , 即可看到以下界面. (如果没有,在隐私设置->安全性安全里面找找)

4方案五对称加密+非对称加密+证书

现在我们可以来对方案四进行完善:添加证书 

那么上方的方案中间人要想进行攻击有两个方向:局部替换和整体替换

中间人把证书里的公钥(Q)替换成自己的公钥(L)或者把整个证书替换成我自己生成的?

        不行!如果替换了,浏览器进行解密会解密失败(散列值不相等)

既然上面行不通:那中间人自己去CA机构申请证书然后把证书进行替换?

        第一中间人既然叫做中间人,自然时不希望自己的信息暴露(申请证书要个人基本信息)

        第二在证书中有域名选项需要你填:收到证书域名不一致会立马停止解密

5总结

以上方案设计的的秘钥有三组(两非一对)

第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在形成 CSR 文件与申请证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器在客户端请求时, 返回携带签名的证书. 客户端通过这个公钥进行证书验证, 保证证书的合法性, 进一步保证证书中携带的服务端公钥权威性。

第⼆组(非对称加密): 用于协商生成对称加密的密钥. 客户端用收到的 CA 证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

其实一切的关键都是围绕client收到的对称加密的密钥是否‘合法’来进行处理的!!

以上便是HTTPS的全部内容,有问题欢迎在评论区指正,我们下期见~


 

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

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

相关文章

C#|.net core 基础 - 深拷贝的五大类N种实现方式

在实际应用中经常会有这样的需求:获取一个与原对象数据相同但是独立于原对象的精准副本,简单来说就是克隆一份,拷贝一份,复制一份和原对象一样的对象,但是两者各种修改不能互相影响。这一行为也叫深克隆,深…

第6章 常用UI组件库

一.Element Plus组件库 1. 安装Element Plus 什么是Element Plus? Element Plus是基于Vue 3开发的优秀的PC端开源UI组件库,它是Element的升级版,对于习惯使用Element的人员来说,在学习Element Plus时,不用花费太多的…

CC面试准备

半导体基础 半导体是介于导体和绝缘体之间的一种介质,在不同条件下表现出不同的导电性或者不导电特性, 电子半导体器件材料大部分为硅,锗等元素 本征半导体:完全不含杂质的纯净半导体,因为不含杂质,其中…

[笔记]一组电缆、定位相关产品的技术参数

csdn不允许做广告,这里的那家定位供应商的技术看起来是可以的。很有希望。它的原理并不复杂,这家企业在处理业务领域以外的新型产品时,是查过资料的,这就超过了60%的同行。 1.电缆 仅给出现在市面供应的铠装电缆结构&#xff0c…

七层负载均衡和四层负载均衡的区别

文章目录 什么是七层负载均衡?一、定义与工作原理二、优点与缺点三、应用场景四、常见七层负载均衡器五、负载均衡算法 什么是四层负载均衡?一、定义与原理定义:原理: 二、特点与应用场景特点:应用场景: 三…

STM32基础学习笔记-ADC面试基础题6

第六章、ADC 常见问题 1、基本概念:什么是ADC ?作用 ?逐次逼近型 2、传感器本质 ?传感器、电压、ADC数值转化 ? 3、ADC的特征 ? 转化时间、分辨率、精度、量化误差 ? 4、ADC框图组成部分 &…

华为云发布全栈可观测平台AOM,以AI赋能应用运维可观测

9月19日,华为全联接大会2024举办期间,在“AI赋能应用现代化,加速软件生产力跃升”为主题的论坛上,华为云发布全栈可观测平台AOM,以AI赋能应用运维可观测,提升企业应用可用性与稳定性。 该平台发布标志着华…

针对国产化--离线安装Nginx rpm包下载 ARM64(.aarch64.rpm) 版本下载

源地址:https://nginx.org/packages/centos/7/aarch64/RPMS/ 可以选择系统分别进行下载对应的rmp包

公安局软件管理平台建设方案和必要性,论文-2-———未来之窗行业应用跨平台架构

一、平台方略 随着gov信息化建设的不断推进,各类ZW软件的应用需求日益增加。为了提高ZW软件的获取便利性、AQ性和规范性,建设一个专门的GOV软件管理平台具有重要意义。 集中提供各类ZW软件,方便工作人员快速获取和安装,减少因软…

基于DAMODEL——Faster-RCNN 训练与测试指南

Faster-RCNN 训练与测试指南 前言 今天我们要来实现一个经典的目标检测模型:Faster-Rcnn。我们使用DAMODEL云平台来实现,这是个很强大的云端平台,功能众多,你可以投你所好去进行你想做的事情。 1. 环境与工具准备 1.1 远程连接…

经颅磁刺激技术,脑科学研究——精神患者治疗方案

经颅磁刺激(Transcranial Magnetic Stimulation ,TMS)技术是一种利用脉冲磁场作用于中枢神经系统(主要是大脑),改变皮层神经细胞的膜电位,使之产生感应电流,影响脑内代谢和神经电活动…

开放原子开源基金会OPENATOM

AtomGit_开放原子开源基金会代码托管平台-AtomGit 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于 2020 年 6 月在北京成立,由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。 精选项目: 比…

HDFS_API文件和文件夹

代码: Beforepublic void init() throws URISyntaxException, IOException {URI uri new URI("hdfs://master:9000");// 创建一个配置文件Configuration entries new Configuration();// 获取到了客户端对象 // entries.set("dfs.replicat…

【C++笔试强训】

​ 学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客 目录 循环渐进Forward-CSDN博客 第一题:除2! 第二题:dd爱框框 第三题:简写单词 第一题:除2! 牛客网…

Uniapp 打包后的横屏控制

文章目录 问题处理参考 问题 Uniapp 打包后的横竖屏跟开发模式不太一样,需要在代码里设置一下 处理 需要改两个地方 pages.json:在 globalStyle 中添加 "pageOrientation": "auto", manifest.json:在第一层后面添加…

每日学习一个数据结构-哈希表(散列表)

文章目录 示意图一、基本概念二、工作原理三、常用哈希函数四、冲突解决方法五、优缺点六、应用场景 哈希表(Hash table),也被称为散列表,是一种基于哈希函数的数据结构,它通过把关键码值(Key value&#x…

毛竹泛基因组-文献精读52

Haplotype-based pangenomes reveal genetic variations and climate adaptations in moso bamboo populations 基于单倍型的泛基因组揭示了毛竹种群中的遗传变异和气候适应性 摘要 毛竹(Phyllostachys edulis)是东亚地区一种在生态和经济上都具有重要…

二刷LeetCode:“51.N皇后 37.解数独”题解心得(简单易懂)

引言(初遇噩梦,再遇坦然) 在阅读本文之前,建议大家已经接触过回溯算法,并完成回溯相关题目,例如:子集问题、组合问题、排列问题。 子集:子集II、子集 组合:组合、组合总和…

[spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范

文章目录 一. MyBatis XML配置文件1. 配置链接字符串和MyBatis2. 写持久层代码方法定义Interface方法实现xml测试 3. 增删改查增:删改查 二. 开发规范(mysql)三. 其他查询操作1. 多表查询2. #{} 和 ${}(面试题)使用区别 排序功能like查询 三. 数据库连接池 一. MyBatis XML配置…

【华为】用策略路由解决双出口运营商问题

需求描述 不同网段访问互联网资源时,走不同的出口,即PC1走电信出口,PC2走移动出口。 客户在内网接口下应用策略路由后往往出现无法访问内网管理地址的现象,该举例给出解决办法。 拓扑图 基础配置 #sysname R1 # # interface G…