【Https】工作流程

news2024/11/26 11:47:26

HTTPS 也是⼀个应用层协议。是在 HTTP 协议的基础上引入了⼀个加密层。

前言

由于Http是明文传输,因此如果有人想修改/截获数据都是非常容易,因此就出现了运营商劫持问题。

加密基础知识

明文+密钥=>密文

加密

密文+密钥=>明文

解密

对称加密和非对称加密

有的场景,加密和解密,使用的是相同的密钥

对称密钥

还有的场景,加密和解密,使用的是不同的密钥

非对称密钥

对称加密

加密和解密使用同一个密钥的方式

非对称加密

加密和解密使用一对非对称密钥 , 称为 公钥和私钥

可以使用公钥来加密,私钥就能解密;

也可以使用私钥加密,公钥来解密;


HTTPS的工作过程

引入对称密钥

最简单的保证安全的做法:引入对称密钥。针对传输的数据(httpheader

body)进行加密

比如:

每个客户端,都需要有一把自己的对称密钥,如果客户端生成了密钥,就需要把

密钥传输给服务器

这就又产生了一个问题:黑客同样可以截获到密钥,后续使用这个密钥加密传输,传输的数据还是可以被黑客解密.

解决方法:使用非对称加密对称密钥进行加密

用非对称加密对对称密钥加密

理解的重点是:

服务器用公钥加密,因此要解密就必须用私钥;而黑客只能截获到公钥和密文,不会截获到私钥,因此无法进行解密。

中间人攻击

然后,中间还存在一个严重的问题:中间人攻击 , 中间人攻击的方式,仍然可以拿到对称密钥

这个过程中,实际上这个对称密钥已经被黑客知道了,后续服务端和客户端之间的加密通信,黑客都可以通过这个对称密钥解密获得数据!!!

所以这种情况下:仍然是不安全的!

解决中间人攻击的关键是:需要让客户端能够确定当前收到的公钥,确实是服务器返回的,而不是黑客伪造的

引入数字证书

于是就需要引入证书机制 , 通过第三方机构来确保当前的公钥是有效的.也就是确保公钥确实是服务器返回的,而不是黑客篡改的.

工作过程

1.客户端发送自己支持的加密规则给服务器,告诉服务器自己要连接了.

2.服务器从中选出一套加密算法和hash算法以及自己的身份信息以证书的形式发送给浏览器,我们可以把证书理解为一个结构化的字符串 . 证书中会包含 颁发证书的机构 + 证书的有效期 + 公钥 + 签名 + 等 . 

注意: 这里的公钥就是服务器自动生成的用于加密对称密钥的密钥之一, 私钥在保留在服务器这里,而公钥就是通过证书来传递的.

数字签名

这张证书是CA认证机构来发放的, 认证机构会有一对公钥和私钥 , 私钥是机构的,公钥是客户端系统内置,并且不是通过网络传输 . 发放证书的时候 , 第三方机构会用它的私钥根据证书的信息使用hash算法和加密算法生成一个数字签名 ,  也就是一个哈希密文,包含在证书中一起发送给客户端 . 

