【应用层协议】HTTPS的加密流程

文章目录

  • 1. 认识HTTPS
  • 2. 密文
  • 3. HTTPS加密流程
    • 3.1 对称加密
    • 3.2 非对称加密
    • 3.3 证书

1. 认识HTTPS

HTTPS(超文本传输协议安全)也是一个应用层协议,它是在HTTP协议的基础上引入了一个加密层。
也就是HTTP协议传输文本的方式是明文,而HTTPS协议传输文本是密文,这样文本传输的过程就不会被篡改,保护了数据的完整性和隐私。
下面便是一个数据被篡改的案例,当我们下载一个软件是被第三方劫持,进而下载成第三方的软件:
第三方

2. 密文

密文就是明文经过一系列操作生成的,这一过程也叫加密
把密文经过一系列操作变成明文,这一过程叫解密,解密过程用到的的数据被称做密钥
举例
相信许多人都看过查理九世,里面经常有一些看不到的文字,但我们使用解密卡就呢个能轻松的看到,这个解密卡就是密钥。查理九世

3. HTTPS加密流程

HTTPS协议传输数据,便是加密后密文,加密的方式有很多,但整体可分为对称加密非对称加密

3.1 对称加密

对称加密的意思就是通过同一个密钥可以进行加密和解密。
密文
如上图,我们的请求和响应都是密文,当第三方截获数据后,因为它没有密钥,它也不知道是什么意思。
当然,不同客户端与服务器之间的密钥不能都是同一个,同一个的话第三方很容易就会获得,所以不同客户端的密钥要不一样。
但这样又面临一个问题,服务器要一下维护所有用户的密钥,这也是相当麻烦的。
麻烦
那么,我们就可以当一个客户端和服务器建立连接时先和服务器协商我们
这次的密钥是什么。
okok
这样就安全了吗?如果第三方这样呢。
第三方
是不是这一次被破解,那么非对称加密就诞生了。

3.2 非对称加密

非对称加密就是有两个密钥,一个客户端持有的公钥,一个服务器持有的私钥,公钥对明文加密,私钥对密文解密,但是也可以反着用,两者是配对的。
公钥通常用于传递密钥的目的,然后在使用密钥传输数据,相比对称加密,运算速度变慢,效率变低,但是更加的安全。
非对称
这样如果第三方拦截数据后,第三方并没有私钥,进而也无法获得密钥。
但是这样又会有一个问题,客户端如何获得公钥?万一是第三方伪造的公钥呢?
黑客2

3.3 证书

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书。
这个证书包含了刚才的公钥, 也包含了网站的身份信息。
这个 证书 可以理解成是一个结构化的字符串, 里面包含了以下信息:

  1. 证书发布机构
  2. 证书有效期
  3. 公钥
  4. 证书所有者
  5. 签名 …

这个证书一般都向第三方机构(正规机构,如搭建一个 HTTPS 网站要在CA机构先申请一个证书)申请,第三方机构审核网站的资质后,就会为服务器颁发证书,证书会被第三方机构使用私钥加密,而公钥会被分发给客服端(不是网络传输,系统内置)。
当客服端与服务器建立连接时,服务器就会把证书发送给客户端,客户端就安全的拿到了服务器的公钥。

  1. 那么黑客是否可以改变这个证书的内容,把服务器公钥换成自己的呢?
    答案是不能的,因为证书中含有一个具有校验和的数字签名,这个数据是第三方机构用自己的私钥生成的,黑客无法修改,如果黑客修改了公钥,客户端解密数字签名,得到一个校验和,然后客户端再对证书中的属性按照相同算法再进行一次校验和,如果两次校验和不同,会发现数据被修改。
  2. 那黑客是否能把证书换成自己的呢?
    也不能,黑客证书域名和客户端的域名肯定不同,证书审核是无法通过的。

使用证书获得公钥过程:
公钥

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

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

相关文章

flink选择slot

flink选择slot 在这个类里修改 package org.apache.flink.runtime.resourcemanager.slotmanager.SlotManagerImpl; findMatchingSlot(resourceProfile):找到满足要求的slot(负责从哪个taskmanager中获取slot)对应上图第8,9&…

国庆中秋特辑(八)Spring Boot项目如何使用JPA

目录 一、Spring Boot 项目使用 JPA 的步骤二、Spring Boot 项目使用 JPA 注意事项三、Spring Boot 项目使用 JPA 常用语法 Spring Boot项目如何使用JPA,具体如下 一、Spring Boot 项目使用 JPA 的步骤 添加依赖 在项目的 pom.xml 文件中添加 Spring Boot JPA 和数…

基于SpringBoot的网上超市系统

基于SpringBoot的网上超市系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:用户、管理员 管理员:个人中心、用户管理、商品分类…

Electron.js入门-构建第一个聊天应用程序

什么是electron 电子是一个开源框架,用于使用web技术构建跨平台桌面应用程序;即: HTML、CSS和JavaScript;被集成为节点模块,我们可以为我们的应用程序使用节点的所有功能;组件,如数据库、Api休…

