JavaEE: HTTPS的魅力与优势揭秘

news2024/12/23 0:20:43

文章目录

  • HTTPS
    • HTTPS 是什么
    • HTTPS 基本工作过程
    • Fiddle 等抓包工具,为啥能解析 HTTPS 的数据?


HTTPS

HTTPS 是什么

HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层.

几个核心概念:

  1. 明文: 要传输的原始数据.
  2. 密文: 把明文进行加密之后得到一个让别人不能理解的数据.
  3. 加密: 明文 -> 密文.
  4. 解密: 密文 -> 明文.
  5. 秘钥: 进行加密和解密的重要数据/辅助工具.

在这里插入图片描述

两类加密算法:

  • 对称加密: 加密和解密都使用同一个秘钥.
  • 非对称加密: 是一对秘钥(从数学角度生成的一对数) A 和 B.
    使用 A 加密,就使用 B 解密.
    使用 B 加密,就使用 A 解密.

HTTPS 基本工作过程

HTTPS 只是在 HTTP 的基础上引入了加密机制.

通过 HTTP 进行传输:

在这里插入图片描述
可以看到,如果黑客入侵了路由器,那么黑客就可以对你的数据进行抓包,从而知道你传输了什么数据,甚至进一步的修改这里的数据.

很明显,这样的传输是不安全的.

为了解决上述问题:

  1. 引入对称加密
    在这里插入图片描述
    引入对称加密之后,即使数据被黑客截获,但是由于黑客不知道秘钥是啥,因此就无法解密,从而保证了数据安全.

    但实际上,事情没这么简单,我们知道,服务器在同一时刻会给多个客户端提供服务.这么多客户端,每个人用到秘钥必须是不同的(如果是相同的,那么秘钥也能被黑客拿到了~),因此服务器就需要维护每个客户端和每个秘钥之间的关联关系.这是一个麻烦的事情.

  2. 传输对称秘钥

    有一个比较理想的做法,就是在客户端和服务器建立连接的时候,双方协商确定这次的秘钥是啥.
    在这里插入图片描述

    但是如果直接把秘钥明文传输,那么黑客也就知道了,因此秘钥的传输必须加密传输.

  3. 引入非对称加密
    我们可以通过 非对称加密 来对 对称秘钥 进行加密.

    非对称加密,存在的目的不是取代对称加密,而是起到一个辅助对称加密的作用.
    非对称加密只用来加密传输对称密钥.
    因为非对称加密的运算开销比较大,很消耗性能~

    非对称加密,涉及到一对秘钥,公钥和私钥.
    公钥随便公开(人人都知道),只要把私钥保护好.在这里插入图片描述
    客户端通过公钥加密 对称密钥,因为黑客没有私钥,所以无法解密.

    这样数据就安全了…吗?

  4. 中间人攻击
    实际上,上述流程存在严重缺陷.

    黑客只需要让他的设备, 在客户端面前假扮服务器,在服务器面前假扮客户端.这样也能够获取到你的数据!!
    在这里插入图片描述

  5. 引入证书
    为了避免中间人攻击,于是引入了证书机制~

    出现中间人攻击问题的关键,在于客户端不知道自己拿到的公钥是不是正确的、合理的,不知道是不是黑客伪造的公钥.

    此处,就需要引入第三方公证机构.

    如果你想要搭建服务器,使用 HTTPS 就需要在公证机构这里申请证书(电子的,一串数据)
    申请的时候,就需要提交一些资料(网站的域名,营业执照,备案号等等)

    CA认证_百度百科

    这个证书包含以下信息:

    • 证书发布机构
    • 证书有效期
    • 公钥
    • 证书所有者
    • 签名

    服务器申请到证书之后.后续客户端从服务器拿公钥,就不只是拿公钥,而是拿整个证书.
    客户端拿到证书之后,就可以凭借证书中的签名,来对证书的合法性进行验证.

    客户端验证数字签名:

    1. 客户端把证书的各个字段,再算一次校验和,得到 checksum1

    2. 客户端使用公证机构的公钥,对数字签名进行解密,得到 checksum2

    3. 对比 checksum1 和 checksum2
      如果相等,则视为当前证书的各个字段,就是和服务器发出来的证书是一模一样的,此时就可以认为这是合法证书.
      如果不相等,意味着证书上的内容被黑客篡改过了,此时浏览器就会弹出警告页面来提示用户.

      到这里,你可能想问一个问题: 黑客可不可以篡改数据后,同时更新数字签名,让数字签名解密出来的 checksum2, 和篡改过的 checksum1 一致呢??
      答: 这在理论上不可行! 黑客篡改了数据之后,要想重新生成数字签名,需要使用公证机构的私钥来加密(这个私钥,不是一般的黑客能拿到的).

      黑客如果自己生成一个私钥呢?
      答: 这个时候客户端拿着公正机构的公钥,解密不了黑客的私钥,此时客户端解密出错,也可以认为是证书有问题,也会弹出大大的窗口~

    再来想另一个问题: 客户端如何确定自己手里的公证机构的公钥是正确的,不是黑客伪造的呢?

    答: 这个东西不是通过网络获取的,而是操作系统内置的.黑客难以下手.

