【JavaEE】网络原理-HTTPS

网络原理-HTTPS

1. HTTPS是什么

HTTPS是在应用层上的协议, 基于HTTP进行加密

  • HTTP协议内容都是按照文本内容进行明文传输,容易使得内容被“劫持”。

  • 十年前,经常有下载链接被劫持,就会产生下载图片和下载链接不是一个产品的现象

2. 对称加密

简而言之,对称加密就是:加密和解密都用的同一把锁,和同一把钥匙

  • 因为密钥不管一开始从哪里生成,都需要让对方知道本次通信的密钥是什么,只有密钥对应起来才能进行通信
  • 所以在密钥传输的过程中容易被劫持
  • 这样的弊端显而易见,如果黑客在服务器和客户端之间,那么就很容易能够知道C-S之间通信的密钥,那么这个加密就会形同虚设。
  • 即使不同的客户端使用自己生成的不同的密钥,那也会被黑客劫持

3. 非对称加密

非对称加密是用于==对对称加密进行加密==的方式,这并不会对于每次的会话进行使用。

3.1 过程

最重要的是衍生出了”公钥“与”私钥“的概念。

  1. 公钥是暴露在网络中的,随便什么人都可以看得见,但是私钥只有服务器才有
  2. 私钥可以对于公钥进行解密
  1. 客户端对于服务器发起请求,携带着后续会话使用什么对称密钥信息

    此时这段对称密钥是暴露在网络中的,但是只能通过私钥进行解密

  2. 服务器使用自己独有的私钥对于这段请求进行解密,获得后续对话使用的对称密钥

    此时服务器知道了对称密钥是什么,后续就不再使用公钥进行加密,直接使用对称密钥

  3. 客户端进行请求的时候将使用对称密钥进行加密

    服务器进行响应的时候将使用对称密钥进行解密

3.2 优点

  1. 确保了安全性
  2. 最大程度减少了资源开销(相比于所有会话都使用非对称加密来说)

3.3 缺点

仍然可能被攻击。

