网络原理(八):HTTPS

news2024/11/23 19:14:50

目录

HTTP 基本工作流程

利用对称密钥进行加密

利用非对称密钥进行加密

引入了第三方权威机构加密


之前在http 协议中说到:我们现在很少有网站直接使用HTTP 协议的,而是使用HTTPS ,至于什么原因,本篇会介绍清楚。

HTTPS 其实就是在http 的基础上做一层加密。这就不得不提到密码学了;提到密码学就得聊到图灵大佬。

图灵 (Alan Turing) - 知乎 (zhihu.com)

具体的故事,不是咱这里的重点,我们直接pass 了。重要的就是图灵大佬为计算机科学做了很大的贡献。

为什么我们有了http 还要做https 协议?

这就不得不提到曾经的故事了(运营商劫持事件):

我们的搜索引擎是怎么挣钱的?具体的其实我并不了解,但是就拿广告这个来说还是非常挣钱的。

举一个点击计费的广告而言:只需要你点击一下后台就有记录,如果是个医院或者啥大公司这么一下就是几十 ~ 几百之间。

那么就会出现刷单的可能(一般来说大公司都不会这么干,其实没必要),广告商和搜索引擎公司各有一个记录,每隔一段时间进行核对就没啥问题。并且一个广告商不止在一家公司投放广告。

但是在2014 年前后,就发生了运营商劫持事件,就是移动、联通等运营商通过修改点击的网站获取利益。我们之前在http 协议中不是说过:Referer 属性可以表示请求来自哪里,通过修改这个属性广告商的记录就记录到别的网站去了,此时就可以获利。

其实也很好查,只需要后台核对一下,就发现差别太大了。

那么这样去告官司吗?告是肯定要告的,但是这不是一年半载就可以结束的,一个搜索引擎的利润可比广告高得多,既然是运营商劫持,那么不让运营商劫持不就好了吗?

于是就给http 协议加一层密。

我们对于密码学没有过于深入的里了解,这里只讨论宏观的流程,而不讨论加密解密的细节算法。

HTTP 基本工作流程

利用对称密钥进行加密

所谓加密其实就是对 http 协议中的header 和 body 进行加密。

对称加密:利用一个对称密钥:key 来进行加密解密。

密文 + key = 明文

明文 + key = 密文。

如上图,但是问题来了,服务器怎么拿到这个key 呢?

客户端自己生成一个key ,通过网络传输,传输给客户端。

我们假设在传输过程中猫了个黑客:

可是key 需要通过网络传输才能传给服务器,黑客只要在中间结点截获就可以拿到这个key。

这样显然是不安全的,难道要再给key 进行加密??

这样就陷入死循环了。

这里顺便提一嘴,每个客户端都是不同的key 。如果都是同一个key 那完了,更加不安全了,黑客破解一个key ,一组数据全毁了

针对这个问题,我们可以引入非对称加密

利用非对称密钥进行加密

客户端是希望安全的将密钥 key 传输给服务器,不被黑客拿到。

而我们这里引入非对称密钥:公钥 pub (public)和 私钥 pri (private)

被pri 加密过的密文 + 公钥 =  明文

被pib 加密过的密文 + 私钥 = 明文 

我可以借助这一对非对称密钥将我们的 key 传过去。这样黑客就拿不到 key ,再之后就针对明文 用key 加密,此时就安全传输了/

我们来看看这样的流程:

 因为我们的公钥必须要用私钥才可以解密,而这个私钥是在服务器手上,黑客是拿不到这个私钥的,所以目前为止客户端的key 是安全的。

这个过程黑客啥也拿不到。

但是黑客一定要按照这个过程来吗?

他也是可以在这个过程有动作的啊。

我们再来走一次:

 

此时,当这个被 pub1 加密过的key 传输给黑客之后,黑客就可以用 pri1 拿到这个key, 在对这个key 用服务器的公钥加密,传给服务器。

这整个过程服务器并不知道客户端的 key 已经被黑客拿到了。

 

这样黑客就偷取到了想要的明文了。并且客户端和服务器并不知道这个key 已经被获取了。

我们将此上的过程称之为 " 中间人攻击  " 。

 上述的中间人攻击是客户端对这个公钥无限得信任,不管你发了啥,我直接利用它进行加密了。

那么怎么样才可以让客户端对这个公钥进行判断呢?判断其是否可信!

