网络初阶——应用层:HTTPS 协议

news2024/12/25 22:19:34

一、HTTPS & HTTP 的区别

从协议的名字来看,HTTP 比 HTTPS 少了一个 S。而这个 “S”,其实可以理解成 “Safe”,所以不难看出,其实 HTTPS 就是 HTTP 的安全版。就是为了保证客户端 cookie 的传输安全的。

二、相关概念

1、明文

没有被加密过的数据就是明文。

2、秘文

被加密过的数据就是秘文。

3、密钥

负责给数据加密和解密的都叫密钥。

3.1. 私钥

不会被发出去的,只有自己知道的密钥就是私钥。

3.2. 公钥

会被发给对方的,让所有人都知道的密钥就是公钥。

4、对称加密

发送方和接收方双方各有一把密钥,这两把密钥是完全相同的。发送方用密钥给数据加密,然后接收方就用相同的密钥给数据解密,这就叫对称加密。

举个例子,假设发送方想发个 5,且发送方和接收方的密钥都是 7,那么发送方就会用密钥加密:5 ^ 7 = 2,然后再把 2 发给接收方;然后接收方收到 2 后,再通过密钥解密 2 ^ 7 = 5,那么接收方就成功拿到 5 了。

5、非对称加密

发送方和接收方也是各有一把密钥,但这两把密钥是不同的。一把是公钥,一把是私钥。假设发送方持有的是公钥,接收方持有私钥,那么当发送方要发送数据时,发送方会先用公钥加密数据,再发给接收方,但接收方只能用密钥来对这个数据解密;而如果发送方持有的是私钥,接收方持有的是公钥,那么当发送方向接收方发数据时,会用私钥加密数据,然后再发给接收方,然后接收方只能用对应的公钥才能成功解密发来的数据。

三、加密方法

1、双方都用非对称加密

  1. 服务端拥有公钥 S 与对应的私钥 S' ,客户端拥有公钥 C 与对应的私钥 C'。
  2. 客户和服务端交换公钥。
  3. 客户端给服务端发信息:先用 S 对数据加密,再发送,只能由服务器解密,因为只有服务器有私钥 S'。
  4. 服务端给客户端发信息:先用 C 对数据加密,再发送,只能由客户端解密,因为只有客户端有私钥 C'。

2、非对称加密 + 对称加密

  1. 服务端具有非对称公钥 S 和私钥 S'
  2. 客户端发起 https 请求,获取服务端公钥 S
  3. 客户端在本地生成对称密钥 C,通过公钥 S 加密,发送给服务器.
  4. 由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥(遇到中间人攻击照样寄)。
  5. 服务器通过私钥 S' 解密,还原出客户端发送的对称密钥 C。并且使用这个对称密钥加密给客户端返回的响应数据。
  6. 后续客户端和服务器的通信都只用对称加密即可。 由于该密钥只有客户端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义。

四、中间人攻击

 

  1. 服务器具有非对称加密算法的公钥 S,私钥 S'
  2. 中间人具有非对称加密算法的公钥 M,私钥 M'
  3. 客户端向服务器发起请求,服务器明文传送公钥S给客户端
  4. 中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥 S 替换成自己的公钥 M ,并将伪造报文发给客户端
  5. 客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),自己形成对称密钥 C,用公钥 M 加密 C,形成报文发送给服务器
  6. 中间人劫持后,直接用自己的私钥 M‘ 进行解密,得到通信密钥 C,再用曾经保存的服务端公钥 S 加密后,将报文推送给服务器
  7. 服务器拿到报文,用自己的私钥 S' 解密,得到通信秘钥 C
  8. 双方开始采用 C 进行对称加密,进行通信。但是一切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

五、CA 证书

