JavaEE HTTPS加密原理

news2024/11/20 10:26:24

HTTPS加密原理✿✿ヽ(°▽°)ノ✿

在这里插入图片描述

文章目录

  • JavaEE & HTTPS加密原理
    • 1. 为什么要加密
    • 2. HTTPS加密原理
      • 2.1 初始想法
      • 2.2 引入非对称加密
      • 2.3 中间人攻击
      • 2.4 引入证书

JavaEE & HTTPS加密原理

1. 为什么要加密

例子:(运营商劫持)

你可能经常遇到一个现象,就是在下载一些软件的时候,明明是软件A,弹出的下载连接确实软件B:

未劫持的版本:

在这里插入图片描述

劫持后的版本:

在这里插入图片描述

  • 变成QQ浏览器了 >、 v <、
  • 因为数据报在网络上是通过许多交换机和路由器的转发进行传输的,所以经过运营商设备很正常!
    • 因此被劫持了

在这里插入图片描述

在这里插入图片描述

不仅仅运营商可以劫持,黑客当然也可以~

  • 只要网络上的数据是明文传输的,都是存在被劫持被更改的风险!
  • 而我们让网络数据传输变得相对安全的方法就是,让破解的成本高于数据的价值!
    • 因为再厉害的方法,都不是万能的~

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):

一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

https即在http的基础上通过加密,提高破解成本!

  • 此处的加密,我们就只作为一个“行为”,如何加密的不讲~
    • 认为加密后就是乱码~
  • 解密也是,看成一个“行为”就是了

2. HTTPS加密原理

2.1 初始想法

我们的想法是:将明文转化为密文传过去

明文 => 密文, 【加密】

密文 => 明文, 【解密】

而加密的过程我们抽象成一个对象“秘钥”,通过这个秘钥,可以让我们的明文通过一定的逻辑去计算后转化为密文

  • 加密一般针对的是HTTP的各种header 和 body
    • 一般黑客篡改响应,而不是篡改请求让服务器返回不同的响应,因为知道正文没这个必要去篡改请求,反而有风险~
    • 因为看得到请求才能篡改响应和篡改请求,至于不让请求发出去或者发不一样的请求(响应是发回黑客,不是客户端),客户端如果收不到(超时重传),起不到效果~
    • 所以,只有黑客解密成功,并加密成功,客户端才认这个数据
      在这里插入图片描述

而这就是最原始的:对称秘钥

  • 即,加密和解密用的是同一把钥匙

那我们来看一下数据报在网络上的传输~

在这里插入图片描述

  • 这样,数据报在网络上以密文的形式传输,黑客自然就无法篡改

聪明的你可能想到了:

  1. 如果这个密钥每个客户端都是一样的,那么黑客也可以是客户端,这样密钥就拿到手了,所以每个客户端都是不一样的密钥~
  2. 如果这个密钥由每个客户端自己生成的,那么则需要连同密文一起传给服务器才行,而黑客因此也可以拿到密钥了!这样子,对称密钥的安全性几乎为0~

在这里插入图片描述

2.2 引入非对称加密

由于对此加密的不安全性,则需要引入非对称加密,提高数据传输安全性~

非对称加密的加密规则如下:

  • 相比于对称加密,它多了一把密钥

在这里插入图片描述

就是说,通过pub加密的密文,不能由pub解密,得由与之对应的pri解密;而通过pri加密的密文,不能由pri解密,得由与之对应的pub解密!

  • 同理,通过pub解密的明文,也只能由pri加密;pri解密的明文,也只能由pub加密!

那我们来看一下数据报在网络上的传输~

第一步:

在这里插入图片描述

  • 目前所有人都拥有公钥pub,只有服务器拥有私钥pri

第二步:

在这里插入图片描述

  • 客户端本来就有key,响应的时候没必要传key
    • 千万不能用pri加密key,因为pub可以进行解密!
    • 并且私钥就是私用的,并不是人人皆知~

为什么不用pub直接加密req?

原因是,服务区虽然可以pri解密计算响应,但是这么返回响应呢?

  1. pri加密响应,pub可以解密
  2. pub加密响应,客户端看不懂
  • 这样,数据报在网络上以密文的形式传输,黑客自然就无法篡改

2.3 中间人攻击

相信聪明的你又能想到黑客可以怎么做:

在这里插入图片描述

  • 之后客户端就是小丑了

在这里插入图片描述

  • 黑客又赢了~

这就是中间人攻击~

2.4 引入证书

说到底,这里的问题就是,客户端直接相信了黑客传过来的pub,那么我们只需要判断这个pub的权威性,就行了~

这里的证书,不是“纸质”的证书,而是一个抽象的“对象”,里面又很多属性

  • 即,电子数字证

在这里插入图片描述

有一个权威的机构,负责颁发证书

  • 而我们的服务器要加密传输的https,那么我们就需要去这个机构里,申请证书!

  • 申请的时候,要提交一些资料(甚至要交钱),机构审核通过了,就会颁发证书

    • 而我们在提交资料的时候,就提交上公钥pub,就行了~

