HTTPS安全防窃听、防冒充、防篡改三大机制原理

前言

        本文内容主要对以下两篇文章内容整理过滤,用最直观的角度了解到HTTPS的保护机制,当然啦,如果想要深入了解HTTPS,本文是远远不够的,可以针对以下第一个链接中的文章拓展板块进行学习,希望大家通过本文能够对HTTPS有一个初步的认识,

你真的了解HTTPS吗?(一) - HTTPS和加密 - 知乎 (zhihu.com)

1.5 万字 + 40 张图解 HTTP 常见面试题 - 知乎 (zhihu.com)

HTTPS

HTTPS公认的三大优势有:

  1. 数据加密,防窃听:HTTPS中的对称加密和非对称加密
  2. 身份验证,防冒充:HTTPS的CA和证书
  3. 完整性校验,防篡改:HTTPS的哈希

HTTPS混合加密——防窃听

HTTPS 采用的是对称加密非对称加密结合的「混合加密」方式:

  • 在通信建立前采用非对称加密的方式交换「会话秘钥SK」,后续就不再使用非对称加密。
  • 在通信过程中全部使用对称加密的「会话秘钥SK」的方式加密明文数据。

img

HTTPS为什么同时要有对称加密和非对称加密两种加密方式?
  • 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高
  • 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢

        解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通,这种设计同时兼顾了安全和效率

HTTPS对称加密的密钥SK如何产生和传输?

HTTPS分为2个过程

  1. 协商对称加密密钥SK的非对称加密阶段,称为TLS握手阶段
  2. 使用SK对数据(对话内容)进行对称加密的阶段,称为数据通信阶段

TLS握手阶段

产生对称密钥SK,主要基于三种常见的办法:

  • 基于非对称加密算法
  • 基于专用密钥交换算法,常见有DH、ECDH等
  • 基于共享的secret,常见有PSK,SRP等

数据通信阶段

        发送端首先用密钥SK对通信内容 + 通过摘要算法算出明文的「指纹」一同进行对称加密,接着通过网络传输出去;服务端收到数据后,用SK先将数据解密出明文,通过摘要算法算出明文的「指纹」,通过比较客户端携带的「指纹」和当前算出的「指纹」做比较,若「指纹」相同,说明数据是完整的。

image.png

HTTPS的有几套非对称加密?目的是什么?是否可以省略?

直接给出答案:2套非对称加密

        第一套用于协商对称加密密钥SK第二套用于数字证书签名加密。这两者的区别是:前者是服务器端(如果是双向验证的话,客户端也会有一套非对称加密公私钥)产生的。私钥在服务端上;后者是CA机构产生的,私钥在CA机构那边。并且,这2套都不可以省略。(这个说法略不严谨,但是在实际操作中,确实都不建议省略。)


HTTPS数字证书——防冒充

        在 HTTPS/TLS 协议中,客户端和服务器都有一份公钥和私钥。客户端会首先发起连接请求,服务器会将自己的公钥发送给客户端。客户端接收到公钥之后,会使用该公钥对信息进行加密,并将密文发送给服务器。在接受到加密信息的服务器端,会使用该服务器私钥(不是客户端私钥)对密文进行解密,得到原始信息。这就存在些问题,如何保证公钥不被篡改和信任度?

所以这里就需要借助第三方权威机构 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。主要依赖于一个“防伪标识” — 数字签名

        数字签名生成过程是首先对原文作哈希,把一段不定长的文本映射成固定长度的字符空间,接着再用CA机构的私钥对这段定长字符做加密。大大提高了整体的运算效率。

申请证书

        用户向CA机构提交自己的信息(如域名)和公钥(用于TLS握手阶段),CA机构利用的自己的私钥对其加密生成数字证书,通过数字证书的方式保证服务器公钥的身份,解决冒充的风险。

验证证书

        接受证书的一端先对除数字签名外的其他部分做一次相同的哈希算法(证书中指明了哈希算法),得到这段文本的哈希映射,记作H1;获取CA机构的公钥对数字签名属性做解码,得到了CA机构计算出的哈希映射,记作H2。对比H1和H2两个字符串是否严格相等,若是,代表该证书的信息未被篡改,证书有效;否则,证书内容被篡改,证书无效。 若证书有效,接受端会再进行对端的身份校验(验证域名) ,若身份验证通过,接收端会拿证书上的公钥加密接下来整个TLS握手阶段的会话密钥SK之后,发送给服务端。然后在服务端用私钥进行解密出SK

