本篇摘要

  • 本篇文章将从https是什么,为什么需要https角度,基于之前学的http[速戳速通HTTP]认识https,介绍什么是加密等,认识加密的两种方式:对称加密和非对称加密;引出五种不同的通信方加密方式外加渗透证书相关概念!

在这里插入图片描述

欢迎拜访: 点击进入博主主页

本篇主题: 速通HTTPS基础概念

制作日期: 2025.07.28

隶属专栏: 点击进入所属Linux专栏

一· 认识HTTPS

  • HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层,即可以理解成SSL+TLS+HTTP构成!

二· 为何要加密

在这里插入图片描述

所以:因为 http的内容是明文传输的,明文数据会经过路由器、wifi热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击,所以我们才需要对信息进行加密。

  • 总之,早期的http在网络中明文传递,是暴露的,能被修改!!!

其中

  • 加密就是把明文(要传输的信息)进行一系列变换,生成密文!
  • 解密就是把密文再进行一系列变换,还原成明文!

在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥(正确发音yue 四声,不过大家平时都读作yao四声)!

因此

HTTPS 就是在 HTTP 的基础上进行了加密,进一步的来保证用户的信息安全!

三. 加密方式

3.1 对称加密

  • 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密

常见对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2等
特点:算法公开、计算量小、加密速度快、加密效率高

因此

我们只需要记住:加密秘钥和解密秘钥是同一把,这在某种意义上成为了它的缺点!

  • 一个简单的对称加密:按位异或:

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

3.2 非对称加密

  • 需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

  • 常见非对称加密算法:RSA,DSA,ECDSA

  • 特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

  • 最大的缺点就是运算速度非常慢,比对称加密要慢很多。

因此

这里只需要记住公钥加密只有私钥解开,私钥加密只有公钥解开!

3.3 数据摘要与数据指纹

  • 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改

  • 摘要常见算法:有 MD5、SHA1、SHA256、SHA512等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)。

  • 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比,比如数据库管理使用摘要。

四. HTTPS加密方式

4.1 只使用对称加密

也就是我们只使用一把秘钥进行通信

理想
在这里插入图片描述
实际
在这里插入图片描述

  • 这种理想上被中间人截取的也只能是密文,无利用价值,但是服务端和每个客户端都要有个秘钥来维护,这样就比较麻烦,因此一般采取的是先发送秘钥进行协商,但是这样就被中间人获取秘钥了,因此这种方案是不可行的!

因此就导致了这样
在这里插入图片描述

4.2 双方使用一个非对称加密

  • 服务端发送信息前提是先要和浏览器协商(把公钥发给它)然后用私钥加密,给浏览器,这样信息就暴露了(服务器到浏览器的信息暴露),但是浏览器拿到后,进行发送用公钥加密(只能私钥解密),此时无法暴露,服务器就能正常收到信息!

比如
在这里插入图片描述

4.3 双方都使用非对称加密

  • 交换公钥,公钥加密,私钥解密!

在这里插入图片描述

  • 它们俩互相交换了公钥(用于加密),有没有可能中间人也用公钥进行加密然后比如从客户端发给服务端,这样服务端也就分不清了或者中间人用自己的公钥给客户端,然后进行信息窃取!

总结

  • 因为非对称加密:效率低,而且还有安全问题!

4.4 非对称加密+对称加密

  • 也就是服务端先把公钥给客户端,客户端用它进行对称密钥加密然后给服务端(中间人无私钥,无法解密),最后他俩就用这个对称公钥进行加密

过程如图所示
在这里插入图片描述

  • 这样看似是没有毛病的,但是有没有可能中间人把自己的公钥m给client,然后不就得到了这个被m加密的x了,然后再用s进行加密给服务端这个x,之后s与c用x通信不就被中间人掌握了吗!

结局就成了这样

在这里插入图片描述
因此

  • 关键问题还是防止中间人攻击也就是如何确保client收到的公钥来自server而不是中间人呢?

4.5 两次非对称加密与一次对称加密

引入证书

  • 这种方式的前两次非对称加密都是为了保证最后一次对称加密的安全性

  • 证书=签名+明文

CA认证:

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

下面看一下申请证书过程图