而第一步的索要pub就变为索要证书:

在这里插入图片描述

  • 现在,每个人都拥有这个证书

与之前的方法不同的是,黑客不能轻易的篡改证书,是由于现实原因和客户端证书的验证机制:

一、黑客不可以自己去申请证书?

  1. 成本高
  2. 只有pri才能解密得到key,而这个pri还在服务器那~
  3. 证书的属性里面有“服务器的域名”等等…,所以黑客如果改域名为服务器的以免穿帮,校验和也会因此变化~

二、黑客自己就是权威机构?

  1. 不现实,成本极其高,因为权威机构规模得很大
  2. 不安全,权威机构人人都是实名的,所以黑客不会这么做,客户端有损失,就会查到

客户端验证证书的机制,靠的就是证书的这一个属性:签名(即校验和)

  • 这个校验和的计算,跟之前学的校验和一样,是由一个“一一对应”的函数计算得来的
    • 假如**校验和 = f(x1, x2, x3, x4 …)** ,那么这个函数的每一对参数序列,都对应不一样的值!
    • 也就是说,只有证书的所有属性都不变,校验和才不变

在这里插入图片描述

而这个签名,由证书的私钥pri进行加密了,而我们怎么解密的?

  • 这个是一个权威的机构,几乎每一台机器上,都保存了他们的pri所对应的pub
  • 而黑客跟客户端一样,拥有公钥去获取签名

第二步(校验):

在这里插入图片描述

问题:

  1. 那这样黑客不就知道客户端的信息了吗?
    • 并不是,这里黑客只知道“我要证书”的请求(截断它的请求,会超时重传,所以没必要)
    • 黑客也只知道证书这个对象,而这个对象本来就是公布的
    • 而真正值钱的信息则是客户端信任后发布的请求!
  2. 黑客就不能修改属性后,调整到与校验和一致?
    • 不行,因为计算校验和的函数是“一一对应”的函数
    • 其次,调整后不符合侵略目的
  3. 黑客就不能修改属性后,修改校验和?
    • 不行,因为黑客得到校验和,将其修改,那么还要将其加密,加密成能由pub解密的密文,而这个加密过程的难度等同于去“解密对称密钥key”,因为黑客没有证书pri
  4. 能不能将校验和正文传过去
    • 不行,因为客户端会将这个正文当成密文,用pub解密,解密后就会发现对不上~
    • 那得找到解密后为正确的校验和的那个密文,那就是加密啊,回归到问题3的逻辑了~

这样黑客破解起来的成本就很高了

  • 但不代表这种方式百分百安全,因为安全是相对的,没有绝对的安全~

文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

✿✿ヽ(°▽°)ノ✿


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

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

相关文章

C语言system()函数

文章目录 C语言system()函数system(“pause”)system(“color num1num2”)system(“cls”)system(“title name”)system(“time /T”) & system(“date /T”) C语言system()函数 头文件&#xff1a; #include<stdlib.h>system(“pause”) 作用&#xff1a;暂停程序进…

AI Canon精选资源清单;带AI功能的PS安装文件与教程;讯飞星火10月对标 ChatGPT;直播换脸工具盘点 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; AI Canon&#xff1a;人工智能精选资源清单 思维导图 ShowMeAI知识星球资源编码&#xff1a;R106 AI Canon 是由美国著名的风投机构 …

【靶场实战】Vulnhub - JANGOW: 1.0.1 靶标实战

靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/ 靶场IP&#xff1a;192.168.160.215 信息收集 使用Nmap对目标进行扫描 Nmap -sV -O -p- 192.168.160.215 经过漫长的等待扫描完成&#xff0c;该靶标开启了21、80两个端口&#xff0c;21端口运行服务为f…

chatgpt赋能python:Python中按钮的位置摆放

Python中按钮的位置摆放 在Python应用程序中&#xff0c;按钮是常见的交互元素之一。按钮通常用于响应用户的操作&#xff0c;例如提交表单或执行某些功能。然而&#xff0c;在设计应用程序时&#xff0c;按钮的位置是一个重要的问题&#xff0c;因为它将直接影响用户体验和应…

chatgpt赋能python:Python中的画图——创建漂亮的可视化图像

Python中的画图——创建漂亮的可视化图像 Python是一个高度可编程的语言&#xff0c;因此它非常适合用于创建各种类型的可视化。 在本文中&#xff0c;我们将介绍Python中的画图。我们将讨论如何使用Python和一些流行的数据可视化库来创建漂亮的可视化图像。我们还将探讨如何…

【PWN · ret2libc】[2021 鹤城杯]babyof

Linux_64的经典ret2libc题目&#xff0c;有必要好好整理总结一下其中的流程和注意点 目录 前言 一、题目重述 二、exp&#xff08;思考与理解在注释&#xff09; 三、经验总结 攻击步骤: 注意要点 四、疑问 前言 64位Linux和32位Linux确乎有着关于参数传递上的不同&a…