【HUAWEI】VLAN+OSPF+单臂路由

目录 🥮写在前面 🥮3.1、拓扑图 🥮3.2、操作思路 🥮3.3、配置操作 🍣3.3.1、LSW2配置 🍣3.3.2、LSW3配置 🍣3.3.3、R1配置 🍣3.3.4、R2配置 🍣3.3.5、LSW1配置 &#x1f…

力扣 -- 518. 零钱兑换 II(完全背包问题)

解题步骤&#xff1a; 参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int change(int amount, vector<int>& coins) {int ncoins.size();//多开一行&#xff0c;多开一列vector<vector<int>> dp(n1,vector<int>(amount1…

Python3数据科学包系列(三):数据分析实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 Python3数据科学包系列(三):数据分析实战 一: 数据分析与挖掘认知…

Linux apt-get update - Could not connect to XXX(Connection refused)

Linux: apt-get update ----Err:Could not connect to XXX(Connection refused) - 知乎 先换源&#xff08;vi不好使用&#xff0c;可以换成gedit&#xff09; 若还是不行&#xff0c;可以再尝试执行&#xff1a; unset http_proxy unset https_proxy

图像分割中的色块的提取

一 色块提取方法&#xff1a; ①首先是色彩模型的转换 由RGB颜色空间转到HSV颜色空间 原因&#xff1a;RGB颜色空间适合显示系统&#xff0c;但是各分量间相关性很强&#xff0c;比如当图像亮度发生变化时&#xff0c;RGB三个分量都会发生相应改变 但是HSV颜色空间更能感知颜色…

ubuntu22.04 x11窗口环境手势控制

ubuntu22.04 x11窗口环境手势控制 ubuntu x11窗口环境的手势控制并不优秀&#xff0c;我们可以使用touchegg去代替 这个配置过程非常简单&#xff0c;并且可以很容易在一定范围内达到你想到的效果&#xff0c;类比mac的手势控制 关于安装 首先添加源&#xff0c;并安装 sud…

【NeurIPS 2023】Backdoor对抗攻防论文汇总

NeurIPS 对抗攻防论文 NeurIPS2022|对抗攻防论文整理 - 知乎 NeurIPS 2023 Papers BIRD: Generalizable Backdoor Detection and Removal for Deep Reinforcement Learning https://neurips.cc/virtual/2023/poster/70618 摘要&#xff1a; 后门攻击对深度强化学习&…

基于Java的飞机航班订票购票管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Leetcode219. 存在重复元素 II

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b…

深入了解 RabbitMQ:高性能消息中间件

目录 引言&#xff1a;一、RabbitMQ 介绍二、核心概念三、工作原理四、应用场景五、案例实战 引言&#xff1a; 在现代分布式系统中&#xff0c;消息队列成为了实现系统间异步通信、削峰填谷以及解耦组件的重要工具。而RabbitMQ作为一个高效可靠的消息队列解决方案&#xff0c;…

Python爬虫解决中文乱码

目录 一、中文乱码 二、chardet.detect()解决 三、在页面查找编码格式解决 一、中文乱码 问题在于文本的编码格式不正确 import requestsurlhttps://www.shicimingju.com/book/sanguoyanyi.html headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKi…

C++_pen_静态与常量

成员 常成员、常对象&#xff08;C推荐使用 const 而不用#define,mutable&#xff09; const 数据成员只在某个对象生存周期内是常量&#xff0c;而对于整个类而言却是可变的&#xff08;static除外&#xff09; 1.常数据成员&#xff08;构造函数初始化表赋值&#xff09; c…

C#开发的OpenRA游戏之电力系统之一

C#开发的OpenRA游戏之电力系统之一 前面已经分析过雷达地图显示,在雷达地图的下面有一个显示电力数量显示,如下图: 从上图看到电力的数量为0,所以这时候就处于低电力的模式。 要在这里显示电力,那么就需要在界面上做一点编辑,是在yaml文件定义它: Container@POWERBAR…

在Ubuntu 20.04搭建最小实验环境

sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates安装导入GPG公钥所需的依赖包。 sudo wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -导入GPG密钥。 sudo apt-get -y install --no-install-recommends software-p…

Docker启动Mysql

如果docker里面没有mysql需要先pull一个mysql镜像 docker pull mysql其中123456是mysql的密码 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql可以使用如下命令进入Mysql的命令行界面 docker exec -it mysql bash登录mysql使用如下命令,root是…

二层VLAN配置实验

四台PC的IP地址如图所示&#xff0c;子网掩码均为255.255.255.0&#xff0c;四台PC处在同一个局域网之中&#xff0c;在配置VLAN之前能够彼此ping通。配置的目的是将PC1和PC3划分到VLAN10中&#xff0c;PC2和PC4划分到VLAN20中。 在配置之前需要进入系统视角。 创建VLAN 在两…