HTTPS协议

目录

  • HTTPS概念
  • 加密是什么
  • 常见加密方式
    • 对称加密
    • 非对称加密
    • 数据摘要&&数据指纹
    • 数据签名
  • HTTP工作过程探究
    • 方案一:只使用对称加密
    • 方案二:只使用非对称加密
    • 方案三:双方都使用非对称加密
    • 方案四:非对称加密+对称加密
    • 中间人攻击
  • 引入证书
    • CA认证
    • 理解数据签名
    • 非对称加密+对称加密+证书认证

HTTPS概念

在前面我们已经详细的介绍了HTTP协议,但是HTTP协议由于是明文传送,传送过程中会出现安全问题,所以就引入了HTTPS协议:

  • HTTPS 是一种应用层协议,是一种透过计算机网络进行安全通信的传输协议;
  • HTTPS 经由 HTTP 进行通信,但是在 HTTP 的基础上引入了一个加密层,使用 SSL/TLS 来加密数据包;
  • HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性;
  • HTTPS 默认工作在 TCP 协议443端口。

在这里插入图片描述

加密是什么

首先,我们需要理解以下概念:

  • 明文:要传输的原始的消息;
  • 密文:通过一定的规则将明文变换后的内容;
  • 加密:将明文变成密文;
  • 解密:将密文变成明文;
  • 密钥:在加密和解密的过程中,往往需要一个或多个中间的数据来辅助该过程,这样的数据称为密钥;

为什么需要https,为什么需要加密?

我们平时下载某些软件的时候就会发现,我们点击下载的按钮,本来是应该下载我们需要的软件的,但是他就会突然跳转值另一个链接,下载其他软件,这就叫做运营商劫持。

我们通过网络传输的任何数据都会经过运营商的网络设备(路由器,交换机等),运营商的网络设备就可以解析出我们的传输数据内容,进行篡改。我们可以想象,如果我们此时发生劫持的不是运营商,而是黑客,那岂不是就很危险。所以HTTPS的出现,使用密文传输进一步的保证了用户的信息安全。

常见加密方式

既然要保证数据安全,就需要进行“加密”,即网络传输中不再直接传输明文,而是加密之后的“密文”。加密的方式有很多,但是整体可以分为两大类:对称加密和非对称加密。

对称加密

  • 采用单密钥系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称之为对称加密,也称单密钥加密。特征:加密和解密所用的密钥是相同的;
  • 常见的加密算法:DES、3DES、AES、TDEA、Blowfish、RC2等;
  • 特点:算法公开,计算量小,加密速度快,加密效率高;

对称加密其实就是只通过一个密钥,把明文加密成密文,并且也能把密文解密成明文。

比如我们平时所说的异或操作,我们在C语言中学习过不使用变量来交换两个数,就是通过异或的方法,异或就是一个最简单的对称加密的方法,假设明文为 1234,密钥为 8888。通过明文和密钥异或操作实现加密 1234 ^ 8888,得到密文为 9834。然后通过密文和密钥异或操作解密 9834 ^ 8888,得到明文 1234

非对称加密

  • 需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
  • 常见的非对称加密算法:DSA、DSA、ECDSA;
  • 特点:算法强度复杂,安全性依赖于算法与密钥但是由于其算法复杂,使得其加密解密速度没有对称加密解密速度快;

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

公钥和密钥是配对的,最大的缺点就是运算速度非常慢,比对称加密慢得多。

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

他也可以反着用:

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

数据摘要&&数据指纹

  • 数据指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数据摘要。数据指纹并不是一种加密机制,但可以用来判断数据有没有被篡改;
  • 摘要常见方法:MDS、SHA1、SHA256、SHA512等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出相同的摘要,但是概率非常低);
  • 摘要特征:和加密算法的区别是,摘要严格意义上说不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比。

在这里插入图片描述

数据签名

摘要进过数据加密,就得到数据签名;

HTTP工作过程探究

既然要保证数据安全,就需要进行“加密”,网络传输中就不再直接传输明文,而是加密之后的“密文”,加密的方式有很多,但是整体分为两大类:对称加密和非对称加密。

方案一:只使用对称加密

如果通信双方各自持有同一个密钥X,且没有别人知道,这两方的通信安全自然是可以保证的(除非密钥被破解)
在这里插入图片描述
引入对称加密以后,即使数据被截获,由于黑客不知道密钥是啥,因此无法进行解密,也就不知道请求的真实内容是啥了。

但是服务器同一时刻其实要给很多客户端提供服务,多个客户端的密钥都必须是不同的(相同的话就太容易扩散,黑客也就能拿到了),因此服务器就需要维护每个客户端与每个密钥之间的关联关系。