第一种情况:

  1. 黑客可以伪装为服务器,获取客户端的请求(即能够获取到后续会话的对称密钥

  2. 接着使用暴露的公钥对于这个对称密钥进行加密,发送给服务器

    此时服务器并不知道这个请求是由黑客发送的还是正常的客户端

  3. 服务器发送正常的响应

  4. 后续对话就会由黑客使用对称密钥对于会话进行解密

第二种情况:

  1. 黑客可以伪造一对公钥和私钥
  2. 客户端发送请求被黑客进行劫持后,黑客返回私自伪造的公钥和私钥
  3. 后续对话就会由黑客和客户端进行

3.4 完善方案

最关键的一点是客户端拿到公钥后能够知道是否是真的,而不是伪造的,这就衍生出了公证机构

公证机构会向服务器颁发**“证书”**,这个证书由公证机构自己的加密算法生成得到,无法进行伪造。

证书信息:

  1. 域名

  2. 证书有效期

  3. 服务器的公钥

  4. 公证机构的信息

  5. 证书的签名

    签名:公证机构使用自己的私钥对于校验和进行加密,就得到签名

过程:

  1. 公证机构颁布证书的时候,会使用自己的算法对于证书计算出一个校验和

  2. 客户端收到服务器的响应之后,先使用操作系统自带的证书(得到计算校验和的算法)得到校验和1

  3. 客户端再使用相同的计算校验和的算法对于证书的其他字段进行计算,得到校验和2

  4. 如果两个校验和相等,那么证真,反之则伪

为什么能够防止黑客?
  1. 黑客想要伪造证书,会使得校验和2发生变化

    伪造证书分为两种伪造:

    1. 黑客想要修改公钥,因为签名没有变化,会使得校验和2发生变化
    2. 黑客修改公钥和签名,因为黑客不知道公证机构的私钥,所以无法生成签名

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

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

相关文章

python毕业设计基于flask应急救援调度系统django

此系统设计主要采用的是python语言来进行开发,采用flask框架技术,框架分为三层,分别是控制层Controller,业务处理层Service,持久层dao,能够采用多层次管理开发,对于各个模块设计制作有一定的安全…

docker日志在哪看?怎么在Linux服务器中查看日志

Docker 日志主要分为两类,一类是Docker 引擎日志,另一类是容器日志。具体如下: Docker 引擎日志:这些日志记录了 Docker 引擎本身的操作信息,其位置依赖于使用的操作系统。例如,在 Ubuntu 14.04 中&#x…

Tengine 的xquic,如何适配四层负载的udp健康检查?

为什么要适配udp健康检查? Tengine通过xquic实现HTTP3协议,不同于HTTP2和HTTP1.1以及之前的HTTP协议,HTTP3最大的不同就是其传输层协议由TCP改成了基于UDP实现的QUIC协议。QUIC 协议实现在用户态,建立在内核态的 UDP 的基础之上&…

【投稿优惠-EI稳定检索】2024年图像处理与机械系统工程国际学术会议 (ICIPMSE 2024)

【投稿优惠-EI稳定检索】2024年图像处理与机械系统工程国际学术会议 (ICIPMSE 2024) 大会主题: (主题包括但不限于, 更多主题请咨询会务组苏老师) 图像处理 基于图像的渲染 计算机视觉 可视化分析 模式识别 3D打印 渲染和动画 渲染技术 电脑动画 基于草图的建模 机械…

IT领域的未来发展趋势与挑战

IT行业作为当今世界最具活力和创新性的领域之一,持续地塑造着我们的生活和工作方式。在未来,IT领域将继续迎来许多重要的发展趋势和挑战,这些趋势将引领着技术的发展方向,而挑战则需要我们找到有效的解决方案。 1. 人工智能&…

苹果Find My App用处多多,产品认准伦茨科技ST17H6x芯片

苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch,如今的Find My已经不单单可以查找苹果的设备,随着第三方设备的加入,将丰富Find My Network的版图。产…

Unity Timeline学习笔记(2) - PlayableTrack

PlayableTrack 是可自定义播放的轨道。我们可以通过进入轨道后调用自己的函数方法,使用起来也是比较顺手的。 添加轨道 我们点击加号添加 这样就有一个空轨道了,然后我们创建两个测试脚本。 添加脚本 分别是Playable Behaviour和PlayableAsset脚本。…

unity报错出现Asset database transaction committed twice!

错误描述: 运行时报错 Assertion failed on expression: ‘m_ErrorCode MDB_MAP_RESIZED || !HasAbortingErrors()’Asset database transaction committed twice!Assertion failed on expression: ‘errors MDB_SUCCESS || errors MDB_NOTFOUND’ 解决办法&…

MySQL:概念简章

1.SQL通用语法 SQL单行、多行书写,以分号结尾SQL可以以空格有缩进增加代码可读性SQL语句不区分大小写 2.SQL语句分类 2.1 DDL(数据定义语言) 用于数据库、数据表、字段的定义的语言 create by 表名 (表里有什么字段)…

Hive中的CONCAT、CONCAT_WS与COLLECT_SET函数

1.CONCAT与CONCAT_WS函数 1.1 CONCAT函数 -- concat(str1, str2, ... strN) - returns the concatenation of str1, str2, ... strN or concat(bin1, bin2, ... binN) - returns the concatenation of bytes in binary data bin1, bin2, ... binN Returns NULL if any argum…

幼儿园管理系统|基于springboot框架+ Mysql+Java+Tomcat的幼儿园管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 用户功能模块 管理员功能登录前台功能效果图 教师功能模块 系统功能设计 数据库E-R图设计 lunwen参…

项目安全保证措施word

软件系统做项目安全保证措施的原因有以下几点: 保护数据安全:通过安全措施可以保护数据不被非法获取、篡改或损坏。 保障系统稳定:安全措施可以减少系统受到的威胁,确保系统的稳定运行。 符合法律法规:为了遵守国家和地…

蓝桥杯单片机快速开发笔记——定时器

一、基本原理: 定时器的作用: 定时器是一种用于产生精确时间延时的模块,可以在程序中用来进行时间控制、计时等操作。 定时器的工作原理: 51单片机的定时器是通过内部的计数器来实现的,计数器每隔一个固定的时间周期自…

【AIGC调研系列】Github Copilot进行pytest自动化测试的实践经验

GitHub Copilot可以用于pytest自动化测试的实践和使用方法。此外,Copilot可以在很多情况下仅通过注释或函数名就能实例化出完整的代码,这表明它也可以用于补充测试用例[5]。 具体到pytest框架,它是一个非常容易上手的自动化测试框架&#xf…

【gpt实践】实用咒语分享

直接上咒语了,大家可以自行实践。 1、忽略先前所有的提示 有时候gpt会停留在之前的问题中,导致回答当前问题带着之前问题结论。 2、忽略所有的客套话 我们只是需要有用的信息,有时候gpt客套话会混淆视听。 3、给出非常简短明确的答案 同样…

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具,它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能,也可用于执行一些基本的浏览器操作任务,例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

kakfa模拟仿真篇之spark-submit在linux运行 (更贴近真实场景)

源码在上篇 地址在这 :Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql-CSDN博客 这里分享一下一些新朋友不知道spark-submit 指令后 的参数怎么写 看这篇绝对包会 声明: 此项目是基于 maven 打包的说明…

JVM 相关知识点记录

文章目录 前言哪些内存需要回收方法区的垃圾回收垃圾收集算法垃圾收集器年轻代进入老年代条件内存担保机制FullGC 触发时机GC日志解析日志参数 前言 JVM包含内容: 类装载子系统(Class Load SubSystem)运行时数据区(Run-Time Data Areas) 堆栈 局部变量表操作数栈动…

Windows安装Elasticsearch8.x保姆级教程

Elasticsearch 下载安装 下载:点击https://www.elastic.co/cn/downloads/elasticsearch --> 点击View past releases -->找到8.11.1版本的ES --->点击下载---目前最新版的Spring Data ES最高支持8.11.1版本 elasticsearch与JDK版本&#xff1a…

openstack迁移虚拟机--来自gpt

在OpenStack环境中,虚拟机的迁移可以通过多种方式实现,包括实时迁移(Live Migration)和冷迁移(Cold Migration) 实时迁移(Live Migration) 实时迁移是在虚拟机运行的同时将其迁移到…