image.png

CA的公钥已事先置入到了浏览器或操作系统里


HTTPS的哈希——防篡改

        在数据通信阶段,SSL/TLS会对原始消息(message)做一次哈希,得到该消息message的摘要,称为消息摘要(Message Digest) 。对端接受到消息后,使用协商出来的对称加密密钥解密数据包,得到原始消息message;接着也做一次相同的哈希算法得到摘要,对比发送过来的消息摘要和计算出的消息摘要是否一致,可以判断通信数据是否被篡改。


总结:HTTPS通信流程

SSL/TLS 协议基本流程:

  • 客户端向服务器索要并验证服务器的公钥。
  • 双方协商生产「会话秘钥」。
  • 双方采用「会话秘钥」进行加密通信。

前两步也就是 SSL/TLS 的建立过程,也就是 TLS 握手阶段

SSL/TLS 的「握手阶段」涉及四次通信

  1. 客户端向服务器发起加密通信请求,也就是 ClientHello 请求。该请求中主要内容有客户端支持的SSL/TLS版本 + 一个随机数
  2. 服务器确认 SSL/ TLS 协议版本,如果浏览器不支持,则关闭加密通信。反之向客户端发出响应,也就是 SeverHello。该请求中主要内容有CA数字证书 + 一个随机数
  1. 客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息:

    (1)一个随机数

    (2)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。

    (3)之前所有内容的发生的数据做一次哈希,得到消息摘要

    客户端通过这三个随机数用双方协商的加密算法,各自生成本次通信的「对称会话秘钥」

  1. 校验消息摘要,通过后服务器也基于这三个随机数生成本次通信的「对称会话秘钥」,再返回去一个响应给客户端

    (1)表示随后的信息都将用「会话秘钥」加密通信。

    (2)之前所有内容的发生的数据做一次哈希,得到消息摘要,给客户端进行校验

img

        至此,整个 SSL/TLS 的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。

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

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

相关文章

css如何设置文本添加下划线

css文本添加下划线 text-decoration: underline;text-decoration相关属性参数 参数描述none默认。定义标准的文本。underline定义文本下的一条线。overline定义文本上的一条线。line-through定义穿过文本下的一条线。blink定义闪烁的文本。inherit规定应该从父元素继承 text-…

人体姿态估计算法

人体姿态估计算法 1 什么是人体姿态估计2 基于经典传统和基于深度学习的方法2.1 基于经典传统的人体姿态估计算法2.2 基于深度学习的人体姿态估计算法OpenPoseAlphaPose (RMPE) 3 算法应用4 Paper 人体姿态估计在现实中的应用场景很丰富,如下 动作捕捉:三…

非常好的简历精选7篇

想要打造一份令人眼前一亮的简历,赢得招聘方的青睐?参考这7篇精选的“非常好的简历”案例!无论是应届毕业生还是职场人士,都能从中借鉴灵感,提升简历质量。让求职之路更加顺畅,轻松斩获心仪职位&#xff01…

跨境独立站和传统外贸的差异

跨境独立站和传统外贸主要在以下几个方面存在区别: 交易形式:传统外贸主要涉及线下交易,买卖双方需要经过面谈、磋商、签订合同等环节。而跨境独立站则主要通过线上平台进行交易,买卖双方可以通过平台发布产品、协商价格、完成支…

linux 内核regulator

问题 在sys文件系统下没有生成cpu 调频的相关节点。 日志对比 [ 3.588745] cpu cpu4: Looking up cpu-supply from device tree [ 3.588753] cpu cpu4: Failed to get reg [ 3.588791] cpu cpu4: Looking up cpu-supply from device tree [ 3.588808] Failed to i…

【数电笔记】18-卡诺图化简

目录 说明: 用卡诺图化简逻辑函数 1. 公式法化简与卡诺图化简对比 2. 化简依据 3. 化简规律 3.1 两个小方块相邻 3.2 四个小方块相邻 3.3 八个小方块相邻 4. 卡诺图化简法步骤 4.1 例1 4.2 例2 5. 画卡诺圈规则 5.1 例1 6. 特殊情况 6.1 例1 6.2 例…

【LeetCode刷题笔记】103. 二叉树的锯齿形层序遍历

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

linux安装镜像cento7

点击创建新的虚拟机 点击典型&#xff0c;下一步 浏览&#xff0c;centos7下载文件的位置 找到位置后&#xff0c;效果如下图所示 下一步&#xff0c;填写用户名和密码&#xff0c;再点击下一步 给虚拟机起名字&#xff0c;默认就行&#xff1b;虚拟机安装路径&#xff0c;默认…

