《JavaEE》HTTPS

文章目录

  • 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. 客户端获取到数字证书之后会先使用公钥计算原始签名 然后也会使用相同的计算方式计算签名 核对签名和初始签名是否一致 如果不一致就代表被篡改过 就会在浏览器中抛出大大的异常
    在这里插入图片描述

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

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

相关文章

毫米波雷达信号处理中的通道间相干与非相干积累问题

说明 相干和非相干积累是雷达信号处理中的常用方法,这两个概念一般是用在多脉冲积累这个问题上:积累可以提高信号的SNR,从而提高检出概率。不过本文内容与脉冲积累无关,本文讨论的话题是将这两个概念(non-coherent combination、c…

HCIA-MSTP替代技术之链路捆绑(LACP模式)

目录 手工链路聚合的不足: LACP链路聚合的原理 LACP模式: LACPDU: 1,设备优先级: 设备优先级的比较是:先比较优先级大小,0到32768,越小优先级越高,如果优先级相同&a…

OpenAI再出新作,AIGC时代,3D建模师的饭碗危险了!

大家好,我是千与千寻,也可以叫我千寻哥,说起来,自从ChatGPT发布之后,我就开始焦虑,担心自己程序员的饭碗会不会哪天就被AIGC取代了。 有人说我是过度焦虑了,但是我总觉有点危机感肯定没有坏处。…

【017】C++ 指针变量详解,理解指针变量

C 指针变量详解 引言一、内存概述二、指针变量2.1、地址和指针变量的关系2.2、定义指针变量2.3、指针变量的初始化2.4、指针类型2.5、案例2.6、注意事项 三、数组元素的指针3.1、概述3.2、在使用中 [ ] 就是 *()的缩写3.3、指向同一数组的元素的两个指针变量间的关系 四、字符串…

UOS桌面系统使用RLinux恢复数据

UOS桌面系统使用RLinux恢复数据 一、工具介绍二、注意事项三、准备四、制作live系统启动盘五、拷贝文件六、进入live系统一、工具介绍 R-Linux 是一款用于 Linux 和某些 Unixes 操作系统 Ext2/Ext3/Ext4 FS 文件系统的免费文件恢复实用工具。R-Linux 与 R-Studio 使用相同的 I…

病毒分析丨plubx

作者丨黑蛋 一、基本信息 文件名称 00fbfaf36114d3ff9e2c43885341f1c02fade82b49d1cf451bc756d992c84b06 文件格式 RAR 文件类型(Magic) RAR archive data, v5 文件大小 157.74KB SHA256 00fbfaf36114d3ff9e2c43885341f1c02fade82b49d1cf451bc756d992c84b06 SHA1 1c251974b2e…

Nova 和 SuperNova:无需通用电路的通用机器执行证明系统

1. 引言 前序博客有: Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记SuperNova:为多指令虚拟机执行提供递归证明基于Nova/SuperNova的zkVMSangria:PLONK Folding2023年 ZK Hack以及ZK Summit 亮点记Sangria&…

ptp4l测试-LinuxPTP\ptp4l配置与问题排查

目录 一、前言 1.1 什么是ptp4l 1.2 描述 1.3 官网连接 1.4 目的 1.5 平台 二、 平台必要软件 2.1 linux物理机 2.2 imx6ull开发板 三、检查硬件是否支持 3.1 ifconfig查看当前网卡的名称 3.2 ethtool检查驱动和网卡是否支持 四、开启ptp4l服务 4.1 方法一&#x…

leetcode--环形链表.找到入环节点(java)

环形链表II 环形链表.找到入环节点题目描述解题思路 环形链表.找到入环节点 LeetCode 142:环形链表II 可以在这里测试 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节…

电压放大器的主要指标有哪些方面

电压放大器是电子电路中常用的器件,在选择和评估电压放大器时,需要考虑以下几个主要指标: 输入电阻(Input Resistor):输入电阻是指放大器输入端的电阻值,它反映了放大器将输入信号转换成输出信号…

Linux驱动入门(二)——嵌入式处理器介绍和构建驱动程序开发环境

文章目录 嵌入式处理器和开发板介绍处理器简述处理器种类Intel的PXA系列处理器StrongARM系列处理器MIPS处理器摩托罗拉龙珠(DragonBall)系列处理器日立SH3处理器德州仪器OMAP系列处理器 ARM处理器ARM处理器简介ARM处理器的特点ARM处理器系列ARM处理器的应用ARM处理器选型 STM32…

Jupyter Notebook如何导入导出文件

目录 0.系统:windows 1.打开 Jupyter Notebook 2.Jupyter Notebook导入文件 3.Jupyter Notebook导出文件 0.系统:windows 1.打开 Jupyter Notebook 1)下载【Anaconda】后,直接点击【Jupyter Notebook】即可在网页打开 Jupyte…

初阶数据结构之栈的实现(五)

文章目录 😏专栏导读🤖文章导读🙀什么是栈?🙀画图描述 😳栈的代码实现及其各类讲解😳栈的初始化代码实现及其讲解😳栈的初始化 😳栈的销毁代码实现及其讲解😳…

PLX31-EIP-SIE 以太网/IP到西门子工业以太网

ProSoft Technology的EtherNet/IP to Siemens工业以太网通信网关允许支持EtherNet/IP的控制器或设备与西门子S7 PACs(包括S7-200s、S7-300s、S7-400s、S7-1200和S7-1500 PACs)之间进行高速双向数据传输。 此外,该网关还包括几个功能,包括数据优先级&…

横向移动-传递攻击SMB服务利用psexecsmbexec

win2012以上版本,关闭了wdigest 或者安装了 KB287199补丁。无法获取明文密码 总的来说就是win2012后无法获取明文密码 解决办法就是: 1.可以利用哈希hash传递(pth,ptk等进行移动) 2.利用其他服务协议(S…

UGUI进阶知识[二十九]循环GridView

节省内存的常用滑动列表还有一种形式,上下滑动的GridView。这种格式的滑动列表可用于移动设备的背包,仓库,商店UI等数据可能海量从而导致产生特别多但又看不见的UI的情况。 于是基于 UGUI进阶知识[八]循环利用滑动列表的循环ListView工程做了…

Tomcat服务器、Servlet生命周期、上传下载文件、使用XHR请求数据、注解使用

文章目录 Servlet认识Tomcat服务器使用Maven创建Web项目创建Servlet探究Servlet的生命周期解读和使用HttpServletWebServlet注解详解使用POST请求完成登陆上传和下载文件下载文件上传文件 使用XHR请求数据重定向与请求转发重定向请求转发 ServletContext对象初始化参数 Servlet…

Office project 2010安装教程

哈喽,大家好。今天一起学习的是project 2010的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

在职阿里6年,一个29岁女软件测试工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有4家&am…

CSAPP Lab5- MallocLab

实验目标 本实验需要用c语言实现一个动态的存储分配器,也就是你自己版本的malloc,free,realloc函数。 实验步骤 tar xvf malloclab-handout.tar解压文件 我们需要修改的唯一文件是mm.c,包含如下几个需要实现的函数 int mm_ini…