Fiddle 等抓包工具,为啥能解析 HTTPS 的数据?

要想解析 HTTPS 的数据,你得拿到对称秘钥,才能够对数据解密.

你使用 Fiddle 的时候,Fiddle 就在对你进行中间人攻击(在开启 HTTPS 选项的时候,弹出来一个框,是否要信任 Fiddle 提供的证书,点击 Yes,表示你允许fiddle对你进行攻击了~).

更具体点:
在这里插入图片描述


最后来一道经典面试题:

你在浏览器输入 url 之后,到最终展示出页面为止,这个过程计算机都做了哪些事情?

在这里插入图片描述


本文到这里就结束啦~

在这里插入图片描述

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

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

相关文章

【算法篇】三道题理解什么是递归,回溯和剪枝

递归,回溯,剪枝 想必大家再学习算法知识的路上经常听到回溯,剪枝类似的概念,对于初学者来说,很容易把他们理解成一种新的算法思想,其实回溯和剪枝只是在递归的基础上稍加修改,对于解决某些特定问…

k8s的pod的管理

常用的Pod基础命令 列出所有命名空间中的所有Pod kubectl get pods --all-namespaces 列出指定命名空间中的所有Pod kubectl get pods -n <namespace> 显示指定Pod的详细信息&#xff0c;包括状态、事件等 kubectl describe pod <pod-name> -n <namespace>…

机器学习入门(一)

一、机器学习概述 1、人工智能 像人一样智能的综合与分析&#xff0c;机器模拟人类。 是一个系统&#xff0c;像人那样思考&#xff0c;像人那样理性思考。 是一个系统&#xff0c;像人那样活动&#xff0c;像人那样合理的系统 2、机器学习 让机器自动学习&#xff0c;而不…

SAP将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4]

将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4] 有时需要将Spool中的内容导出成PDF文件&#xff0c;sap提供了一个标准程序RSTXPDFT4可以实现此功能。 1, Tcode:SP01, 进入spool requests list 2, SE38 运行程序RSTXPDFT4 输入spool reqeust号码18680&#xff0c;然后…

excel 单元格嵌入图片

1.图片右键,设置图片格式 2.属性 随单元格改为位置和大小 这样的话&#xff0c;图片就会嵌入到单元格&#xff0c;也会跟着单元格的大小而改变

10-记录器

这个功能允许记录和重现以前的模拟。所有发生的事件都记录在记录器文件 recorder file中。 1 记录 所有数据仅在服务器端以二进制文件的形式写入。但是&#xff0c;记录器是使用 carla.Client管理的。 注意&#xff1a;在回放结束时&#xff0c;车辆将被设置为自动驾驶&#xf…

强化学习和QLearning及GAN到底是什么关系啊

强化学习&#xff08;Reinforcement Learning&#xff09;、Q-Learning 和生成对抗网络&#xff08;GANs&#xff09;是机器学习中的三个不同概念&#xff0c;它们虽然有一些交叉&#xff0c;但本质上是针对不同问题的技术方法。下面我来详细解释它们之间的关系和区别&#xff…

leetcode每日一题day22(24.10.2)——准时到达的列车最小时速

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