chatgpt赋能python:Python中怎么转置矩阵

Python中怎么转置矩阵 在Python中&#xff0c;我们可以轻松地实现矩阵的转置操作。矩阵转置是指将矩阵的行列互换&#xff0c;即将矩阵的行转换为列&#xff0c;将列转换为行。这种操作在数据处理和科学计算中是很常见的&#xff0c;因此我们需要了解如何在Python中进行矩阵转…

人工智能粒子群优化三大算法

粒子群优化是以邻域原理&#xff08;neighborhood principle&#xff09;为基础进行操作的&#xff0c;该原理来源于社会网络结构研究中。驱动粒子群优化的特性是社会交互作用。群中的个体&#xff08;粒子&#xff09;相互学习&#xff0c;而且基于获得的知识移动到更相似于它…

6.S081——补充材料——RISC-V架构中的异常与中断详解

0.briefly speaking 我在阅读Xv6源码过程中对很多概念感到困惑&#xff0c;想到也许会有其他人对此秉持同样的困惑&#xff0c;所以我将我的研究和学习过程总结下来并编篡成如下的博客。本篇博客想对RISC-V标准中有关中断和异常的概念进行一个梳理&#xff0c;考虑RISC-V标准的…

root 密码破解(rd.break)

在Linux系统中&#xff0c;忘记root密码时&#xff0c;可以用此方法进行暴力修改root密码 示例&#xff1a; 设置一个新的记不住的密码 $ echo cnakdnvf | passwd --stdin root $ poweroff 1.启动此虚拟机&#xff0c;选中以下行&#xff0c;并按 【 e 】进入内核编辑页面 …

【Leetcode -746.使用最小花费爬楼梯 -747.至少是其他数字两倍的最大数】

Leetcode Leetcode -746.使用最小花费爬楼梯Leetcode -747.至少是其他数字两倍的最大数 Leetcode -746.使用最小花费爬楼梯 题目&#xff1a;给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择…

数电/数字电子技术期末考前突击复习(小白稳过,看这一篇就够了)

博主&#xff1a;命运之光 专栏&#xff1a;期末考试必过and不挂科and争高分&#x1f636;‍&#x1f32b;️还有其他科目的考试突击日后会陆续更新 ✨✨✨✨✨点赞&#xff0c;关注&#xff0c;收藏不迷路✨✨✨✨✨ &#x1f984;前言&#xff1a;总结了期末数电大概率可能…

MySQL进阶 -存储引擎

目录 存储引擎MySQL的体系结构存储引擎简介InnoDB存储引擎MyISAM存储引擎Memory存储引擎InnoDB&#xff0c;MyISAM和Memory的区别存储引擎的选择小结 存储引擎 MySQL的体系结构 MySQL的体系结构图&#xff1a; MySQL服务端的体系结构&#xff08;MySQL Server&#xff09;&am…

自动化测试经典面试题-定位不到元素

元素定位常见的面试相关问题 一、元素定位1、Selenium/Appium定位方法有几种&#xff1f;分别是&#xff1f;2、如何通过子元素定位父元素 二、元素定位不到1、定位不到元素是什么原因导致的&#xff1f;2、如何定位动态元素3、有的元素就加载页面上&#xff0c;但是你却定位不…

Rust 笔记:有限状态机原理/状态模式 及其 在Rust 编程中的应用

Rust 笔记、设计模式 有限状态机原理及其在Rust 编程中的应用 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.ne…

chatgpt赋能python:Python中拷贝的介绍

Python 中拷贝的介绍 在 Python 中&#xff0c;拷贝是一个十分常见而且必要的操作。拷贝可以在许多情况下被使用&#xff0c;例如在创建测试数据、编写一个新的算法时&#xff0c;或者是在处理多维数据结构的程序中。由于 Python 中的对象是动态类型的&#xff0c;因此在拷贝时…

IDEA 安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;它具有许多优势&#xff0c;适用于各种开发过程。本文将介绍 IDEA 的主要优势&#xff0c;并提供详细的安装配置步骤。 介绍 IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;之所以被广泛使用&#xff0c;…

Linux系统下imx6ull QT编程—— C++基础(一)

Linux QT编程 文章目录 Linux QT编程前言一、 C的输入输出方式1.cout语法形式2.cin语法形式3.C之命名空间 namespace 前言 学习 C的面向对象编程&#xff0c;对学习 Qt 有很大的帮助 一、 C的输入输出方式 效率上&#xff0c;肯定是 C 语言的 scanf 和 printf 的效率高&#…

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-GRU麻雀算法优…

代码随想录算法训练营第五十七天 | 回文

647. 回文子串 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;字符串性质决定了DP数组的定义 | LeetCode&#xff1a;647.回文子串_哔哩哔哩_bilibili 状态&#xff1a;不会做。 思路 确定dp数组&#xff08;dp table&#xf…