HTTPS加密解析

news/2024/5/15 6:14:14/文章来源:https://blog.csdn.net/c_study__c/article/details/129415941

日升时奋斗,日落时自省 

目录

1、加密解释

2、对称加密

3、非对称加密

4、证书


HTTPS(HyperText Transfer Protocol over Secure Socket Layer)也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层

HTTP协议内容都是按照文本的方式明文传输的,这就导致子传输过程中出现一些被篡改的情况(运营商劫持)

运营商劫持:例如:你想下载一个软件但是,但是你点击下载的那一时间突出的下载却不与原内容不符,

HTTPS  就如同:HTTP + 安全层(SSL)

SSL/TSL用来加密的协议

1、加密解释

网络上明文传输数据很危险,就需要加密才能保证安全

加密:其实不难理解,这里举出一个日常例子,如果你想要让普通人看不到你写的字,但是你又想让某人看见,制作一个加密规则(我用笔蘸花露水在纸上写了一些内容等待纸上的水干了字就消失了,对方拿到纸后将纸放到水中就显示出来字迹了);此处就是进行加密

加密前的数据  : 就是我用花露水写的内容

加密后的数据  : 等花露水干了字迹消失 加密成功

拿到密文的数据:一张白纸

解密后的数据  :将纸放在水中显现纸上内容

这里的密钥 就是 水

2、对称加密

HTTPS其实主要是涉及到其中的SSL部分 SSL不是在HTTPS使用,现在我们知道安全传输依赖于加密,加密是一种最简单的办法 。这里叫做“对称加密”

加密的过程:明文   -> 加密(key)  ->密文

解密的过程:密文   ->  解密(key) ->  明文

这里加密和解密都使用的是同一个密钥 称为: 对称加密

对称加密的安全性的前提密钥不能被黑客知道了,如果知道,不就可以直接获取内容了

为什么能获取内容呢??不是加密了吗???

产生这么一个问题:客户端生成密钥,还是服务器生成密钥呢??

由于一个服务器对应多个客户端 ,这些客户端每个人都得有不同的密钥,所以客户端生成密钥同时传内容时也给服务器密钥

此处使用一个事例:客户端生成一个密钥 ,客户端就需要把密钥告知服务器

3、非对称加密

 客户端生成密钥,发送给服务器的过程中被黑客入侵网络设备,知道了其中的密文,那这样加密很容易就被侵入了,所以对称加密 就 仍旧不那么安全

有对称加密 就有 非对称加密

对称加密有问题在传输密钥,需要安全的将密钥传输给服务器(对密钥加密)

注:非对称加密是针对对称加密的密钥进行加密

生成一对密钥,公钥和私钥(私钥可以解密公钥可以通过一系列的公式理论可以推导出来)

明文  -> 公钥(加密) -> 密文 使用公钥加密

密文  -> 私钥(加密) -> 明文 使用私钥解密   

注:该两种密钥可以 反过来 ,也是可以使用的

公钥是公开的,私钥只有服务器这边才有(谁也拿不到)

试问:公钥可以反推私钥吗???

答案:暂时不行,因为计算量太大了当前计算机算不出来(计算时间太长,可以算做计算不出来)

针对上图进行解析:

服务器生成一对 公钥和私钥

客户端持有公钥 服务器持有私钥 ,此时客户端拿着公钥,从服务器拿的,黑客也能知道公钥,,但是不能知道私钥,服务器肯定不会给的

客户端使用公钥,来对对称密钥进行加密,传输给服务器,服务器就可以拿着自己的私钥来解密得到对称密钥,只需要这一次就针对“ 对称密钥 ”加密即可,后面客户端和服务器直接就可以直接使用这个对称密钥进行后续传输

试问:非对称加密这么安全,还要对称加密干啥呢??主要是都是非对称加密太慢了,行不通

 看到非对称密钥那可谓是天衣无缝了

那现在不是就万无一失了,其实还是破除当前僵局还是有迹可循的

黑客:虽然我破解不了(不能以公钥反推私钥解密),但是我能既骗你,也骗服务器(中间人攻击)

如何做到中间人:针对客户端时 自称为 服务器 ;针对服务器时 自称为 客户端

4、证书

 针对“非对称加密”情况带来的漏洞如何预防??

问题主要出在了客户端,不能识别服务器的真伪;服务器这边有私钥卡着(涉及不到服务器的问题),解决中间人攻击的关键,在于让客户端能够辨别当前这个响应(公钥)是不是真的是服务器发送来的,针对公钥是不是服务器的操作安全产生了“证书”(第三方的公证机构)相当于是身份认证

服务器创建不是说创建一个公网服务器就创建的,需要去专门的认证机构,申请证书(提供一些资质)像身份证一样,说明你是一个合法公民,审核通过,就会给你颁发证书,服务器生成的公钥,也就包含在这个证书中。