这样我们就引入了第三方权威机构

引入了第三方权威机构加密

我们每个服务器都向第三方权威机构申请一个证书。

这个证书是个啥呢?

这个证书其中包括了:

服务器的 url ;

证书的过期时间;

颁布的机构是啥;

服务器自己的公钥;

........

其中最重要的是 " 加密过后的签名 "。

这个签名就是针对这个证书所有属性进行计算过后的校验和。这个校验和就是签名。

再有证书颁布机构,使用自己的私钥对这个签名进行加密。

我们上面说了,权威机构是用自己的私钥对这个签名进行加密的,私钥加密的可以用公钥解。这个权威机构的公钥在哪呢?

其实是在电脑操作系统中内置了,这些权威机构一共就那么几家,对操作系统而言,并不是什么很大的负担。

 这样我们客户端就可以拿到这个证书了。既然是操作系统中内置了的,那么黑客也可以解开这个证书啊。没错,黑客雀氏可以解开,黑客通过修改这个签名,但是没有权威机构的私钥,无法进行加密(就无法发送给客户端,发送过去也没有用),就算黑客真的获取到了这个权威机构的私钥,将修改后签名发送给了客户端,但是,我前面说了这个签名其实就是个校验和,一旦修改过后,这个校验和就不对了,客户端就发现异常了。

客户端拿到这个证书以后,就是通过自己操作系统内置的公钥进行验证,只有当验证通过以后
才可以,利用签名中的服务器的公钥对自己的key进行加密

这个是个重点!!!!!

 

上述介绍的这一套流程,对称加密 + 非对称加密 + 证书 这一套流程(SSL / TLS 协议),不仅仅是 HTTPS 会涉及到,其他场景也会用到SSL(SSH协议),例如JDBC。

HTTPS = HTTP + SSL 

总的来说,其实没有绝对的安全,我们上述整个过程其实就是将黑客的破解成本提高了,黑客要是不计成本来攻击,其实也能攻的下来,但是消耗的时间和其他成本就不得而知了!!!!

ok,讲到这里其实 HTTPS 也就讲完了。

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

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

相关文章

C++11 -- lambda表达式

文章目录 lamaba表达式的引入lambda表达式语法lamabda达式各部分说明捕获列表说明 lamaba表达式底层原理探索 lamaba表达式的引入 在C11之前,如果我们想对自定义类型Goods排序,可以根据姓名,价格,学号按照从大到小或者从小到大的方式排序,可是,这样我们要写额外写6个相关的仿函…

以太坊学习三: Merkle树和验证

Merkle tree简介 Merkle树又称为哈希树,是一种二叉树,由一个根节点、若干中间节点和一组叶节点组成。最底层的叶节点存储数据,在它之上的一层节点为它们对应的Hash值,中间节点是它下面两个子节点的Hash值,根节点是最后…

DAY 66 数据库缓存服务——NoSQL之Redis配置与优化

缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存&am…

爆肝整理,最全单元测试-测试用例总结(全覆盖)及拿即用...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

Maven私服仓库配置-Nexus详解

目录 一、什么是Maven私服?二、Maven 私服优势三、Maven 私服搭建四、Sonatype Nexus介绍五、Nexus仓库属性和分类六、Nexus仓库配置以及创建仓库七、Nexus配置用户角色八、Maven SNAPSHOT(快照)九、项目当中配置Nexus上传依赖十、项目当中配置Nexus下载依赖十一、测…

人工智能基础部分20-生成对抗网络(GAN)的实现应用

大家好,我是微学AI,今天给大家介绍一下人工智能基础部分20-生成对抗网络(GAN)的实现应用。生成对抗网络是一种由深度学习模型构成的神经网络系统,由一个生成器和一个判别器相互博弈来提升模型的能力。本文将从以下几个方面进行阐述&#xff1…

flutter_学习记录_03_通过事件打开侧边栏

实现类似这样的侧边栏的效果&#xff1a; 可以用Drawer来实现。 1. 在Scaffold组件下设置endDrawer属性 代码如下&#xff1a; import package:flutter/material.dart;class ProductListPage extends StatefulWidget {ProductListPage( {super.key}) ;overrideState<Pro…

首发Yolov8优化:Adam该换了!斯坦福最新Sophia优化器,比Adam快2倍 | 2023.5月斯坦福最新成果