在这里插入图片描述
比较理想的做法,在客户端和服务器建立连接的时候,双方协商密钥是什么。
在这里插入图片描述
此时如果把密钥明文传输,黑客也就获得密钥了,所以密钥的传输也必须是密文传输,此时对密钥进行对称加密就仍需先协商一个“密钥的密钥”,就会变成先有鸡还是先有蛋的问题,所以对密钥的加密也就行不通了。

方案二:只使用非对称加密

鉴于非对称加密的机制,如果服务器先把公钥以明文方式传递给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传,从客户端到服务器似乎是安全的,但是服务器到浏览器就不一定了,如果服务器端用它的私钥加密数据传输给浏览器,那么浏览器用公钥就可以解密它,这个公钥一开始是明文传输给浏览器的,若公钥被中间人给劫持到了,那他也能用公钥解密服务器传来的信息了。
在这里插入图片描述

方案三:双方都使用非对称加密

  • 服务端拥有公钥S和私钥S’,客户端拥有公钥C和C’;
  • 客户端和服务端交换公钥;
  • 客户端给服务端发消息:先用S对数据加密,在发送,只能用服务器解密,因为只有服务器有私钥S’;
  • 服务端给客户端发消息:先用C对数据加密,在发送,只能用客户端解密,因为只有客户端有私钥C’。
    在这里插入图片描述
    上面这种方案看似没有安全问题,但是效率太慢,因为双方都为非对称加密,而且他也不一定是安全的,稍后我们就会解释。

方案四:非对称加密+对称加密

  • 服务端具有非对称公钥S和私钥S’;
  • 客户端发起https请求,获取服务端公钥S;
  • 客户端在本地生成对称密钥C,通过公钥S加密,发送给服务器;
  • 由于中间网络设备没有私钥,即使截获了数据,也无法还原出原文,也就无法获取对称密钥;
  • 服务端通过私钥S’进行解密,还原出客户端发出的对称密钥C并且使用这个对称密钥加密给客户端返回的响应数据。
  • 后序客户端和服务端的通信都只使用对称加密即可,由于该密钥只有客户端和服务端两个主机知道,其他主机/设备不知道密钥即使截获也没有意义。

在这里插入图片描述
上面这种方案看似也是安全的,但是此时我们并不知道中间人攻击的场景,下面我们针对上面这些场景来理解中间人的的攻击场景,就会发现这种方法也是不安全的。

中间人攻击

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

在这里插入图片描述
针对中间人这种情况,方案三和方案四都会出现安全问题,这里中间人能够攻击成功的本质就是中间人能够对数据做篡改并且client无法验证收到的公钥是合法的,为了解决上面的问题,就需要对client进行合法性认证。

引入证书

CA认证

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

在这里插入图片描述
当服务端申请CA证书的时候,CA机构会对该服务端进行审核,并专门为该网站形成数字签名,过程如下:

  1. CA机构拥有非对称加密的私钥A和公钥A;
  2. CA机构对服务端申请的证书明文数据进行hash,形成数据摘要;
  3. 然后对数据摘要用CA私钥A加密,得到数字签名S。

因为我们最终颁发给服务端的证书除了一些明文信息意外还有通过hash产生的数据摘要,通过hash产生的数据摘要几乎不会存在重复的情况,所以就算中间人能够截取到我们的CA认证,就算将非对称密钥的公钥和私钥替换成自己的,甚至自己去认证机构申请CA认证,最终客户端请求认证的过程中也会被认证机构给识别出来,因为数据摘要存在差异。

理解数据签名

在这里插入图片描述
经过CA几个认证以后,此时我们就可以的到我们安全的方案了。

非对称加密+对称加密+证书认证

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见面试题-JDK和CGLIB动态代理

JDK 动态代理和 CGLIB 动态代理对比 JDK 动态代理只能代理实现了接口的类,而 CGLIB 可以代理未实现任何接口的类。另外CGLIB 动态代理是通过生成一个被代理类的子类来拦截被代理类的方法调用,因此不能代理声明为final 类型的类和方法就二者的效率来说&a…

Unbuntu安装、测试和卸载gcc11

GCC 可用于编译 C、C,本文介绍如何 Ubuntu 上安装 gcc11、测试和卸载它。 1. 在Ubuntu 上安装 gcc11 添加工具链存储库 sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test在 Ubuntu 上安装 gcc11 sudo apt install -y gcc-11验证 gcc11 版本 gcc-11 --v…

AI:80-基于深度学习的医学图像分割与病变识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

数据架构与数据模型

数据架构: 待定 数据模型: 数据模型是对现实世界数据特征的抽象,用于描述一组数据的概念和定义。数据模型从抽象层次上描述了数据的静态特征、动态行为和约束条件。数据模型所描述的内容有三部分,分别是数据结构、数据操作和数…

数据结构与算法 | 第四章:字符串