客户端向服务器请求公钥 :此时请求的不仅仅是一个公钥,而是请求整个证书

客户端拿到证书之后,就可以对证书进行校验(验证一下,证书是不是假的,是不是被篡改过)

如果发现证书是无效,浏览器就会直接弹框警告(有些小网站会有这样提示,只要你别手点继续访问)

证书请求的基本流程:

 客户端拿到证书以后就可以会证书进行校验,证书上面会有一个特定的字段,叫做证书的签名

这个签名可以比喻做:你在学校以前写请假条的时候,班主任亲笔拿给门卫才会放你出校,因为门卫会认识学校各个班主任老师的亲笔签名(好使)

证书:

(1) 客户端可以使用认证机构提供的公钥 进行解密,解密之后得到的结果相当于是一个hash值,这个hash值类似于tcp udp里校验和根据证书的其他字段,综合计算出来的结果

(2)客户端就可以使用同样的hash算法,针对其他字段再算一次hash值,得到hash2,看看hash(从签名中解出来的)和hash2(客户端自己算的)这两值相同,说明证书正确有效(没有被偷偷更改过)

为什么说这样可以做到安全??

试问:黑客能否把证书给篡改???将公钥替换???

<1>一旦替换了公钥,就意味着客户端算的hash2和签名解密出来的hash就对不上了,客户端就知道此证书是无效的,自然就会报出警告

<2>黑客是不知道认证机构的 私钥,即使黑客自己算好了新的篡改后的hash值,也无法加密成签名

此处公钥和签名就构成绑定关系有一个修改不了(伪装不了)就不能获得对称加密的密钥(解决了中间人的问题)

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

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

相关文章

Docker学习(二十一)构建 java 项目基础镜像

目录1.下载 JDK 包2.编写 Dockerfile3.构建镜像4.创建容器测试1.下载 JDK 包 JDK各版本官网下载地址&#xff1a; https://www.oracle.com/java/technologies/downloads/archive/#JavaSE 这里我们以 JDK 8u351 为例&#xff0c;点击 Java SE (8U211 and later)。 点击下载 jd…

自动化测试实战篇(9),jmeter常用断言方法,一文搞懂9种测试字段与JSON断言

Jmeter常用的断言主要有&#xff0c;JSON断言和响应断言这两种方式。 断言主要就是帮助帮助人工进行快速接口信息验证避免繁杂的重复的人工去验证数据 第一种响应断言Apply to&#xff1a;表示应用范围测试字段&#xff1a;针对响应数据进行不同的匹配响应文本响应代码响应信息…

WPF 自定义DataGrid控件样式模板5个

WPF 自定义DataGrid控件样式样式一&#xff1a;样式代码&#xff1a;<!--DataGrid样式--><Style TargetType"DataGrid"><!--网格线颜色--><Setter Property"CanUserResizeColumns" Value"false"/><Setter Property&q…

day48第九章动态规划(二刷)

今日任务 198.打家劫舍213.打家劫舍II337.打家劫舍III 今天就是打家劫舍的一天&#xff0c;这个系列不算难&#xff0c;大家可以一口气拿下。 198.打家劫舍 题目链接&#xff1a; https://leetcode.cn/problems/house-robber/description/ 题目描述&#xff1a; 你是一个…

[ Azure ] Episode 03 | 描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx

正常情况如果你不是会计&#xff0c;或者对钱相关的数字比较敏感的财务&#xff0c;本文的一些东西你不会接触的&#xff0c;但是最为云架构或者云运营&#xff0c;你可能会遇到如何采购亦或者估算的我成本和运营成本等等&#xff0c;所以本文的一些知识点就需要进行一定的了解…

Fikker安装SSL证书

Fikker 基于nginx&#xff0c; 订单详细中下载nginx格式&#xff0c; 解压后包含 yourdomain.com.crt 和 yourdomain.com.key 2个文件&#xff0c;将内容粘贴到输入框中.1、说明&#xff1a;在【主机管理】中设置网站域名对应的SSL 数字证书&#xff08;CRT/CER&#xff09;和证…

MySQL 02 :三层结构、备份删除数据库

MySQL 02 &#xff1a;数据库三层结构-破除MySQL神秘 请添加图片描述 通过golang操作MySQL 创建删除数据库 备份恢复数据库 第一次需要配置环境&#xff0c;否则会报错 报错&#xff1a;mysqldump: Got error: 1045: Access denied for user ‘root’‘localhost’ (using …

云端IDE:TitanIDE保障代码安全

原文作者&#xff1a;行云创新技术总监 邓冰寒 引言 2019年&#xff0c;哔哩哔哩的后台源代码被上传至GitHub&#xff0c;其中包含部分用户名及密码信息&#xff0c;受该事件影响&#xff0c;B站盘前股价跌超4%。 2022年&#xff0c;丰田汽车公司远程车载信息通信服务应用程序…

