一、基础概念

1.HTTP

HTTP (超文本传输协议) 是一种用于客户端和服务器之间传输超媒体文档的应用层协议,是万维网的基础。
简而言之:一种获取和发送信息的标准协议
在这里插入图片描述

2.SSL

安全套接字层(SSL)是一种通信协议或一组规则,用于在网络上的两个设备或应用程序之间创建安全连接。在通过互联网共享凭证或数据之前,建立信任并对另一方进行身份验证非常重要。SSL 是一种技术,您的应用程序或浏览器可能使用该技术在任何网络上创建安全的加密通信通道。
简而言之:一种用于进行身份验证的通信协议

3.TLS

TLS 是 SSL 的直接后继者,所有版本的 SSL 目前均已弃用。但是,使用术语 SSL 来描述 TLS 连接的情况很常见。在大多数情况下,术语 SSL 和 SSL/TLS 都是指 TLS 协议和 TLS 证书。
简而言之:SSL的升级版

4.HTTPS

HTTPS 是在不安全的 HTTP 连接上建立安全 SSL/TLS 协议
简而言之:HTTPS = HTTP + SSL/TLS

5.证书

  • 域名证书:域名证书是针对域名注册的拥有者而言的,它是以电子证书的格式来表现的,标明了注册域名、域名所有人的中文和英文名称、域名注册时间和到期时间等这些内容。
  • SSL证书:SSL证书是数字证书的一种,是遵守SSL协议的,由受信任的数字证书颁发机构(简称CA)在验证服务器身份后颁发,具有服务器身份验证和数据传输加密的功能。
    简而言之:域名证书用于证明域名的归属权。SSL证书用于保护网站的数据传输安全。(域名证书是 SSL 证书的基础)

二、思考

1.HTTP和HTTPS比较

1.1 HTTP在传输时候是明文传输,很容易被他人恶意拦截获取篡改(中间人攻击)

在这里插入图片描述

1.2 https则通过加密手段保证数据的安全。相应的因为在http基础上每次传输都会涉及加密和解密,对应消耗的资源和时耗会增加。

1.3 如果确认服务所在的环境很安全(内网)或者涉及的都是非隐私性数据,则采用http会更好;如果涉及隐私数据则采用https会更好

2.HTTPS具体如何确保数据安全的

  • 简而言之就是使用SSL/TLS加密协议对HTTP通讯协议传输的内容进行加密/解密,即使中途传输内容被人截获了,其获得的也只是加密后的内容,保证了数据安全。
  • 上面说了SSL,其实SSL就是TLS的前身,下文涉及这里的就统一就称为TLS了。

2.1 TLS的对称加密

  • TLS的核心内容就是对称加密。对称加密就是客户端跟服务端协商好一个对话密钥(预主密钥),每次发送/接收消息都用对话密钥对内容进行加密/解密
    在这里插入图片描述
    如图,
    a.客户端和服务端先进行一次会话(Client Hello,Server Hello),协商会话密钥的生成算法和协议版本
    b.然后客户侧根据协商好的内容生成会话密钥(预主密钥)并发送给服务端【这一步注意存在隐患,后面会展开讲】
    c.再之后客户端和服务端就可以使用会话密钥进行正常对称加密交互了

2.2 TLS的非对称加密

在上面讲TLS的对称加密流程中存在一个隐患点(流程b),就是客户端在传输生成的会话密钥(预主密钥)时,如果这期间被黑客截获,那他就也可以用会话密钥对后序传输的所有内容进行加/解密,先前的所有操作都白搭了。
ps:这里可能会有人问既然a步骤时已经协商好了加密方法和版本,为啥双方直接各自根据协商好的加密方法和版本直接都本地生成会话密钥,就不需要再去传输会话密钥了
首先,如果采取这种形式的话,那黑客直接就在最开始直接截取协商的加密算法和版本号就可以了,黑客也在本地生成对应的会话密钥去加/解密后序的交互内容
其次,其实在Client Hello,生成密钥的过程中客户端会生成俩随机数a、c,Server Hello过程中服务侧会生成随机数b,在生成会话密钥时夹杂这三个随机数进行生成。这样即使黑客知道协商的加密算法和版本也无法计算出最终的会话密钥

