【JavaEE】网络原理: HTTPS协议相关内容

目录

HTTPS 是什么

HTTPS 的工作过程

对称加密

非对称加密

引入证书

理解数据签名

通过证书解决黑客攻击


HTTPS 是什么

HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层
HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况. 
 

HTTPS 的工作过程

既然要保证数据安全,就需要进行"加密".

网络传输中不再直接传输明文了,  而是加密之后的"密文".

加密的方式有很多,但是整体可以分成两大类: 对称加密和非对称加密
 

对称加密

对称加密其实就是通过同一个"密钥" , 把明文加密成密文, 并且也能把密文解密成明文.

假设明文a= 1234, 密钥key = 8888
则加密 a^key 得到的密文b为 9834.
然后针对密文 9834 再次进行运算b ^ key, 得到的就是原来的明文1234.
(对于字符串的对称加密也是同理, 每一个字符都可以表示成一个数字)
当然,按位异或只是最简单的对称加密.  HTTPS中并不是使用按位异或.

引入对称加密之后,即使数据被截获,  由于黑客不知道密钥是啥,  因此就无法进行解密,  也就不知道请求的真实内容是啥了.
但事情没这么简单, 服务器同一时刻其实是给很多客户端提供服务的. 这么多客户端, 每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能拿到了). 因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情~

比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是啥

但是如果直接把密钥明文传输, 那么黑客也就能获得密钥了,  此时后续的加密操作就形同虚设了.
因此密钥的传输也必须加密传输! 

但是要想对密钥进行对称加密,就仍然需要先协商确定一个"密钥的密钥". 这就成了 "先有鸡还是先有蛋" 的问题了.

此时密钥的传输再用对称加密就行不通了, 就需要引入非对称加密.
 

非对称加密

非对称加密要用到两个密钥,  一个叫做 "公钥",  一个叫做 "私钥".
公钥和私钥是配对的.  最大的缺点就是运算速度非常慢,比对称加密要慢很多.

  • 通过公钥对明文加密, 变成密文
  • 通过私钥对密文解密, 变成明文

也可以反着用

  • 通过私钥对明文加密, 变成密文
  • 通过公钥对密文解密, 变成明文

  • 客户端在本地生成对称密钥,通过公钥加密,发送给服务器.
  • 由于中间的网络设备没有私钥,即使截获了数据, 也无法还原出内部的原文,也就无法获取到对称密
  • 服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据.
  • 后续客户端和服务器的通信都只用对称加密即可.  由于该密钥只有客户端和服务器两个主机知道, 其他主机/设备不知道密钥即使截获数据也没有意义.
     

由于对称加密的效率比非对称加密高很多,因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密.

上述操作下, 仍然存在重大的安全漏洞, 黑客仍然是有办法获取到对称密钥key

服务器可以创建出一对公钥和私钥, 黑客也可以按照同样的方式, 创建出一对公钥和私钥, 冒充自己是服务器.

要想解决上述问题, 最关键的一点, 客户端拿到公钥的时候, 要能有办法验证这个公钥是否是真的, 而不是黑客伪造的. 

引入证书

服务端在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性

这个证书可以理解成是一个结构化的字符串,里面包含了以下信息:

  • 证书发布机构的信息
  • 证书有效期
  • 服务器的公钥
  • 服务器的域名
  • 证书所有者
  • 证书的签名
  • .......

需要注意的是:申请证书的时候,需要在特定平台生成查,会同时生成一对密钥,即公钥和私
钥。这对密钥对就是用来在网络通信中进行明文加密以及数字签名的。
 

理解数据签名

当服务端申请CA证书的时候,CA机构会对该服务端进行审核,并专门]为该网站形成数字签名,过程如下:

  1.  CA机构拥有非对称加密的私钥A和公钥A'
  2.  CA机构对服务端申请的证书明文数据进行hash,形成数据摘要
  3. 然后对数据摘要用CA私钥A'加密,得到数字签名S