3.服务器收到证书之后, 会做一下事情 : 

        3.1 验证证书的合法性 ( 证书是否过期 / 发布机构是否是操作系统受信任的机构 / 验证证书是否被篡改 

        验证是否被篡改:

客户端从系统中拿到这个机构的公钥 , 对签名解密 , 得到一个hash值, 假如是hash1 ; 再重新根据这个证书的摘要信息使用约定好的hash算法,计算这个证书的hash值, 假设是 hash2 ; 对比hash1和hash2 , 如果相同, 说明证书没有被篡改过 . 

        3.2 如果验证通过 , 浏览器会生成要给对称密钥, 并且根据证书中的公钥进行加密 ; 

        3.3 用约定好的hash算法计算握手信息, 然后用对称密钥进行加密 , 然后一起发送给服务器 ; 

4.服务器接收到客户端发来的信息 ,会做以下事情:

        4.1 用私钥解析出对称密钥 , 在用对称密钥解析握手信息, 计算握手信息的hahs值, 再对比和浏览器发过来是否一致 . 如果一致, 那么握手成功 ;

5.后续客户端和服务器之间的通信都会通过这个对称密钥进行加密通信 . 

问题1:如果黑客把证书中的公钥替换成自己的

行不通 ! 客户端拿到证书会重新计算hash值 , 一对比就知道被篡改了 . 证书就会验证失败. 

问题2:如果黑客想把数字签名替换

也是行不通的 ! 因为数字签名是使用认证机构的私钥加密的,黑客当然无法获得公证机构的私钥. 

总结

Https协议是由SSL (安全套接层) + HTTP协议 构建的可进行加密传输 , 身份认证的网络协议 , 要比HTTP协议安全 , 可有效防止数据在传输过程中被篡改. 虽然不是绝对安全的 , 但是它大幅度增加了黑客进行中间人攻击的问题.

 

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

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

相关文章

亚马逊云科技 re:Invent 大会 - ElastiCache Serverless模式来袭

亚马逊云科技 re:Invent 大会 - ElastiCache Serverless模式来袭 本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 文章目录 亚马逊云…

jenkins 运行接口自动化测试脚本,安装第三方依赖库的一些总结

之前在做接口自动化时,jenkins 执行 job 安装 requirements.txt 中的第三方依赖库时折腾了许久,网上查的解决方案均未生效,后来找出一条解决方法,做个记录,希望帮助到遇到同样问题的小伙伴。 我们都知道可以通过生成 …

软考机考考试第一批经验分享

由于机考的特殊性,考试环境与传统笔试环境有所不同。下面是与考试环境相关的总结: 草稿纸:考场提供足够数量的草稿纸,每位考生都会分发一张白纸作为草稿纸。在草稿纸上需要写上准考证号。如果不够用,可以向监考老师再次…

Android 11.0 framework关于systemUI状态栏透明背景的功能实现

1.概述 在11.0的系统rom产品定制化开发中,在对于系统原生SystemUI的状态栏背景在沉浸式状态栏的 情况下默认是会随着背景颜色的变化而改变的,在一些特定背景下状态栏的背景也是会改变的,所以由于产品开发需要 要求需要设置状态栏背景为透明的,所以就需要在Activity创建的时…

排序算法(二)-冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序

排序算法(二) 前面介绍了排序算法的时间复杂度和空间复杂数据结构与算法—排序算法(一)时间复杂度和空间复杂度介绍-CSDN博客,这次介绍各种排序算法——冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序。 文章目录 排…

web前端之正弦波浪动功能、repeat、calc

MENU 效果图htmlstylecalcrepeat 效果图 html <div class"grid"><span class"line"></span><span class"line"></span><span class"line"></span><span class"line"><…

Python采集知乎专栏文章保存成pdf

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 Pycharm wkhtmltopdf 软件 – 文末获取 模块使用: requests >>> pip install requests 数据请求 parsel >>> pip install parsel 数据解析 re >>> 内置模块 不需要安装…

linux 防火墙systemctl (个人笔记)

查看 systemctl status firewalld 开启 systemctl start firewalld 关闭 systemctl stop firewalld.service 查看所有 firewall-cmd --zonepublic --list-ports 开放端口&#xff1a;// --permanent 永久生效,没有此参数重启后失效 firewall-cmd --zonepublic --add-port9527/…

[PyTorch][chapter 7][李宏毅深度学习][深度学习简介]

前言&#xff1a; 深度学习常用的开发平台 TensorFlow torch theano caffe DSSTNE mxnet libdnn CNTK 目录&#xff1a; 1&#xff1a; 深度学习发展历史 2&#xff1a; DeepLearning 工程简介 3&#xff1a; DNN 简介 一 发展历史 二 DeepLearning 工程简介 深度学习三…

如何删除/替换3D模型的材质贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在3D设计和动画领域&#xff0c;材质是呈现真实感和逼真效果的关键因…

从广东到俄罗斯:一段跨越万里的电子消费展之旅

作为一名广东电子消费品行业的从业者&#xff0c;我们经常要奔赴全球不同国家拓展海外业务&#xff0c;而展会就是重要的平台。最近大家在热议的俄罗斯国际消费类电子电器展我参加过一届&#xff0c;跨越万里的旅程&#xff0c;让我深刻体会到了这种国际展览的魅力和挑战。 我参…

Mac部署Odoo环境-Odoo本地环境部署

Odoo本地环境部署 安装Python安装Homebrew安装依赖brew install libxmlsec1 Python运行环境Pycharm示例配置 Mac部署Odoo环境-Odoo本地环境部署 安装Python 新机&#xff0c;若系统没有预装Python&#xff0c;则安装需要版本的Python 点击查询Python官网下载 安装Homebrew 一…

实战——Mac M2 安装mat工具

线上环境出现内存飙升的情况&#xff0c;需要工具定位问题发生点就需要用到mat工具了&#xff0c;之前都是在intel芯片环境上安装的&#xff0c;现在换了m2芯片&#xff0c;导致出现了问题&#xff0c;经过一系列调研都解决了&#xff0c;特此记录下&#xff0c;以备后查 开发…

基于开源的JAVA mongodb jdbc 驱动 使用教程

基于开源的JAVA mongodb jdbc 驱动 使用教程介绍 介绍 本文介绍一款开源的基于JAVA的 Mongodb JDBC 驱动使用教程 开源地址 https://gitee.com/bgong/jdbc-mongodb-driver功能价值 与mybaits融合&#xff1a;复用mybatis的功能特性&#xff0c;如:缓存,if动态判断标签等特…

LSTM和GRU的介绍以及Pytorch源码解析

介绍一下LSTM模型的结构以及源码&#xff0c;用作自己复习的材料。 LSTM模型所对应的源码在&#xff1a;\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 上次上一篇文章介绍了RNN序列模型&#xff0c;但是RNN模型存在比较严重的梯度爆炸和梯度消失问题。 本文…

HPM6750系列--第七篇 Visual Studio Code使用openocd调试查看外设信息

一、目的 在《HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境》我们已经手把手指导大家如何在visual studio code中进行开发&#xff0c;包括编译调试等步骤以及相关配置文件。 但是在实际调试时发现找不到芯片寄存器实时显示的窗口&#xff0c;本篇主要讲解如何实现…

【Linux】信号--信号初识/信号的产生方式/信号的保存

文章目录 一、信号初步理解1.生活角度的信号2.技术应用角度的信号 二、信号的产生方式1.通过终端按键产生信号2.调用系统函数向进程发信号3.硬件异常产生信号4.由软件条件产生信号5.进程退出时的核心转储问题 三、信号的保存1.信号其他相关常见概念2.信号在内核中的表示3.sigse…

《PCL多线程加速处理》-配准-icp

《PCL多线程加速处理》-配准-icp 一、效果展示二、具体实现三、代码一、效果展示 数据越大,速度提升效果越快 1、48万点 2、十万点 3、三万点 4、9000点 配准数据 二、具体实现

使用uniapp,引入uView遇到的问题(easycom无效解决方法)

在HBuilderX通过npm安装uView时&#xff0c;按照官网文档配置easycom无效 官网为&#xff1a; 4. 配置easycom组件模式 此配置需要在项目根目录的pages.json中进行。 温馨提示 uni-app为了调试性能的原因&#xff0c;修改easycom规则不会实时生效&#xff0c;配置完后&…

【前端】vscode 相关插件

一 插件&#xff1a; 01、ESLint 用来识别并检查ECMAScript/JavaScript 代码的工具 02、Prettier 用来格式化代码&#xff0c;如.js、.vue、css等都可以进行格式化 03、Vetur 用来识别并高亮vue语法 04、EditorConfig 用来设置vscode的编程行为 二、安装依赖 01、…