HTTPS

文章目录

  • HTTPS
      • 加密
      • 对称加密
      • 非对称加密
      • 中间人攻击
      • 引入证书
      • HTTPS传输过程


HTTPS

HTTPS是要比HTTP更安全

HTTP是一个明文传输的协议,本来传的试是啥,实际传的就是啥。

一旦传输过程中,数据被第三方获取到了,可能就会造成一些重要信息的泄露

HTTPS就是在HTTP的基础之上,引入了一个加密层(SSL/TLS),简单来说HTTPS就是由HTTP和SSL组成的

明文:真正要传输的消息

密文:指的就是加密之后的消息

明文 => 密文 称为 “加密”

密文 => 明文 称为 “解密”

密钥就是解密用的

加密

加密的过程中,又分成两种加密方式

对称加密

加密:明文 => 密文 使用一个密钥

解密:密文 => 明文 使用同一个密钥

非对称加密

加密:明文 => 密文 使用密钥1

解密:密文 => 明文 使用密钥2

密钥1和秘钥2是不同的秘钥(虽然这俩秘钥不同,但是存在关联关系的,这两个秘钥是成对出现的)

可以使用密钥1加密,使用密钥2解密;也可以使用密钥2加密,使用密钥1解密

通常会把其中一个密钥给公开出去,别人就可以使用这个密钥来加密了。自己留下另外一个密钥,用来解密。

把公开出去的秘钥称为"公钥",把自己保留的秘钥称为"私钥"。

这里的公钥和私钥,就可以想象成现实生活中的信箱

公钥就像信箱上的锁,私钥就像这把锁的钥匙。

对称加密

先使用对称加密的方式,针对HTTP中传输的数据加密

对称加密里最关键的就是这个密钥,客户端和服务器需要约定好密钥是啥

如果是客户端生成了密钥,就需要通过网络告知服务器,密钥是啥

密钥本身也在网络上文明传输,也容易被黑客获取,一旦被黑客获取到了了,后续的加密就失去了意义。

正确的手段,是针对这个对称密钥,进行加密

非对称加密

引入非对称加密,使用非对称加密来对对称密钥进行加密

一个网站,生成一对公钥和私钥,把公钥公开出去,自己保留私钥

客户端就先拿这个网站的公钥来对自己的 对称密钥 进行加密,然后传输密文给服务器,服务器拿私钥解密,也就得到了密钥的明文。

只要有了个密钥,后续就可以直击使用对称加密来进行传输

既然都有非对称加密了,为啥还非得用对称加密呢?

对称加密,成本是比较低(机器资源消耗少),速度也是很快的

非对称加密,成本比对称加密高很多(机器资源消耗的多),速度也慢

中间人攻击

通过非对称加密的手段,确实是可以更安全的进行数据传输,但是还有点问题,就是客户端是如何获取到公钥的?

如何保证客户端获取到的公钥是真实可靠的,而不是黑客伪造的?

任何人都可以生成一对 公钥和私钥,网站服务器能生成,黑客也一样能生成。

黑客就想到一招,狸猫换太子

如果黑客入侵了网路设备,在客户端向服务器获取公钥的时候,把自己生成的公钥和私钥进行了替换,那么此时客户端拿到的公钥就会是黑客伪造的公钥。

在这里插入图片描述

引入证书

为了解决中间人攻击的问题,就可以引入证书来反制黑客伪造公钥这个问题

客户端和服务器连接的时候,客户端不是简单的索要公钥了,而是直接索要一个"证书",公钥就包含在这个证书里面

然后这个证书不是服务自己生成的,而是第三方机构颁发的

然后客户端拿到证书之后,就可以根据证书中提供的信息,去第三方机构进行认证,来校验证书是否合法。

证书如果合法,那么就可以信任其中的公钥。

服务器开发中在搭建服务器的时候要去第三方机构来进行认证,申请证书

证书也是可以伪造的,浏览器会对拿到的证书进行校验,如果校验不通过浏览器就会有错误提示,提示该网站证书非法,继续访问存在安全风险

浏览器上面还会有一个按钮"继续访问",技术再怎么牛逼保证安全,也担不住用户犯蠢去点击。

HTTPS传输过程

  1. 客户端先从服务器获取到证书,证书中包含了公钥
  2. 客户端对证书进行校验
  3. 客户端生成了一个对称密钥,使用公钥对对称密钥进行加密,发送给服务器
  4. 服务器得到这个请求之后,使用私钥解密,得到对称密钥
  5. 客户端发出后续的请求,后续的请求都是使用这个对称密钥加密的
  6. 收到的数据也都是使用这个对称密钥解密的