训练自己的GPT2-Chinese模型

文章目录效果抢先看准备工作环境搭建创建虚拟环境训练&预测项目结构模型预测续写训练模型遇到的问题及解决办法显存不足生成的内容一样文末效果抢先看 准备工作 从GitHub上拉去项目到本地&#xff0c;准备已训练好的模型百度网盘&#xff1a;提取码【9dvu】。 gpt2对联训…

java多线程(二四)java多线程基础总结

一、进程与线程 1.进程 进程是操作系统结构的基础&#xff1b;是一次程序的执行&#xff1b;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中&#xff0c;几乎所有运行中的任务对应一条进程&#xff08;Process&#xff09;。一个程序进入内存运行&#xff…

Kalman Filter in SLAM (6) ——Error-state Kalman Filter (EsKF, 误差状态卡尔曼滤波)

文章目录0.前言1. IMU的误差状态空间方程2. 误差状态观测方程3. 误差状态卡尔曼滤波4. 误差状态卡尔曼滤波方程细节问题0.前言 这里先说一句&#xff1a;什么误差状态卡尔曼&#xff1f;完全就是在扯淡&#xff01; 回想上面我们推导的IMU的误差状态空间方程&#xff0c;其实…

synchronized轻量级锁优化

synchronized优化轻量级锁 使用场景 如果一个对象虽然有多个线程访问&#xff0c;但多线程访问时间是错开的&#xff0c;也就是没有竞争&#xff0c;那么可以使用轻量级锁优化&#xff1b; 原理 1、每个线程的栈帧中有锁记录 包括&#xff1a;记录锁对象的地址Object refer…

NLL loss(负对数似然损失)

NLL损失在NLP中含义 &#xff1a; 在自然语言处理中&#xff0c;通常用于分类任务&#xff0c;例如语言模型、情感分类等。NLL损失全称为Negative Log-Likelihood Loss&#xff0c;其含义是负对数似然损失。 在NLP任务中&#xff0c;我们通常将文本数据表示为一个序列&#x…

Netty channelHandler注意事項——super.channelRead(ctx, msg)

通过nioSocketChannel.pipeline()的addLast添加入站处理器&#xff0c;如果有多个必须显示的唤醒下一个入站处理器&#xff0c;否则执行链中间会断掉。 protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {log.debug(nioSocketChannel.toStrin…

Laya小游戏开发,laya3D美术篇——1——关于laya自带的几个shader的基础运用讲解。

最近三年&#xff0c;基本上做的都是laya小游戏项目。也就是微信小程序&#xff0c;很多业内同行都觉得laya做小游戏不好用&#xff0c;去用了其他平台&#xff0c;甚至还有些做app游戏的&#xff0c;都不来趟laya这个坑。原因有那么以下几点。laya对于unity的辅助开发&#xf…

pandas库中的read_csv函数读取数据时候的路径问题详解(ValueError: embedded null character)

read_csv()函数不仅是R语言中的一个读取csv文件的函数&#xff0c;也是pandas库中的一个函数。pandas是一个用于数据分析和处理的python库。它的read_csv函数可以读取csv文件里的数据&#xff0c;并将其转化为pandas里面的DataFrame对象。它由很多参数可以设置&#xff0c;例如…

体验 Kubeshark

体验 KubesharkKubeshark 官网地址Kubeshark简介Linux下安装 Kubeshark身份感知的服务地图Kubeshark 官网地址 https://kubeshark.co/ Kubeshark简介 Kubeshark是Kubernetes的API流量查看器&#xff0c;为Kubernetes的内部网络提供实时的、协议感知的可见性&#xff0c;捕捉…

拉链表

每日的用户更新表获取的三种方式&#xff1a;一是监听mysql库数据的变化&#xff0c;比如用canal合并每日的变化&#xff0c;获取到最后的一个状态二是每天获得一份切片数据&#xff0c;可以通过去两天切片数据的不同来作为每日更新表&#xff0c;可以对所有字段先进性concat&a…

vue3 reactive响应式依赖收集派发更新原理解析

1.Context是什么&#xff1f; React Context是React框架提供的一种机制&#xff0c;用于实现组件之间共享数据的方式。它可以避免了使用props层层传递数据的繁琐和麻烦&#xff0c;尤其是在组件树比较深的情况下。React Context可以让我们在组件树中的任何地方&#xff0c;直接…

八股总结(一)C++语言特性、基础语法、类与模板、内存管理、拷贝控制、STL及C++11新特性

layout: post title: 八股总结&#xff08;一&#xff09;C语言特性、基础语法、类与模板、内存管理、拷贝控制、STL及C11新特性 description: 八股总结&#xff08;一&#xff09;C语言特性、基础语法、类与模板、内存管理、拷贝控制、STL及C11新特性 tag: 八股总结 总结的大部…