链表Set_LinkList(并集)

并集是把两个集合合并&#xff0c;去除重复元素后组成的集合。 通过键盘输入将两个集合保存在链表A和链表B中&#xff0c;再创建一个链表C用于保存集合A、B的并集&#xff0c;将链表C打印输出。 提示&#xff1a; 1.相对于上一题&#xff08;链表Set_LinkList&#xff08;建立&…

java 微服务 端口冲突 redis虚拟磁盘满 nacos挂

java 微服务 端口冲突 哥 排除法呀 什么卸载软件QAQ netstat -ano | findstr :48080 输这个呀 然后 taskkill /PID 1234 /F redis虚拟磁盘满 导致 假死 挂了 nacos 挂了重启 nacosrun.bat startup -m standalone

facebook受众选择设置策略的最佳方式

在进行Facebookguanggao投放时&#xff0c;受众的选择是一个至关重要的步骤。正确的受众选择不仅能够帮助我们更好地定位目标用户&#xff0c;还能显著提高guanggao的转化率和投资回报率&#xff08;ROI&#xff09;。然而&#xff0c;受众选择的数量和范围同样是需要认真考虑的…

QtDesign预览的效果与程序运行的结果不一致的解决方法

存在的问题 使用Qt designer软件设计出来的界面&#xff0c;与转换成python程序运行出来的结果不一致&#xff0c;具体看下图 Qt designer预览结果 程序运行出来的结果 原因分析 我自己的电脑是2560*1600分辨率的屏幕&#xff0c;采用的是200%的缩放比例&#xff0c;出现这种…

虚拟机没有网络怎么解决

CentOS7为例 进入虚拟网络编辑器 1.更改设置 2.选中NAT模式点击3点击移除网络 4添加网络&#xff0c;随便选一个 5.点开NAT设置&#xff0c;记住网关 6.DHCP设置&#xff0c;注意虚拟机设置ip必须在起始ip和结束ip范围内 进入虚拟机网络适配器&#xff0c;自定义选中第4步操作…

Tailwind Css的使用

1.Tailwind Css是什么 官网解释&#xff1a;Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类&#xff08;class&#xff09;名&#xff0c;然后生成相应的样式代码并写入 到一个静态 CSS 文件中。 我的理解是利用Tailwind CSS 提供的…

Element-快速入门

什么是 Element 在现代前端开发中&#xff0c;组件化的思想日益盛行&#xff0c;Element组件库作为一款流行的UI组件库&#xff0c;特别适用于基于Vue.js的项目&#xff0c;它为开发者提供了丰富的组件和良好的开发体验。 想要使用Element的组件库&#xff0c;我们需要完成下面…

基于opencv的人脸闭眼识别疲劳监测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

基于函数计算FC 部署 ComfyUI实现AI生图 的优势

基于函数计算FC 部署 ComfyUI实现AI生图 的优势 部署ComfyUI实现AI生图使用函数计算FC 一键部署ComfyUI 绘画平台的优势有哪些&#xff1f; 在文章开始之前&#xff0c;先来看一下基于函数计算FC 部署 ComfyUI实现AI生图 的大概步骤&#xff0c;整个基础部署操作比较简单。即便…

《Programming from the Ground Up》阅读笔记:p181-p216

《Programming from the Ground Up》学习第10天&#xff0c;p181-p216总结&#xff0c;总计34页。 一、技术总结 第10章主要讲计算机是如何计算的&#xff0c;如十进制、二进制、八进制、十六进制以及浮点数和负数的表示。属于比较基础的内容&#xff0c;如果有一定基础&…

ai免费写论文是原创吗?分享5款ai写作免费一键生成助手

在当今的学术研究和写作领域&#xff0c;AI技术的应用越来越广泛&#xff0c;尤其是在论文写作方面。许多AI写作工具声称能够一键生成高质量的论文&#xff0c;并且保证原创性。然而&#xff0c;这些工具是否真的能生成完全原创的论文&#xff0c;仍然是一个值得探讨的问题。 …

【函数】4.函数的单调性

本节课没有笔记示例&#xff0c;自己做好笔记&#xff01; 复合函数的单调性 最值 没讲 提醒我