从前面的 “中间人攻击” 问题可发现,其实就是因为客户端没办法分辨自己收到的密钥是不是合法的,或者说客户端是不知道自己收到的密钥到底有没有被中间人调包。更准确地说,产生 “中间人攻击” 问题的根本原因就是客户端一开始就接受了中间人的密钥 M 。而如何解决这个“中间者攻击” 问题呢?答案就是要引入一个叫 “CA 证书” 的东西了。

1、服务器如何获得 “CA 证书”

2、通信过程中证书的形成与处理

因为接收者只能用 CA 的公钥对 CA 签名进行解码,而 CA 签名又是衡量这个数据有没有被改过的唯一标准;所以当接收者接收到一个莫名的密钥时,接收者只认 CA 的公钥。 

Q:为什么有了证书就可以保证数据的安全呢?

  • 中间者修改明文但不改签名

虽然数据是明文,不过一旦中间者修改了数据,那么就必然会导致接收者在对数据进行哈希映射后得到的值不等于数字签名的映射的值,那么该数据就会判定为已经被改过的数据,于是接收者就不会接收它了。

  • 中间者修改明文和签名 

中间者最多就通过它自己的密钥修改签名,然后再把签名连同数据发给接收者。但可惜的是,接收者只有 CA 的公钥但没有中间者的公钥,因此接收者是无法用 CA 的公钥解密中间者发来的签名的;而一旦接收者发现解密错误,那么就会意识到这个数据已经被中间者改了,那么也不会接受这个数据。

六、最终解决方案

  1. 客户端向服务端发送请求
  2. 服务端给客户端发证书(里面包含了服务端的公钥)
  3. 客户端拥有服务端的公钥后,通过非对称加密给服务端发对称密钥
  4. 客户端和服务端进行对称加密

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

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

相关文章

怎么禁止Ubuntu自动更新升级

怎么禁止Ubuntu自动更新升级 笔者在做MIT 6.S081的时候发现他给我的qemu自动更新了又卡住了,故关闭了自动更新 文章目录 怎么禁止Ubuntu自动更新升级一、图形化修改二、基于命令行修改配置文件的方法 一、图形化修改 1.打开设置->软件和更新->更新 2.选择自…

Spring Boot框架:构建符合工程认证的计算机课程

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

机器学习—选择激活函数

可以为神经网络中的不同神经元选择激活函数,我们将从如何为输出层选择它的一些指导开始,事实证明,取决于目标标签或地面真相标签y是什么,对于输出层的激活函数,将有一个相当自然的选择,然后看看激活函数的选…

【学习记录】使用CARLA录制双目摄像头SLAM数据

一、数据录制 数据录制的部分参考了网上的部分代码,代码本身并不复杂,基本都是简单的CARLA语法,关键的一点在于,CARLA内部本身并没有预设的双目摄像头,需要我们添加两个朝向相同的摄像头来组成双目系统,这…