本文参考网课为 数据结构与算法 1 第四章字符串,主讲人 张铭 、王腾蛟 、赵海燕 、宋国杰 、邹磊 、黄群。 本文使用IDE为 Clion,开发环境 C14。 更新:2023 / 11 / 12 数据结构与算法 | 第四章:字符串 字符串概念字符串字符字符…

rocksdb中测试工具Benchmark.sh用法(基准、性能测试)

1.首先要安装db_bench工具,这个工具在成功安装rocksdb之后就自动存在了,主要是在使用make命令之后就成功安装了,详情请见我之前的文章 2.确保成功安装db_bench之后,找到安装的rocksdb目录下面的tools文件夹,查看里面是…

如何让VirtualBox系统使用Ubuntu主机的USB

如何让VirtualBox系统使用Ubuntu主机的USB 当通过 VirtualBox 尝试不同的操作系统时,访问虚拟机中的 USB 驱动器来传输数据非常有用。 安装Guest Additions 自行百度安装Guest Additions的方法,最终的效果如下: 将用户添加到 vboxusers 组…

前端面试题 计算机网络

文章目录 ios 7层协议tcp协议和udp协议的区别tcp协议如何确保数据的可靠http和tcp的关系url输入地址到呈现网页有哪些步骤post和get本质区别,什么时候会触发二次预检GET请求:POST请求:触发二次预检(CORS中的预检请求)&…

通过结构间比值比较迭代次数

( A, B )---3-30-2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,A有5个点,B全是0,排列组合。让A,B训练集分别有3,4,5,6张图片,统计迭代次数并排序。 先比较图片数量是3和4的情况 n4 迭代次数…

移植LVGL到单片机的一个demo简单介绍

简介 背景: 本文使用的是主控IC为stm32f103zet6, 显示IC为ST7735s,它是128*160的像素,色深为RGB565颜色。 官方虽然说LVGL移植平台只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面。但我移植到stm32f103c8t6,不管怎么修改配…

【数据结构】入队序列出队序列问题(以21年408真题举例)

题型说明 一般是一个队列,其中一边可以入队,另一边可以入队和出队只可入队的含义是从这个方向是以队列形式存在可以入队和出队表示此边以堆形式存在 怎么分析? 以21年408真题举例 考点分析 出队序列存在两种情况:入之后就出&…

是谁为所欲为,将我的电脑控作己用?

在刚刚发完短篇小杂文《要找事做,我真怕被闲死》的投稿之后,笔者继续浏览社交网站的网页搜索...... 正看到《温州殡仪馆 》《温州动车723事故死亡高 》《 动车脱轨温州事件真正原因》《 浙江平阳县灭门惨案处理结果公布》《 温州厉秀珍死亡 》这一串又一…

从HDFS到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系 1、Hadoop时代的落幕2、Databricks和Snowflake做对了什么3、Hadoop与对象存储(OSD)4、Databricks与Snowflake为什么选择对象存储5、对象存储面临的挑战 1、Hadoop时代的落幕 十几年前,Hadoop是解决大规模数据分析的“白…

Qt开发流程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

SpringBoot整合第三方技术

SpringBoot整合JUnit 名称:SpringBootTest 类型:测试类注解 位置:测试类定义上方 作用:设置JUnit加载的SpringBoot启动类SpringBootTest(classes Springboot05JUnitApplication.class) class Springboot07JUnitApplicationTests…

腾讯云3年轻量2核4G5M服务器756元,抓紧数量不多

腾讯云轻量应用服务器特价是有新用户限制的,所以阿腾云建议大家选择3年期轻量应用服务器,一劳永逸,免去续费困扰。腾讯云轻量应用服务器3年可以选择2核2G4M和2核4G5M带宽,3年轻量2核2G4M服务器540元,2核4G5M轻量应用服…

redis学习指南--概览篇

redis怎么学 官方学习网站: redis.cn 1、整体了解redis redis是一个内存数据库、kv数据库,数据结构数据库,redis中数据都是存储在redis中,可以通过key查找value,value可以有多种数据结构,有:…

归并外排序实现

文章目录 1. 海量数据排序 1. 海量数据排序 如果我们想在文件中海量数据排序,我们比较适合选用归并排序。 首先,我们要看要排序的文件的大小,比如说这个文件是10G,而我们的内存是1G,那么我们可以把文件切成10份。这样…

汽车操纵稳定性matlab仿真

1、内容简介 略 14-可以交流、咨询、答疑 2、内容说明 汽车操纵稳定性matlab仿真,包含完整的论文 操纵动力学、两自由度 摘要:当今,仿真技术日益广泛地应用于汽车工程领域,操纵稳定性研究越来越多地使用成熟的计算机仿真理论…

【LeetCode:715. Range 模块 | 线段树】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…