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

应用层—HTTPS详解(对称加密、非对称加密、密钥……)

文章目录

  • HTTPS
    • 什么是 HTTPS
    • HTTPS 如何加密
    • HTTPS 的工作过程
      • 对称加密
      • 非对称加密

HTTPS

什么是 HTTPS

HTTPS 也是一个应用层的协议。是在 HTTP 协议的基础上引入的一个加密层。

由来:HTTP 协议内容都是按照文本的方式明纹传输,这就导致在传输过程中出现一些被篡改的情况,因此引入 HTTPS 加密层,用于保护数据。

典型案例就是运营商劫持。由于我们通过网络传输的任何数据包,都会经过运营商的网络设备(路由器、交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。比如说运营商在用户请求和响应的过程中,插入自己的广告或其他内容,改变原始网页的内容。

运营商为啥要这么做呢??
在这里插入图片描述

不止运营商可以劫持,其他的 黑客 也可以用类似的手段进行劫持,来窃取用户隐私信息,或者篡改内容。

HTTPS 就是在 HTTP 基础上进行了加密,进一步来保证用户的信息安全。



HTTPS 如何加密

想必大家都看过抗战时期的电视剧。在战争中,指挥部向前线传达命令或者情报时,通常会用利用无线电也就是我们所说的电报进行传达。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们为什么会用电报进行信息传达呢??其中最重要的一个原因是,电报具有很高的保密性.

在电报传输的时候,需要有一个密码本(称密钥)和一段要传输的文字(称明文),通信员会按照文字在密码本上的格式来进行传输,以此来形成一段密文。当接收方收到这段密文后,可以参照密码本来进行解析。如果是敌军截获这段电报,是很难解析出来其中的含义的。HTTPS 网络传输的过程,就相当于电报通信的过程。

根据电报的例子我们不难理解,明文+密钥 = 密文(加密) 、密文+密钥 = 明文(解密).

有的场景,加密和解密,使用的是相同的密钥,称为"对称加密"

还有的场景,加密和解密,使用的是不同的密钥,称为"非对称加密"

非对称加密中的不同密钥,还可以分为“公钥”和“私钥”。公钥可以用来加密,私钥就能用来解密。反过来同样如此。



HTTPS 的工作过程

对称加密

最简单的保证安全的做法,是引入对称密钥,针对传输的数据(HTTP 的 header 和 body)进行加密。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


但事情没这么简单。每个客户端,都需要有一把自己的对称密钥(不同客户端的密钥也要不同)如果客户端生成了密钥,就需要把密钥传输给服务器。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


这时候,就还需要想办法,把密钥安全的传输到对端。**需要对这个密钥进行加密!!**此时如果还继续使用对称加密,针对刚才的密钥进行加密,就一定是不行的!!

需要使用非对称加密,针对对称密钥进行加密。



非对称加密

非对称加密要用到两个密钥,一个叫做 “公钥”, 一个叫做 “私钥”。

公钥和私钥是配对的。最大的缺点就是运算速度非常慢,比对称加密要慢很多,因此传输中通常使用对称加密。

  • 通过 公钥 对明文加密,变成密文。
  • 通过 私钥 对密文解密,变成明文。

反过来也可以用。


针对上面对称加密产生的问题,可以使用非对称加密来解决。

首先,服务器产生一对 公钥 和 私钥 ,私钥服务器自己留着用,公钥会发给服务器。接着客户端利用公钥生成密文发送给服务器(发送对称加密的密钥给服务器),服务器利用自己的私钥解开密文。在这过程中因为黑客没有掌握私钥,所以无法破解密文。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传



上述的过程中,还存在一个严重的问题,中间人攻击。黑客可以使用中间人攻击的方式,仍然可以拿到对称密钥。

简单来说就是,黑客可以假装自己是服务器,收到服务器发来的 公钥(pub1) 后,自己再设置一对 公钥(pub2) 和 私钥(pri2),将自己的 公钥(pub2) 发给客户端,以此骗取客户端对称加密的密钥,从而在后续过程中截取信息。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传



如何解决中间人攻击的问题呢??

解决中间人攻击的关键,需要让客户端能够确认当前收到的公钥,确实是服务器返回的,而不是黑客伪造的!!!

因此引入了证书机制,需要有一个第三方的认证机构。通过第三方机构作保,来确认当前的 公钥 是有效的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传



到了这一步,黑客仍然还有办法!!!黑客可以把自己伪装成认证机构,骗客户端安装自己的公钥。此时就可以正大光明的替换掉证书中的数字签名。(这里如何进一步进行反针对,就不再讨论)

网络安全中,“攻击”和“防御”是一个对抗的过程。这个过程,理论上是"无限升级的过程"。由此我们可以看到,网络上没有绝对的安全。

上网需谨慎,消息套路深!!!
在这里插入图片描述

相关文章:

  • 5G_系统同步机制(八)
  • JVM篇--垃圾回收器高频面试题
  • R语言【cli】——ansi_trimws():从ANSI字符串中删除前导和/或尾随空格
  • 链表|数据结构|C语言深入学习
  • c++设计模式之单例模式
  • 力扣(leetcode)第35题搜索插入位置(Python)
  • Git 操作
  • 启动低轨道卫星LEO通讯产业与6G 3GPP NTN标准
  • 纯前端网页编辑Office文档安全预览之打开Word文档后禁止另存为....
  • P1068 [NOIP2009 普及组] 分数线划定————C++、Python
  • HTML+CSS:飞翔按钮
  • 04 单链表
  • Go 爬虫之 colly 从入门到不放弃指南
  • HTTP 第二章 发展历史
  • 电工技术实验指导书-万用表的使用
  • [译] 怎样写一个基础的编译器
  • [译]CSS 居中(Center)方法大合集
  • 【Amaple教程】5. 插件
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • create-react-app做的留言板
  • gulp 教程
  • IndexedDB
  • java取消线程实例
  • Vue小说阅读器(仿追书神器)
  • 包装类对象
  • 创建一种深思熟虑的文化
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 开源地图数据可视化库——mapnik
  • 聊聊sentinel的DegradeSlot
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端性能优化——回流与重绘
  • 前端知识点整理(待续)
  • 软件开发学习的5大技巧,你知道吗?
  •  一套莫尔斯电报听写、翻译系统
  • ionic异常记录
  • #pragma 指令
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C语言)fread与fwrite详解
  • (C语言)共用体union的用法举例
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (二)WCF的Binding模型
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (七)Java对象在Hibernate持久化层的状态
  • (算法)N皇后问题
  • (原)本想说脏话,奈何已放下
  • .gitignore文件---让git自动忽略指定文件
  • .NET 中让 Task 支持带超时的异步等待
  • .net/c# memcached 获取所有缓存键(keys)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET处理HTTP请求
  • .net和jar包windows服务部署
  • @RequestParam详解
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ NOI 2001 ] 食物链