[论文粗读][REALM: Retrieval-Augmented Language Model Pre-Training

引言 今天带来一篇检索增强语言模型预训练论文笔记——REALM: Retrieval-Augmented Language Model Pre-Training。这篇论文是在RAG论文出现之前发表的。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 语言模型预训练…

【人工智能】ChatGPT多模型感知态识别

目录 ChatGPT辅助细化知识增强!一、研究背景二、模型结构和代码任务流程一:启发式生成 三、数据集介绍三、性能展示实现过程运行过程训练过程 ChatGPT辅助细化知识增强! 多模态命名实体识别(MNER)最近引起了广泛关注。…

【黑马点评debug日记】

q1:登录无session跳转主页 p30,页面登录后返回,然后点击我的,需要重新设置,拦截器都没有问题。 参考: redis 黑马点评p30 login没有正常跳转,修改前端代码后还是一直跳转主界面_黑马点评登录后跳转到主页…

地面远阴影对光伏电站的影响

影响因素 1、太阳高度角和方位角 太阳高度角是指太阳光的入射方向和地平面之间的夹角。太阳高度角随时间、季节和地理位置的变化而变化。 方位角是指太阳光线在水平面上的投影与正南方向的夹角。方位角也随时间和地理位置的变化而变化。 可以通过天文公式或者专业的太阳位置…

消息队列高级

目录 消息可靠性 生产者消息确认 第一步:修改application.yml配置文件信息 第二步:定义发送者确认confirm回调方法 第三步:创建消息发送者回执return回调方法(确保消息从交换机到消息队列) 总结: 消息持…

宏观经济学笔记

【拯救者】宏观经济学速成 国民生产总值GNP: GNP 衡量一国(地区)成员在一定时期内运用生产要素所生产的全部最终产品和服务的市场价值。凡是本国国民所 创造的收入,不管生产要素是否在国内,都计入本国GNP中。 GDP本国居民在本国创造的价值外国居民在本国…

ONLYOFFICE 8.2测评:功能增强与体验优化,打造高效办公新体验

引言 随着数字化办公需求的不断增长,在线办公软件市场竞争愈加激烈。在众多办公软件中,ONLYOFFICE 无疑是一个颇具特色的选择。它不仅支持文档、表格和演示文稿的在线编辑,还通过开放的接口与强大的协作功能,吸引了众多企业和个人…

独显装完ubuntu后启动黑屏显示/dev/sda:clean files blocks的解决方案

解决方案如下: 选中Ubuntu按E键 在编辑界面倒数第2行的linux那行(后面有quiet splash选项)的最后添加nomodeset 然后按F10保存重启 然后管理员权限打开/etc/modprobe.d/blacklist.conf,在文件末尾添加: blacklist…

[Docker#2] 发展历史 | Namespace环境隔离 | Cgroup资源控制

目录 1.发展历史 Jail 时代 云时代 云原生时代 技术标准的确立 虚拟机 vs Docker 2. 容器化技术 2.1 Namespace 命令详解 1. dd 命令 2. mkfs 命令 3. df 命令 4. mount 命令 5. unshare 命令 实战 进程隔离 文件隔离 2.2 CGroup 相关命令 2.1 pidstat 2.…

AI生活之我用AI处理Excel表格

AI生活之我用AI处理Excel表格 场景再现AI提问词AI代码运行调试结果心得感受 场景再现 因学习需要,整理了某个题库,方便自己刷题使用。 已将每套题打上了制定标签,得到一个Excel表格。截图如下: 需求是:一共35套题&…

Stable Diffusion Web UI - ControlNet 姿势控制 openpose

openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势,把姿势信息传递给 Stable Diffusion 扩散模型,让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果: 同样的姿势&#xff0…

第三百一十九节 Java线程教程 - Java线程中断

Java线程教程 - Java线程中断 我们可以通过使用interrupt()方法中断一个活动的线程。 这个方法调用在线程只是一个指示。它是由线程如何响应中断。 例子 下面的代码显示了中断主线程并打印线程中断状态的代码。 public class Main {public static void main(String[] args)…

人工智能(AI)和机器学习(ML)技术学习流程

目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…

Cynet:全方位一体化安全防护工具

前言 1999年,布鲁斯施奈尔曾说过:“复杂性是安全最大的敌人。”彼时还是19年前,而现在,网络安全已然变得更加繁杂。 近日我在网上冲浪过程中发现了这么一个平台性质的软件,看似具有相当强的防护能力。 根据Cynet的描…

可变类型参数

将形参设为可变类型参数,首先自己的函数要先有一个确定的形参,然后剩余的参数为 ... 用到三个宏,va_list, va_start, va_arg . va_list: 当作一个类型,底层是一个char* 被 typedef va_strat: 先定义一个va_list 类型的变量&#x…

AlphaFold3 开源啦!喜大普奔!

2024年5月8日,AlphaFold3 正式发布!时隔半年,今天,AlphaFold3 终于开源啦!🎉 不过别太激动哈哈哈哈哈,权重还是要额外申请的! 半年前,AlphaFold3 的发布激起了学术界的广…