这个过程其实描述的是 SSL/TLS 的握手过程

但凡使用了SSL/TLS 的协议/工具/组件,都是类似的握手过程

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python While 循环语句

Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件(condition):执行语句(statements)…… 执行语句可以是单个语句或语句块。判…

医院小程序如何在线搭建?实战解析

在当今数字化时代,移动应用程序成为我们生活中必不可少的一部分。特别是在医疗领域,移动应用程序的需求更为迫切。为了满足这一需求,开发一个医疗小程序成为了许多医疗机构的优先选择。 在本文中,我们将分享一个实战攻略&#xff…

c++11 标准模板(STL)(std::basic_stringstream)(四)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_stringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::alloc…

ZooKeeper的典型应用场景及实现

文章目录 1、典型应用场景及实现1.1、 数据发布/订阅1.1.1、配置管理案列 1.2、负载均衡1.3、命名服务1.4、分布式协调/通知1.4.1、一种通用的分布式系统机器间通信方式 1.5、集群管理1.6、Master选举1.7、分布式锁1.7.1、排他锁1.7.2、共享锁 1.8、分布式队列 2、ZooKeeper在大…

zookeeper 集群

zookeeper 集群 1、zookeeper 集群说明 initLimit 是Zookeeper用它来限定集群中的Zookeeper服务器连接到Leader的时限 syncLimit 限制了follower服务器与leader服务器之间请求和应答之间的时限 服务器名称与地址&#xff1a;集群信息&#xff08;服务器编号&#xff0c;服务器…

【正点原子STM32连载】第二十三章 高级定时器互补输出带死区控制实验 摘自【正点原子】APM32F407最小系统板使用指南

第二十三章 高级定时器互补输出带死区控制实验 本章将介绍使用APM32F407输出带死区和刹车控制的两路互补PWM。通过本章的学习&#xff0c;读者将学习到高级定时器的互补输出、死区插入和刹车的功能的使用。 本章分为如下几个小节&#xff1a; 23.1 硬件设计 23.2 程序设计 23.…

Python学习教程:进程的调度

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 要想多个进程交替运行&#xff0c;操作系统必须对这些进程进行调度&#xff0c; 这个调度也不是随即进行的&#xff0c;而是需要遵循一定的法则&#xff0c;由此就有了进程的调度算法。 python更多源码/资料/解答/教程等 …

企业架构LNMP学习笔记11

Nginx配置文件的介绍&#xff1a; #nginx子进程启动用户 #user nobody; #子进程数量 一般调整为cpu核数或者倍数 worker_processes 1; #错误日志定义 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#进程pid 存储文件…

3DCAT携手华为,打造XR虚拟仿真实训实时云渲染解决方案

2023年5月8日-9日&#xff0c;以 因聚而生 众志有为 为主题的 华为中国合作伙伴大会2023 在深圳国际会展中心隆重举行。本次大会汇聚了ICT产业界的广大新老伙伴朋友&#xff0c;共同探讨数字化转型的新机遇&#xff0c;共享数字化未来的新成果。 华为中国合作伙伴大会2023现场&…

检漏仪和高真空度控制技术在热管漏率和内部真空度测量中的应用

摘要&#xff1a;大量MEMS真空密封件具有小体积、高真空和无外接通气接口的特点&#xff0c;现有的各种检漏技术无法对其进行无损形式的漏率和内部真空度测量。基于压差法和高真空度恒定控制技术&#xff0c;本文提出了解决方案。方案的具体内容是将被测封装器件放置在一个比器…

可扩展的Blender插件开发汇总

成熟的 Blender 3D 插件是令人惊奇的事情。作为 Python 和 Blender 的新手,我经常发现自己被社区中的人们创造的强大的东西弄得目瞪口呆。坦率地说,其中一些包看起来有点神奇,当自我怀疑或冒名顶替综合症的唠叨声音被打破时,很容易想到“如果有人能做出可以做xxx的东西就好…

EasyAVFilter的初衷:把ffmpeg.c当做SDK来用,而不是当做EXE来用

之前我们做一个视频点播的功能&#xff0c;大概的流程就是将上传上来的各种格式的视频&#xff0c;用FFmpeg统一进行一次转码&#xff0c;如果probe到视频的编码格式是H.264就调用-vcodec copy&#xff0c;如果probe到视频的编码格式不是H.264就调用-vcodec libx264&#xff0c…