《JavaEE》HTTPS

news/2025/3/29 4:05:28/

文章目录

  • HTTPS起源
  • HTTPS
    • 对称加密
    • 非对称加密
    • 两者的区别
  • HTTPS的安全问题
    • 使用对称加密
      • 正常交互
      • 黑客入侵
      • 解决方案
    • 非对称加密
      • 引入非对称加密后的流程
    • 中间人攻击
      • 黑客的入侵方案加入后的流程
      • 解决方案
      • 黑客再次加注
      • 解决方案


​👑作者主页:Java冰激凌
📖专栏链接:JavaEE


HTTPS起源

在2015年前 国家还没有明确的颁布互联网保护法 在这个之前 很多做广告的公司是根据访问连接请求中的Referer来确认是哪个平台引流进入的 其中请求就需要经过网络通信 在网络通信的过程中 因为利益的驱使 就导致了有很多来专门截取请求 然后修改请求为其他平台以此来谋取利益 为了维护自己的利益 官司肯定是会打的 但是打官司会有一个很长的过程 所以为了更快的维护自己的利益 HTTPS应运而生


HTTPS

HTTPS是在HTTP的基础上引入了一个加密层 这个加密层叫做SSL\TLS
这个加密层主要通过两种方式来实现加密

对称加密

使用同一个密钥进行加密解密

非对称加密

有两个密钥 分别是公钥和私钥
其中 公钥是公开的 私钥是不会公开的 但是其中的数据 使用公钥加密后 只能使用私钥来进行解密
也可以使用私钥进行加密 公钥来进行解密 公钥和私钥两者是相相成的

两者的区别

速度:速度上对称加密的效率是大于非对称加密的
解密:使用对称机密的数据只需要使用对称密钥即可解密 非对称加密的数据只能使用私钥来解密
安全:对称密钥很容易被篡改 非对称密钥在引入各种措施之后不容易被篡改
(其中 我们是要明确 安全只能是相对的安全 不会是绝对的安全)


HTTPS的安全问题

使用对称加密

正常交互

首先是正常的进行交互 从客户端发起获取密钥 之后服务器会返回一个对称密钥 之后客户端会使用这个对称密钥进行数据传输的加密 服务器拿到之后会使用对称密钥来进行解密
在这里插入图片描述

黑客入侵

当黑客入侵之后 如果我们使用对称密钥加密的话 此时服务器返回key的时候 黑客也随之获取到了密钥key 之后的传输黑客也能窃取到数据交互的内容
在这里插入图片描述

解决方案

使用非对称加密来防止黑客直接获取到密钥key

非对称加密

引入非对称加密后的流程

引入非对称加密之后 会进行以下的交互过程

  1. 客户端发起获取密钥 黑客获取到消息转发给服务器
  2. 服务器生成一个非对称密钥 再将公钥发送给客户端 黑客获取到公钥 转发给客户端
  3. 客户端使用公钥将自己的对称密钥key进行加密 再发送给服务器 黑客获取到加密后的key 但是此时黑客是无法得知其中的key是什么的 即使是黑客明确的知道这个公钥是什么 但是因为非对称加密中的公钥和私钥是一对 使用公钥加密的只能使用私钥来解密 所以黑客是获取不到其中的key的 只能乖乖的转发给服务器
  4. 服务器收到加密后的key之后 使用私钥来对数据进行解密 解密之后获取到key 之后的传输就会一直使用这个对称公钥来进行加密和解密
    在这里插入图片描述

中间人攻击

虽然如此一来引入非对称加密之后 安全系数得到进一步的提高 但是黑客就真的没办法了吗?还是有的

黑客的入侵方案加入后的流程

  1. 客户端发起获取密钥 黑客获取到消息转发给服务器
  2. 服务器生成一个非对称密钥 再将公钥发送给客户端 黑客获取到公钥 此时 黑客会自己生成一个对称密钥newKey 然后将公钥为newKey发送给客户端
  3. 客户端收到之后 是不能分辨出是否是被黑客篡改过的公钥 之后客户端会使用获取到的公钥将自己的key进行加密
  4. 加密之后发送给服务器 黑客获取到了使用newKey加密后的key 然后使用newKey来进行解密 如此一来黑客便获取到了客户端的key 然后黑客只需要使用pub_key来对已经获取到的客户端的key来进行加密发送给服务器
  5. 服务器收到之后也无法判断是否被篡改过 之后会使用key来进行交互 其实和之前是没有变化的 但是此时的黑客已经获取到了客户单的对称密钥key
    在这里插入图片描述