回归正题,TLS这里就是通过非对成加密来优化传输会话密钥中泄漏的风险

2.2.1非对称加密

非对称加密的核心内容就是使用公/私钥,内容用公钥加密,只有私钥才能解密出来。私钥自己保留,公钥放开给任何人,别人用公钥对内容加密,自己用私钥进行解密。
在这里插入图片描述

2.2.2 非对成加密实际在TLS中的应用

在这里插入图片描述
a. 服务端在最开始协商版本和加密方法是把公钥也发送给客户端
b. 客户生成会话密钥后用公钥再加密一道,然后发送给服务端
c. 服务端收到被公钥加密过的会话密钥,用私钥进行解密获取原始的会话密钥
d. 后序客户端跟服务端就可以用会话密钥进行交互了
在这个过程中客户端跟服务端并没有传输过会话密钥,所以即使黑客截获到被会话密钥加密的内容,也无法解密到真实数据

3.TLS过程存在的风险

上面讲了TLS的对成加密+非对称加密的全过程,但是这其中还是有一个风险点。公/私密钥对任何人都可以创建,如果过程中黑客将传输的公钥替换成自己创建的公钥,那后序的操作也就都白费了
在这里插入图片描述
如图,假设黑客从一开始就介入,类似中间商黄牛一样。

  • 面向客户端装成服务端,提供给服务端自己的公钥y,用自己的私钥y对客户端发送来的“公钥y加密过的会话密钥”进行解密原始会话密钥
  • 面向服务端装成客户端,拿到服务端的公钥x,将从客户端解密到的“原始会话密钥”用公钥x进行加密再发送给服务端
  • 这样客户端、黑客、服务端最终手上的会话密钥就是一致的了,后序的交互过程就如下
    • 客户端数据加密 -> 黑客解密拿到真实数据 -> 黑客使用会话密钥对原始数据/篡改数据加密 -> 服务端解密到黑客发来的原始数据/篡改数据
    • 服务端数据加密 -> 黑客解密拿到真实数据 -> 黑客使用会话密钥对原始数据/篡改数据加密 -> 客户端解密到黑客发来的原始数据/篡改数据

4.优化TLS过程中的风险–证书

简而言之,为了优化上面的风险,服务端不要直接传输公钥给客户端。而是替换为有公证力的证书传输给服务端。服务端可以根据证书解析拿到公钥,同时证书也能证明该公钥是没有被人掉包/篡改过的

4.1 证书介绍

证书包含如下内容

  • Issued To:证书的申请者,即服务侧申请证书时登记自己的身份信息
  • Issued By:证书的颁发者,有公证力的组织
  • Validity Period:证书的有效期信息
  • SHA-256 Fingerprints:证书的指纹信息和登记的公钥
    • 指纹码:证书的唯一标识(保证证书的完整性)。被Hash加密过
      在这里插入图片描述
      服务侧拿到证书需要确保两个事情才能信任证书
      1.证书的完整性:证书在传输过程中是否被人截获修改篡改过?比如证书被黑客拦截,对里面的内容进行了修改(数据篡改)
      2.证书的可信性:证书虽然是完整的,但不知道这个证书是否为客户端发送的被公证过滴证书?比如真正的证书a被黑客拦截,黑客再给服务端换成自己生成的证书b发送过去(证书调包)
      这两种情况分别需要使用证书指纹、数字签名来验证

4.2 证书指纹

指纹码:证书的唯一标识(保证证书的完整性)。被Hash加密过

  • hash加密不可逆且具有唯一性,即无法根据加密后的内容反解析出初始内容,不同的初始内容加密后不可能得到相同的加密串。那么服务侧对原始内容hash后进行比对,如果不一致则代表当前证书中途被人篡改过内容

4.3 数字签名