服务端申请的证书明文和数字签名S共同组成了数字证书,这样一份数字证书就可以颁发给服务端了
 

通过证书解决黑客攻击

在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个证书.
这个证书包含了刚才的公钥,也包含了网站的身份信息.

当客户端获取到这个证书之后,会对证书进行校验(防止证书是伪造的).

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).
  • 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥,对签名解密,  得到一个hash值(称为数据摘要), 设为hash1.  然后计算整个证书的hash值,设为hash2.  对比hash1和hash2是否相等. 如果相等, 则说明证书是没有被篡改过的.

黑客有没有可能篡改该证书?

黑客篡改了证书的明文: 由于他没有CA机构的私钥所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后的证书形成匹配的签名

● 如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不一致,则说明证书已被篡改, 证书不可信,从而终止向服务器传输信息,防止信息泄露给黑客

黑客如果掉包整个证书呢?

● 因为黑客没有CA私钥,所以无法制作假的证书(为什么? ) 所以黑客只能向CA申请真证书,然后用自己申请的证书进行掉包, 这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。

● 永远记住: 黑客没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的.

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

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

相关文章

蜂邮EDM-新手教程-新手也能使用

一、登录注册账号,注册登录地址:fengemail.com 二、配置邮箱 选择“账号设置”——“邮箱设置”进行发信邮箱配置。每个账号将默认存在一个“系统默认接口”,点击右侧的编辑按钮即可对该配置进行修改。 注:发信邮箱暂不支持个人…

抖音数据抓取工具|抖音视频下载工具

抖音数据抓取工具是一款基于C#开发的高效实用软件,旨在为用户提供便捷的抖音视频数据获取和处理功能。该工具不仅支持通过关键词进行搜索抓取,还能够通过分享链接进行单个视频的抓取和下载,为用户提供了多样化的数据采集方式。 主要功能模块…

SpringMVC 学习(四)之获取请求参数

目录 1 通过 HttpServletRequest 获取请求参数 2 通过控制器方法的形参获取请求参数 3 通过 POJO 获取请求参数&#xff08;重点&#xff09; 1 通过 HttpServletRequest 获取请求参数 public String handler1(HttpServletRequest request) <form action"${pageCont…

安装python的docker库

文章目录 一、在线安装二、制作离线安装包2.1 报错处理 一、在线安装 先确定是否有pip命令。 yum install python-pip直接安装。 pip install docker查看docker库。 pip list二、制作离线安装包 在有互联网的环境下直接安装。 #docker为下载下来的包名。 pip download do…

T-SQL 高阶语法之存储过程

一&#xff1a;存储过程概念 预先存储好的sql程序&#xff0c;通过名称和参数进行执行&#xff0c;供应程序去调用&#xff0c;也可以有返回结果&#xff0c;存储过程可以包含sql语句 可以包含流程控制、逻辑语句等。 二&#xff1a;存储过程的优点 执行速度更快 允许模块化…

typecho 给文章创建目录树

受益于 shortcode 短代码插件和泽泽短代码中目录树的显示样式&#xff0c;形成了自己实现添加文章目录的思路&#xff1a; 一、文章目录树的结构 <div id"toc"><div class"toc-left"><div class"toc-btn" type"button&quo…

解释C++中的左值、右值和右值引用

在C中&#xff0c;理解左值&#xff08;lvalue&#xff09;、右值&#xff08;rvalue&#xff09;、和右值引用&#xff08;rvalue reference&#xff09;是非常重要的&#xff0c;因为它们与C的表达式求值、内存管理以及新的移动语义&#xff08;C11及之后版本引入&#xff09…

游戏中的规律性预测:一种策略性洞察

在电子游戏、棋类游戏乃至生活中的各类竞技游戏中&#xff0c;存在着一系列可被观察和利用的规律&#xff0c;这些规律能够帮助玩家对接下来的游戏进程进行一定程度的预测&#xff0c;并以此优化决策&#xff0c;提高胜率。本文将就此现象展开讨论。 首先&#xff0c;游戏规则是…