在这里插入图片描述
这里需要记住:

  • 签名只有CA机构能做(因为只有它才有对应私钥)。
  • 签名和解签名的秘钥和服务端的秘钥不是同一种
  • CA的私钥由CA使用进行签名,CA的公钥由浏览器自备进行解签名验证
  • 服务端和客户端通信的时候,客户端会先请求,此时服务端就去CA机构申请一个证书,这个证书就是保证client拿到的一定是server的公钥!
证书有没有可能被篡改

那么此时浏览器拿到证书如何核对有没有在server与client传播过程中被中间人修改呢?

CA机构在形成证书的时候会拿着私钥对明文信息散列后的摘要进行加密作为签名!然后当客户端收到证书后会拿着CA公钥对签名解密拿到的数据和明文信息散列后进行对比;如果相同就证明没有被修改,拿着公钥进行传递对称秘钥!!!被修改了就警告! !! —>保证了client一定拿到server的公钥!!!

如图
在这里插入图片描述
但是如果中间人修改server发给client的证书的明文/签名/或者整体替换呢(中间人如果要想成功传递自己的秘钥必须修改签名)?

  • 修改明文:如果修改了的话,当client拿到证书后会发现不匹配的。

  • 修改签名:中间人没有ca的私钥无法对前面修改。

  • 整体替换:这里整体替换就必须要ca的严格审查,中间人只能按照要求申请新的证书,但是还有域名等等一些信息使得客户端可以识别到是不是对应服务端!

中间人动机

  • 要么把明文里的公钥换成自己的。
  • 要么换成自己的后然后改签名让客户能够获取公钥。

但是,均行不通

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

因此总结
中间人无法修改证书和伪造新的证书!

非对称加密+对称加密+证书认证

因此,它来了

这里可以理解成:

首先进证书申请+客户端验证证书(第一次非对称加密以及解密);接着就是client拿到对应的server的公钥,然后进行传递接下来进行非对称加密的秘钥,服务端然后拿着自己的私钥进行解密拿到(第二次非对称加密以及解密);接着就是用这个非对称秘钥进行通信了(非对称加密及解密)!

也就是这样在这里插入图片描述

  • 注意:这里的易混点是签名和解签名只能用CA的私钥和公钥;而不是服务器的的私钥公钥(过程中服务器会泄露公钥但私钥不会泄露)!! !

下面看张更加详细的图

在这里插入图片描述
详细步骤

  • 第一次非对称加密:用于校验证书是否被篡改.服务器持有私钥(私钥在形成CSR文件与申请证书时获得),客户端持有公钥(操作系统包含了可信任的CA认证机构有哪些,同时持有对应的公钥).服务器在客户端请求时,返回携带签名的证书.客户端通过这个公钥进行证书验证,保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。

  • 第二次非对称加密:用于协商生成对称加密的密钥.客户端用收到的CA证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密密钥。

  • 对称加密:客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

超详细大白话叙述过程

首先服务器拿着相关信息(域名,csr,明文信息等),然后生产对应的私钥(自己保存),公钥(交给CA)然后向CA申请证书,ca检查严格审核后,拿着自己的专属私钥进行对明文散列后数据签名,接着交给server,最后server把证书给client,client拿着自己内置信任的CA机构的公钥容纳后进行解密签名看是否合法(明文散列是否相同,域名等是否匹配),不合格就发出警告(上报,或者浏览器阻止用户访问等),合格的话就拿到对应服务器的公钥,自己产生对称秘钥,然后发给服务端(中间人稚嫩获得密文,无法解密),然后服务端解密后,他俩就利用对称秘钥进行通信了!

总结
这一切的目的就是保证这个对称秘钥通信的时候是安全的 !

疑问点
  1. 为什么要进行签名加密
  • 如果不签名的话就是直接证书上的就是明文,那么在客户端核对前是有可能被中间人修改的,因此是不安全的。
  1. 为什么明文不直接加密而是先生成摘要呢
  • 缩小签名密文的长度,加快数字签名的验证签名的运算速度
  1. 如何成为中间人:
  • ARP欺骗:在局域网中,hacker经过收到ARP Request广播包,能够偷听到其它节点的(IP,MAC)地址。例,黑客收到两个主机A,B的地址,告诉B(受害者),自己是A,使得B在发送给A的数据包都被黑客截取。

  • ICMP攻击: 由于ICMP协议中有重定向的报文类型,那么我们就可以伪造一个ICMP信息然后发送给局域网中的客户端,并伪装自己是一个更好的路由通路。从而导致目标所有的上网流量都会发送到我们指定的接口上,达到和ARP欺骗同样的效果。