1.Sophia优化器介绍 斯坦福2023.5月发表的最新研究成果,他们提出了「一种叫Sophia的优化器,相比Adam,它在LLM上能够快2倍,可以大幅降低训练成本」。 论文:https://arxiv.org/pdf/2305.14342.pdf 本文介绍了一种新的模型预训练优化器:Sophia(Second-order Clippe…

低资源方面级情感分析研究综述

文章目录 前言1. 引言2. 问题定义、数据集和评价指标2.1 问题定义2.2 任务定义2.3 常用数据集 3. 方面级情感分析的方法3.1 **方面词抽取**3.1.1 基于无监督学习的方法3.1.1.1 基于规则的方面词抽取3.1.1.2 基于统计的方面词抽取 3.1.2 基于有监督浅层模型的方法3.1.3 基于有监…

【C++初阶】类和对象(下)之友元 + 内部类 + 匿名对象

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

一台服务器通过nginx安装多个web应用

1.首先安装nginx网站服务器 yum install nginx 2.nginx 的主配置文件&#xff1a;/etc/nginx/nginx.conf (一台服务器有两个域名部署) 我们在/etc/nginx/nginx.d/下创建一个conf文件&#xff0c;这个文件会被嵌套到主配置文件当中 server { listen 80; …

《数据库应用系统实践》------ 个人作品管理系统

系列文章 《数据库应用系统实践》------ 个人作品管理系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构&#xff08;需包含功能结构框图和模块说明&#xff09;3&#xff0e;系统功能简介 二、概念模型设计1&#xff0e;基本要素&#xff08;符号介绍说明&…

Netty客户端与服务器端闲暇检测与心跳检测(三)

网络应用程序中普遍存在一个问题&#xff1a;连接假死&#xff0c;连接假死现象是:在某一端(服务器端|客户端)看来,底层的TCP连接已经断开,但是应用程序没有捕获到,因此会认为这个连接还存在。从TCP层面来说,只有收到四次握手数据包,或者一个RST数据包,才表示连接状态已断开; 连…

Spring练习二ssm框架整合应用

导入教程的项目&#xff0c;通过查看源码对aop面向切面编程进行理解分析 aop面向编程就像是我们给程序某些位置丢下锚点&#xff08;切入点&#xff09;以及当走到锚点时需要调用的方法&#xff08;切面&#xff09;。在程序运行的过程中&#xff0c; 一旦到达锚点&#xff0c;…

f-stack的源码编译安装

DPDK虽然能提供高性能的报文转发&#xff08;安装使用方法见DPDK的源码编译安装&#xff09;&#xff0c;但是它并没有提供对应的IP/TCP协议栈&#xff0c;所以在网络产品的某些功能场景下&#xff08;特别是涉及到需要使用TCP协议栈的情况&#xff09;&#xff0c;比如BGP邻居…

Ansible原理简介与安装篇

工作原理 1、在Ansible管理体系中&#xff0c;存在“管理节点”和“被管理节点” 2、被管理节点通常被称为”资产“ 3、在管理节点上&#xff0c;Ansible将AdHoc或PlayBook转换为python脚本。并通过SSH将这些python脚本传递到被管理服务器上。在被管理服务器上依次执行&#xf…

遥感云大数据在灾害、水体与湿地领域及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

目录 基础篇010.1 STM32驱动RC522 RFID模块之一&#xff1a;基础知识 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3.2 配置调试方式 3.3 配置时钟电路 3.4 配置时钟 3.5 配…

【C++】Map、Set 模拟实现

文章目录 &#x1f4d5; 概念&#x1f4d5; 实现框架Find()★ 迭代器 ★反向迭代器map 的 operator[ ] &#x1f4d5; 源代码rb_tree.hset.hmap.h &#x1f4d5; 概念 map、set 是 C 中的关联式容器&#xff0c;由于 map 和set所开放的各种操作接口&#xff0c;RB-tree 也都提…

2023.05.28 学习周报

文章目录 摘要文献阅读1.题目2.现有方法存在的局限性3.SR-GNN模型4.模型的组成部分4.1 构图4.2 item向量表示4.3 session向量表示4.4 预测模块 5.实验与分析5.1 数据集5.2 比较方法5.3 评估指标5.4 实验结果 6.结论 有限元法1.一个例子2.进一步 深度学习1.张量场2.对流-扩散方程…