JavaSE自定义验证码图片生成器

设计项目的时候打算在原有的功能上补充验证码功能&#xff0c;在实现了邮箱验证码之后想着顺便把一个简单的图片验证码生成器也实现一下&#xff0c;用作分享。 注意&#xff0c;实际开发中验证码往往采用各种组件&#xff0c;通过导入依赖来在后端开发时使用相关功能&#xf…

组件的props属性

目录 1&#xff1a;使用props的作用&#xff1a; 2&#xff1a;props自定义属性的用法&#xff1a; 3&#xff1a;集合v-bind使用自定义属性&#xff1a; 4&#xff1a;props自定义属性是只读的&#xff1a; 5&#xff1a;default默认值&#xff1a; 6&#xff1a;type值类…

Unity版本使用情况统计(更新至2023年10月)

本期UWA发布的内容是第十三期Unity版本使用统计&#xff0c;统计周期为2023年5月至2023年10月&#xff0c;数据来源于UWA网站&#xff08;www.uwa4d.com&#xff09;性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势&#xff0c;了解近半年来哪些Unity版本的使用概率更…

C/C++,树算法——Ukkonen的“后缀树“构造算法的源程序

1 文本格式 // A C program to implement Ukkonens Suffix Tree Construction // And then build generalized suffix tree #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_CHAR 256 struct SuffixTreeNode { struct Suffix…

Python Locals:引领代码风潮,变量管理新尝试

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;locals()函数是一个强大的工具&#xff0c;它使程序员能够访问和操作当前作用域内的局部变量。本文将深入探讨locals()函数的功能、应用和重要性。 动态变量赋值和操作 locals()函数让我…

[数据结构]HashSet与LinkedHashSet的底层原理学习心得

我们区分list和set集合的标准是三个&#xff1a;有无顺序&#xff0c;可否重复&#xff0c;有无索引。 list的答案是&#xff1a;有顺序&#xff0c;可重复&#xff0c;有索引。这也就是ArrayList和LinkedList的共性 set的答案是&#xff1a;顺序内部再区分,不可以重复&#xf…

分享几个国内免费使用的 gpt 网站

可放心阅读点击&#xff0c;无邀请链接、邀请码等 今天主要分享几个个免费的GPT网站。 1、思默问答&#xff08;SiteSMO&#xff09; AI写作生成器_智能写作_问答助手 - 思默问答 算是国内比较早的AI应用网站&#xff0c;支持问答&#xff0c;画图等&#xff0c;所有的问答…

visual Studio MFC 平台实现图像增强中的线性变换(负变换)和非线性变换(对数与幂律)

MFC 实现数字图像处理中的图像增强操作 本文使用visual Studio MFC 平台实现图像增强中典型的三种图像增强的方法中的两大类&#xff0c;包括线性变换–>负变换&#xff0c;非线性变换–>对数变换和幂律变换&#xff1b;其中第三大类分段式变换可以参考MFC实现图像增强–…

Presto基础学习--学习笔记

1&#xff0c;Presto背景 2011年&#xff0c;FaceBook的数据仓库存储在少量大型hadoop/hdfs集群&#xff0c;在这之前&#xff0c;FaceBook的科学家和分析师一直靠hive进行数据分析&#xff0c;但hive使用MR作为底层计算框架&#xff0c;是专为批处理设计的&#xff0c;但是随…

孩子都能学会的FPGA:第十九课——FPGA实现流水线操作

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

Rust国内sparse镜像源配置

文章目录 1. 遇到问题1.1 问题现象1.2 解决办法 2. 重新设置最新 sparse源3. 更多参考资料3.1 字节源3.2 ustc 源3.3 清华源3.4 其他人的总结 1. 遇到问题 有好一阵子没有更新源和安装软件了&#xff0c; 使用ustc的源&#xff0c; 更新了好一阵子&#xff0c; 最后安装居然还出…

养身馆推拿会员管理系统,佳易王推拿会员管理软件短信设置教程

养身馆推拿会员管理系统&#xff0c;佳易王推拿会员管理软件短信设置教程 一、佳易王会员管理软件大众版 部分功能简介&#xff1a; 1、会员信息登记 &#xff1a;可以直接使用手机号登记&#xff0c;也可以使用实体卡片&#xff0c;推荐用手机号即可。 2、会员卡类型 &…