搜维尔科技:用于运动科学的 OptiTrack,范围标记、步态捕捉!

OptiTrack 系统提供世界领先的测量精度和简单易用的工作流程&#xff0c;为研究人员和生物力学师的研究提供理想的 3D 跟踪数据。 对所有主要数字测力台、EMG 和模拟设备的本机即插即用支持为研究人员提供了在 Visual3D、MotionMonitor、MATLAB 和其他第三方生物力学软件包中进…

Android加载富文本

直接用webview加载&#xff1a; package com.example.testcsdnproject;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.webk…

Nexus Repository Manager

Nexus Repository Manager https://s01.oss.sonatype.org/#welcome https://mvnrepository.com/-CSDN博客

Ubuntu22.04环境下载安装中文搜狗输入法

0、查看CPU系统架构 确定架构后&#xff0c;下载对应的安装包&#xff0c;否则无法正常安装应用程序 1、进入搜狗拼音输入法官网&#xff0c;下载搜狗输入法 搜狗输入法-首页搜狗拼音输入法官网下载&#xff0c;荣获多个国内软件大奖的搜狗拼音输入法是一款打字更准、词库更大…

Java实战:Spring Boot项目Jar包加密

本文将详细介绍如何在Spring Boot项目中实现Jar包加密。我们将探讨Jar包加密的基本概念&#xff0c;以及如何使用Spring Boot的Jar工具和第三方库来实现Jar包的加密和解密。此外&#xff0c;我们将通过具体的示例来展示如何在Spring Boot项目中使用Jar包加密来保护项目的代码和…

3、函数定义,函数调用,this指向总结,闭包

一、函数的定义方式 1、函数声明 function demo1() {var num 12var result Math.pow(num,2)//指数函数return result }2、函数表达式 var demo2 function (x,y) { //内置对象arguments前面的两个参数 是 x,yvar sum arguments[0] arguments[1]console.log(sum) }3、构…

【物联网应用案例】唐山世园会照明管理项目

世园会作为国际盛会&#xff0c;不仅仅是一次花卉和园艺的展示&#xff0c;更是城市形象和文化的集中展现。夜间照明系统作为其中的重要组成部分&#xff0c;其重要性不言而喻。它不仅关乎着每一位到访游客的视觉体验&#xff0c;更是城市名片的重要展示。 为了给游客带来一次…

精品基于SpringBoot+Vue的常规应急物资管理系统

《[含文档PPT源码等]精品基于SpringBootVue的常规应急物资管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#xff…

十五届蓝桥杯第三期模拟赛题单(C++、java、Python)

备战2024年蓝桥杯 省赛第三期模拟赛题单 备战Python大学A组 第一题 【问题描述】 请问 2023 有多少个约数&#xff1f;即有多少个正整数&#xff0c;使得 2023 是这个正整数的整数倍。 【问题描述】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果…

计网Lesson15 - TCP可靠传输

文章目录 1. 停止等待ARQ协议2. 连续ARQ协议与滑动窗口协议 1. 停止等待ARQ协议 ARQ&#xff08;Automatic Repeat–reQuest&#xff09;自动重传请求 几种重传情况 发送端丢失 发送方过久没有接收到接收方的确认报&#xff0c;这种情况会触发超时重传机制&#xff0c;发送方…

Facebook的未来蓝图:数字社交的下一个篇章

在数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。而在众多的社交媒体平台中&#xff0c;Facebook一直处于领先地位&#xff0c;不断探索着数字社交的新领域和新形式。随着科技的不断发展和社会的不断变革&#xff0c;Facebook正在谱写着数字社交的未…

JSON:简介与基本使用

目录 什么是JSON&#xff1f; JSON的基本结构 JSON的基本使用 在JavaScript中使用JSON 创建JSON对象 解析JSON字符串 生成JSON字符串 在其他编程语言中使用JSON 总结 什么是JSON&#xff1f; JSON&#xff0c;全称为JavaScript Object Notation&#xff0c;是一种轻量…