用于验证证书身份的真实性

  • 我们之前都是对内容公钥加密,私钥解密。数字签名这里相反,会把内容进行私钥加密,公钥解密
  • 权威机构CA颁发证书时候,会用私钥对证书加密,然后颁发出去。服务端拿到加密证书后,再用公钥解密证书,获取证书信息。如果解密成功,说明手上的公钥和证书加密使用的私钥为一对,即说明该加密证书确实为权威机构所颁发的那个证书
  • 电脑一般安装的系统/浏览器内都自带有由权威机构颁发的证书验证公钥,即不需要从网络上传递公钥,也就不存在证书公钥被泄漏的风险
    ps:思考题:全网那么多域名需要申请证书,又有那么多权威CA机构。总不能在系统和浏览器里都预装所有证书验证公钥吧?
    a.CA机构也是分级的,浏览器和系统只需要预装根CA机构的公钥;
    b.用根CA公钥解密中间CA的【A类证书】(这里的证书指的是 根CA 颁发给 中间CA 验证 中间CA机构权威性 的证书);
    c.然后从A类证书里拿到下一级证书的公钥(这里的下一级如果是更次级的中间CA,则类推继续到下一级,直到拿到验证服务端域名的【B类证书】),

    在这里插入图片描述

4.4 TLS完整过程

在这里插入图片描述

ps:学习参考(bilibili:Zzlock、技术蛋老师)

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

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

相关文章

在 C++ 中,判断 `std::string` 是否为空字符串

在 C 中&#xff0c;判断 std::string 是否为空字符串有多种方法&#xff0c;以下是最常用的几种方式及其区别&#xff1a; 1. 使用 empty() 方法&#xff08;推荐&#xff09; #include <string>std::string s; if (s.empty()) {// s 是空字符串 }特性&#xff1a; 时间…

【Harmony】鸿蒙企业应用详解

【HarmonyOS】鸿蒙企业应用详解 一、前言 1、应用类型定义速览&#xff1a; HarmonyOS目前针对应用分为三种类型&#xff1a;普通应用&#xff0c;游戏应用&#xff0c;企业应用。 而企业应用又分为&#xff0c;企业普通应用和设备管理应用MDM&#xff08;Mobile Device Man…

Linux云计算基础篇(8)

VIM 高级特性插入模式按 i 进入插入模式。按 o 在当前行下方插入空行并进入插入模式。按 O 在当前行上方插入空行并进入插入模式。命令模式:set nu 显示行号。:set nonu 取消显示行号。:100 光标跳转到第 100 行。G 光标跳转到文件最后一行。gg 光标跳转到文件第一行。30G 跳转…

Linux进程单例模式运行

Linux进程单例模式运行 #include <iostream> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int write_pid(const cha…

【Web 后端】部署服务到服务器

文章目录 前言一、如何启动服务二、挂载和开机启动服务1. 配置systemctl 服务2. 创建server用户3. 启动服务 总结 前言 如果你的后端服务写好了如果部署到你的服务器呢&#xff0c;本次通过fastapi写的服务实例&#xff0c;示范如何部署到服务器&#xff0c;并做服务管理。 一…

国产MCU学习Day5——CW32F030C8T6:窗口看门狗功能全解析

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 一.窗口看门狗&#xff08;WWDG&#xff09;简介 二.窗口看门狗寄存器列表 三.窗口看门狗复位案例 一.窗口看门狗&#xff08;WWDG&#xff09;简介 CW32F030C8T6 内部集成窗口看…

2025年文件加密软件分享:守护数字世界的核心防线

在数字化时代&#xff0c;数据已成为个人与企业的宝贵资产&#xff0c;文件加密软件通过复杂的算法&#xff0c;确保信息在存储、传输与共享过程中的保密性、完整性与可用性。一、文件加密软件的核心原理文件加密软件算法以其高效性与安全性广泛应用&#xff0c;通过对文件数据…

node.js下载教程

1.项目环境文档 语雀 2.nvm安装教程与nvm常见命令,超详细!-阿里云开发者社区 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解决问题)在一个项目,跳转到外部html页面,页面布局

问题描述目前&#xff0c;ERP后台有很多跳转外部链接的地方&#xff0c;会直接打开一个tab显示。因为有些页面是适配手机屏幕显示&#xff0c;放在浏览器会超级大。不美观&#xff0c;因此提出优化。修改前&#xff1a;修改后&#xff1a;思考过程1、先看下代码&#xff1a;log…

网络通信协议与虚拟网络技术相关整理(上)