解决方案

引入“工信机构” 这个机构负责颁布数字证书

  1. 客户端发起获取数字证书(因为数字证书的引入就要直接获取数字证书 数字证书中就包含了公钥)此时黑客获取到 转发给服务器
  2. 服务器收到获取请求后 会先生成一个非对称密钥 使用公钥来向工信机构来申请数字证书 申请到数字证书后就可以将数字证书返回给客户端
  3. 服务器返回客户端 黑客收到 黑客转发数字证书给客户端 客户端收到之后就会使用系统中自带的公钥来进行解密(这个公钥 不单单是客户端有 黑客也会有 所以黑客也能获取到这个公钥 但是没办法对它进行修改)解密之后获取到公钥 然后使用公钥对key进行加密发送给服务器
    在这里插入图片描述

黑客再次加注

黑客可以通过伪造修改数字证书来达到获取key的目的
在这里插入图片描述

解决方案

我们在数字证书中加入了签名机制 这个签名其实和校验和有相同的用处 都是为了检验数据是否被发生过修改 其实用了其中的数据来计算出的签名 这个签名被工信机构生成的一对非对称加密进行加密 使用私钥来进行加密 加密后的数据只能使用公钥来解密

  1. 客户端发起获取数字证书 黑客获取到 转发给服务器
  2. 服务器收到后生成一对非对称密钥向工信机构认证 认证之后返回数字证书
  3. 黑客获取到之后 是可以使用公钥来进行解密 获取到其中的内容 但是如果对于数字证书中的内容进行修改的话 就需要使用到工信机构的密钥来进行加密 而黑客是获取不到这个私钥的 以此达到了只能读不能改的效果
  4. 客户端获取到数字证书之后会先使用公钥计算原始签名 然后也会使用相同的计算方式计算签名 核对签名和初始签名是否一致 如果不一致就代表被篡改过 就会在浏览器中抛出大大的异常
    在这里插入图片描述

http://www.ppmy.cn/news/80727.html

相关文章

Java StringBuilder类

3 StringBuilder可变字符串类 StringBuilder是一个可变的字符串类,内容可以改变3.1 StringBuilder构造方法 范例public class Demo {public static void main(String[] args) {//创建空白可

ChatGPT是什么

什么是ChatGPT ChatGPT是一种基于人工智能技术的聊天机器人,它可以与用户进行自然语言交互,回答用户的问题,提供各种服务和娱乐功能。ChatGPT的核心技术是GPT(Generative Pre-trained Transformer),是一种…

如何在华为OD机试中获得满分?Java实现【最多提取子串数目】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 华为OD机试攻略:Java实现并讲解2022&2023真题 文章目录 1. 题目描述2. 输入描述…

雪花算法记录

引子 伴随着业务的日渐庞大,单库单表的数据库可能无法支持业务的读写,需要对数据库进行分库分表。 原来数据库中,通常使用自增id的方式生成主键。分库分表之后,如果仍然采用原来的方式,在多个表之间主键会发生重复。 …

mysql和redis的同步

mysql和redis的同步 1 为什么使用redis做缓存 数据库链接慢,磁盘IO慢 mysql线程数不够 mybatis缓存,缓存在JVM中 redis缓存时基于内存的,速度快 若使用redis,如何保证redis和数据库同步问题 配置redis redis:url: redis://…

代码随想录算法训练营第五十一天 | 买卖股票3

309.最佳买卖股票时机含冷冻期 文档讲解:代码随想录 (programmercarl.com) 视频讲解:动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili 状态:dp定义看的…

小马识途:如何做好短视频内容运营

随着移动互联网普及,抖音和快手小红书这样的短视频平台已经成为这个时代最流行的内容承载形式。 短视频运营成为当下网络推广的一项重要任务,如何优化短视频呢?小马识途营销顾问就自身经历分享几点建议: 1、灵活的选题机制 内容选…

JavaScript实现循环读入整数进行累加,直到累加的和大于1000为止的代码

以下为实现循环读入整数进行累加,直到累加的和大于1000为止的程序代码和运行截图 目录 前言 一、循环读入整数进行累加,直到累加的和大于1000为止 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0…