查看浏览器的受信任证书相关信息

  • 首先点击浏览器对应设置
    在这里插入图片描述
  • 接下来点击安全选项
    在这里插入图片描述
  • 可以看到有很多信任的证书,点击可以看到公钥等信息
    在这里插入图片描述

五. 本篇小结

  • 通过本篇对HTTPS的基础认识,建立了大致的了解,知道了它背后的原理等,此次学习虽然是大致的,但是也看到了HTTPS背后的基本原理,为以后对它更加深入的学习奠定了基础,冲冲冲!

请记住:

今日的懒惰成就明日的堕落!

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

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

相关文章

数据库:表和索引结构

表和索引是如何组织和使用的,在很大程度上取决于具体的关系型DBMS,然而它们都依赖于大致相似的结构和原则。索引页和表页表行和索引行都被存储在页中。页的大小一般为4kb,这是一个可以满足大部分需求的大小,也可以是其他大小&…

Java 学习笔记(基础篇5)

1. 综合练习(1) 抽奖public class test10 {public static void main(String[] args) {int[] arr {2,588,888,1000,10000};Random r new Random();for (int i 0; i < arr.length; i) {int randomIndex r.nextInt(arr.length);int temp arr[randomIndex];arr[randomIndex…

P1162 填涂颜色(染色法)

P1162 填涂颜色 - 洛谷 #include <bits/stdc.h> using namespace std; #define ll long long const int N 1e7 10; int n; int a[100][100],b[110][110]; int dx[4]{-1,1,0,0}; int dy[4]{0,0,1,-1}; void dfs(int x,int y) {if(x<0 || x>n1 || y<0 || y>n…

Webrtc在项目中承担的角色

一、简单划分 解决方案层:负责对SDK的对接、操作业务逻辑、UI封装、采集、渲染等,属于基础业务逻辑层 会议SDK层:负责对会议业务逻辑的封装、服务端交互、创会/加会/离会等,属于会议业务逻辑层 mediasoupclient层: 负责对webrtc封装,提供会议层面相关接口,属于webrtc业务…

Servlet上传文件

这是一个Maven项目tomcat版本&#xff1a;9.0.107pom.xml<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.…

cocos creator 3.8 - 精品源码 -《汉中汉:汉字中的字》

cocos creator 3.8 - 精品源码 - 超级文字大师游戏介绍功能介绍免费体验下载开发环境游戏截图免费体验游戏介绍 《汉中汉&#xff1a;汉字中的字》、找汉字&#xff0c;是一款从文字中的笔画找出可以组成新汉字的小游戏。比如&#xff1a;“王”字中的笔画就可以组成&#xff…

手机端的音视频界面或者图片文档界面共享给大屏

手机端的音视频界面或者图片文档界面共享给大屏&#xff0c;可通过无线投屏和有线连接等技术手段实现&#xff0c;以下是具体介绍&#xff1a;无线投屏&#xff1a;AirPlay&#xff1a;这是苹果公司开发的无线共享协议。苹果手机可通过上滑或下拉调出控制中心&#xff0c;点击 …

Linux内存管理系统性总结

Linux内存管理系统性总结 内存管理核心架构图 #mermaid-svg-hKRdgBBYXZTiost8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hKRdgBBYXZTiost8 .error-icon{fill:#552222;}#mermaid-svg-hKRdgBBYXZTiost8 .error-t…

MySQL 运算符实战:9 道经典练习题解析

MySQL 运算符实战&#xff1a;9 道经典练习题解析 运算符是 MySQL 查询的 “灵魂”&#xff0c;灵活运用各类运算符能让数据筛选更加精准高效。本文通过 9 道实战练习题&#xff0c;详解逻辑运算符、比较运算符及模糊匹配的用法&#xff0c;帮你快速掌握运算符的核心应用场景。…

【R语言】更换电脑后,如何在新设备上快速下载原来设备的 R 包?

【R语言】更换电脑后&#xff0c;如何在新设备上快速下载原来设备的 R 包&#xff1f; 在日常使用 R 进行数据分析时&#xff0c;我们往往会安装很多包&#xff08;packages&#xff09;&#xff0c;一旦更换电脑&#xff0c;手动一个一个重新安装会非常麻烦。本文介绍一种简单…

如何在 Ubuntu 24.04 或 22.04 LTS 上安装 PowerShell

在本教程中,我们将学习如何在 Ubuntu 24.04 Noble 或 22.04 Jammy JellyFish Linux 中通过命令终端安装 Microsoft Windows PowerShell。 Windows PowerShell 既是一个命令行外壳程序,也是一种脚本语言。它拥有超过 130 个遵循一致语法和命名约定的命令行工具,称为 cmdlet(…

基于支持向量机的数据回归预测(libsvm) SVM

一、作品详细简介 1.1附件文件夹程序代码截图 全部完整源代码&#xff0c;请在个人首页置顶文章查看&#xff1a; 学行库小秘_CSDN博客​编辑https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夹说明 1.2.1 main.m主函数文件 这段 MATLAB 代码实现…

Flowith-节点式GPT-4 驱动的AI生产力工具

本文转载自&#xff1a;Flowith-节点式GPT-4 驱动的AI生产力工具 - Hello123工具导航 ** 一、节点式 AI 工作流革新者&#xff1a;Flowith 深度解析 二、产品核心定位 Flowith 是一款基于 GPT-4 Turbo 的节点式 AI 生产力工具&#xff0c;突破传统单线程聊天模式&#xff0c…

MySQL的事务日志:

目录 redo&#xff08;重做日志&#xff09;&#xff1a; 特点&#xff1a; 组成&#xff1a; 整体流程&#xff1a; redo log buffer与redo log file之间的刷盘策略&#xff1a; 异步刷盘&#xff1a; 同步刷盘&#xff1a; 拆中策略&#xff1a; undo&#xff08;回…

JavaScript 中 throw error 与 throw new Error(error) 的用法及区别,分别适合什么场景使用?

JavaScript 中 throw error 与 throw new Error(error) 的用法及区别 在 JavaScript 中&#xff0c;throw 关键字用于抛出异常。当代码遇到某些错误或异常情况时&#xff0c;可以通过抛出错误来通知程序&#xff0c;方便后续的错误处理。尽管 throw 的使用看似简单&#xff0c…

鸿蒙自带组件效果大全

图形变换-视效与模糊-通用属性-ArkTS组件-ArkUI&#xff08;方舟UI框架&#xff09;-应用框架 - 华为HarmonyOS开发者 注意:找到需求效果之后先对一下版本 视距 图像效果 图片裁剪 颜色渐变 前景属性设置 外描边设置: 视效设置: 组件内容模糊 运动模糊 点击回弹效果…

ISP算法如何优化提升成像质量

ISP算法通过多维度技术协同优化成像质量&#xff0c;核心优化路径如下&#xff1a;一、降噪与细节增强‌AI驱动降噪‌深度学习模型实时识别噪点模式&#xff0c;暗光场景信噪比提升5倍以上&#xff0c;同时保留纹理细节。时空域联合降噪技术抑制运动模糊&#xff0c;鬼影消除率…

单例模式及优化

单例模式是一种创建型设计模式&#xff0c;其核心是确保一个类在程序中只能存在唯一实例&#xff0c;并提供一个全局访问点。这种模式适用于需要集中管理资源&#xff08;如日志、配置、连接池&#xff09;的场景&#xff0c;避免资源冲突和重复创建的开销。 一、介绍 类型 单例…

Dockerfile优化指南:利用多阶段构建将Docker镜像体积减小90%

更多如果你已经跟随我们之前的教程&#xff0c;亲手将自己的应用装进了Docker这个“魔法盒子”&#xff0c;那你可能很快就会遇到一个幸福但又尴尬的烦恼&#xff1a;你亲手构建的Docker镜像&#xff0c;竟然像一个塞满了石头和棉被的行李箱&#xff0c;臃肿不堪&#xff0c;笨…

英文PDF翻译成中文怎么做?试试PDF翻译工具

在全球化快速发展的时代&#xff0c;跨语言交流变得愈发频繁&#xff0c;无论是学术研究、商务合作还是日常学习&#xff0c;都离不开一个高效、准确的翻译工具。尤其是对于PDF文件的翻译需求&#xff0c;更是日益增长。今天&#xff0c;就让我们一起深入了解几款在PDF翻译领域…