#作者&#xff1a;程宏斌 文章目录 tcp协议udp协议arp协议icmp协议dhcp协议BGP协议OSPF协议BGP vs OSPF 对比表VLAN&#xff08;Virtual LAN&#xff09;VXLAN&#xff08;Virtual Extensible LAN&#xff09;IPIP&#xff08;IP-in-IP&#xff09;vxlan/vlan/ipip网桥/veth网…

物联网软件层面的核心技术体系

物联网软件层面的核心技术体系 物联网(IoT)软件技术栈是一个多层次的复杂体系&#xff0c;涵盖从设备端到云平台的完整解决方案。以下是物联网软件层面的关键技术分类及详细说明&#xff1a; 一、设备端软件技术 1. 嵌入式操作系统 实时操作系统(RTOS)&#xff1a; FreeRTO…

GreatSQL通过伪装从库回放Binlog文件

GreatSQL通过伪装从库回放Binlog文件 一、适用场景说明 1、主库误操作恢复 利用 Binlog 在其他实例解析、回放&#xff0c;根据gtid只回放到指定位点。 2、网络隔离环境同步 备份恢复后可以拉去主库Binlog文件至新实例同步增量数据。 3、备份恢复遇到Binlog文件过大处理 恢复实…

MVC 架构设计模式

在现代软件开发中&#xff0c;架构设计决定了一个项目的可维护性与可扩展性。MVC&#xff08;Model-View-Controller&#xff09;作为经典的分层设计模式&#xff0c;广泛应用于 Web 系统、前端应用乃至移动端开发中。本文不仅介绍 MVC 的核心思想和机制&#xff0c;还将结合具…

(18)python+playwright自动化测试鼠标拖拽-上

1.简介 本文主要介绍两个在测试过程中可能会用到的功能&#xff1a;在selenium中介绍了Actions类中的拖拽操作和Actions类中的划取字段操作。例如&#xff1a;需要在一堆log字符中随机划取一段文字&#xff0c;然后右键选择摘取功能。playwright同样可以实现元素的拖拽和释放的…

Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议

Android 网络全栈攻略系列文章&#xff1a; Android 网络全栈攻略&#xff08;一&#xff09;—— HTTP 协议基础 Android 网络全栈攻略&#xff08;二&#xff09;—— 编码、加密、哈希、序列化与字符集 Android 网络全栈攻略&#xff08;三&#xff09;—— 登录与授权 Andr…

Python爬虫实战:从零构建完整项目(数据采集+存储+异常处理)

Python爬虫实战&#xff1a;从零构建完整项目&#xff08;数据采集存储异常处理&#xff09; 爬虫不是简单的请求解析&#xff0c;而是一个系统工程。本文将带你体验企业级爬虫开发的核心流程。 一、前言&#xff1a;为什么需要完整的爬虫项目&#xff1f; 作为初学者&#xf…

大数据时代UI前端的用户体验设计新思维:以用户为中心的数据可视化

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;大数据重构用户体验设计的底层逻辑在数据爆炸式增长的今天&#xff0c;用…

FreeRTOS 中任务控制块(Task Control Block,TCB)用于管理和描述任务的核心数据结构

在 FreeRTOS 中&#xff0c;任务控制块&#xff08;Task Control Block&#xff0c;TCB&#xff09;是用于管理和描述任务的核心数据结构。每个任务都有一个对应的 TCB&#xff0c;它包含了任务的所有相关信息。 TCB 的主要功能 存储任务状态信息&#xff1a;TCB 中包含了任务…

前端-HTML-day1

目录 1、标签语法 2、HTML基本骨架 3、标签的关系 4、注释 5、标题标签 6、段落标签 7、换行和水平线标签 8、文本格式化标签 9、图像标签-基本使用 10、图像标签-属性 11、相对路径 12、绝对路径 13、超链接 14、音频 15、视频 16、综合案例1--个人简介 17、…

OpenCV篇——项目(二)OCR文档扫描

目录 文档扫描项目说明 前言 文档扫描代码总体演示 OCR文档识别代码总体演示: ​编辑 代码功能详解 1. 预处理阶段 2. 边缘检测 3. 轮廓处理 4. 透视变换 5. 后处理 主要改进说明&#xff1a; 使用建议&#xff1a; 文档扫描项目说明 前言 本项目实现了一个自动…