【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私钥,所以对任何证书都无法进行合法修改,包括自己的.

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

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

相关文章

minHash(最小哈希)和LSH(局部敏感哈希)

在数据挖掘中,有一个比较基本的问题,就是比较两个集合的相似度。关于这个问题,最笨的方法就是用一个两重循环来遍历这两个集合中的所有元素,进而统计这两个集合中相同元素的个数。但是,当这两个集合里的元素数量非常庞大时,同时又有很多个集合需要判断两两之间的相似度时…

代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

文章目录 [1.修剪二叉搜索树(https://leetcode.cn/problems/trim-a-binary-search-tree/description/)2.将有序数组转换为二叉搜索树3.把二叉搜索树转换为累加树 [1.修剪二叉搜索树(https://leetcode.cn/problems/trim-a-binary-search-tree/description/) 遇到超范围节点&…

论文精读--GPT3

不像GPT2一样追求zero-shot,而换成了few-shot Abstract Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnos…

探究前端路由hash和history的实现原理(包教包会)

今天我们来讲一讲前端中很重要的一个部分路由(router),想必前端小伙伴对‘路由’一词都不会感到陌生。但是如果哪天面试官问你,能大概说一说前端路由的实现原理吗? 你又会如何应对呢? 今天勇宝就带着大家一…

Educational Codeforces Round 160 (Rated for Div. 2) D. Array Collapse(笛卡尔树+DP)

原题链接:D. Array Collapse 题目大意: 给你一个长度为 n n n 的排列 p p p ,排列的定义为 [ 1 , 2 , 3 , . . , n ] [1,2,3,..,n] [1,2,3,..,n] 中每个数都出现 恰好 一次。 你可以做 任意多次 这样的操作: 选出一个任意长度…

8万就能买混动!秦PLUS、启源A05、帝豪L Hi-P谁值得买?

文 | AUTO芯球 作者 | 雷歌 你可以不买比亚迪,但一定要感谢比亚迪。 比亚迪凭着一己之力,将整个混动汽车的价格降到了7万元时代。 秦PLUS价格自9.98万直降2万来到7.98万后,它的直接竞争对手们开始降价,长安启源A05混动降至7.8…

Linux提权—服务漏洞,以MySQL-UDF提权为例

UDF(user defined function,用户自定义函数) 利用条件: 有对MySQL数据库进行创建,插入,删除的权限 secure_file_priv为空 利用过程 secure_file_priv的值为空或者是我们恰巧需要用到的目录,如下: 提权成…

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…

C#通过泛型方法的重载分别调用主窗体和提示窗体

目录 一、涉及到的知识点 1.泛型方法的重载 2.使用泛型更好地实现通用化 二、示例:泛型方法及其重载 1.源码 2. 生成效果 实际开发项目时,有时会因为调用窗体或提示窗体过多,而难于管理,这时,可以通过泛型方法的…

关于 REST API,你了解多少?

什么是 REST API REST 是 REpresentational State Transfer 的缩写,是分布式超媒体系统的架构风格。Roy Fielding 于 2000 年在他的著名论文中首次提出了这一点。从那时起,它已成为构建基于 Web 的 API(应用程序编程接口)的最广泛…

保障工作效率!实时监管员工工作微信

随着移动办公的普及,员工使用微信进行工作沟通已成为常态。为了实时监管员工工作微信,企业可以通过个微管理系统来提高效率并确保合规: 给员工分配微信子账号 企业管理者可以直接在系统上给员工分配子账号,并轻松查看子账号的工…

leetcode hot100 买卖股票的最佳时机二

注意,本题是针对股票可以进行多次交易,但是下次买入的时候必须保证上次买入的已经卖出才可以。 动态规划可以解决整个股票买卖系列问题。 dp数组含义: dp[i][0]表示第i天不持有股票的最大现金 dp[i][1]表示第i天持有股票的最大现金 递归公…

ElasticSearch之bool多条件查询

写在前面 在实际的业务场景中,不可能只是简单的单值查询 ,更多的是n个条件的综合查询,就像下面的搜索: 针对这种场景我们就需要依赖于bool查询了,本文就一起来看下这部分的内容。 1:bool查询介绍 bool查…

在github的README.md中插入视频;在github的README.md中添加gif演示动画

最近需要再github中上传项目的源代码,应导师的要求,需要再README中加入对实验视频的展示,但是github的README.md其实就是一个markdown文件,据我的理解这个文件里应该无法直接插入视频吧?(如果后续有办法直接…

python中的类与对象(2)

目录 一. 类的基本语法 二. 类属性的应用场景 三. 类与类之间的依赖关系 (1)依赖关系 (2)关联关系 (3)组合关系 四. 类的继承 一. 类的基本语法 先看一段最简单的代码: class Dog():d_…

Python Web开发记录 Day3:BootStrap

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 三、BootStrap1、BootStrap-初体验2、BootStrap…

Inno setup 打包jar包+前端dist+mysql+navicat等应用文件操作

目录 一、 使用exe4j将后端jar包打包成exe应用文件 1.创建一个新的工程 2.选择一个你想要存放的路径 3.进入配置界面 4.选择jar转换exe模式 5.自定义名字和选择输出路径 6.配置初始化 7.配置java环境 8.测试运行结果 二、Inno 打包应用文件exe 1.新建一个工程文件 2…

前端取图片相同颜色作为遮罩或者背景

需求 遮罩层取图片相同/相似的颜色作为遮罩 效果 做法 npm库 grade.js 所提供图像中前 2 个主色生成的互补渐变https://github.com/benhowdle89/grade COLOR THIEF 只需使用Javascript即可从图像中获取调色板。 https://github.com/lokesh/color-thief https://lokeshd…

向导式堆栈管理器Dockge

经过申诉,目前博客的几个域名都恢复了,时间也延长到了 2033 年,后面还会不会出问题,老苏就不知道了 什么是 Dockge ? Dockge 是一款时髦的、易于使用的、响应式的、自托管的 docker-compose.yaml 向导式堆栈管理器,可…