HTTPS加密的介绍

        HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)是HTTP协议的安全版本。它在HTTP的基础上加入了SSL/TLS协议,用于对数据进行加密,并确保数据传输过程中的机密性、完整性和身份验证。

在HTTPS出现之前,HTTP协议以明文形式传输数据。这意味着:

数据可以被窃听(机密性缺失):

任何在数据传输路径上的人(如你的ISP、咖啡馆的Wi-Fi管理员、网络攻击者)都可以截获并查看你发送和接收的数据,包括登录密码、信用卡信息、聊天内容等。

数据可以被篡改(完整性缺失):

中间人可以修改传输中的数据。例如,将你访问的合法银行网站链接替换成钓鱼网站,或者在网页内容中注入恶意代码。

身份可能被冒充(身份验证缺失):

你无法确定你正在访问的网站是否是真正的目标网站,可能是一个伪造的“钓鱼”网站。
HTTPS就是为了解决这些问题而设计的。

HTTPS加密是如何工作的?(核心机制:SSL/TLS握手)

        HTTPS的核心在于SSL(Secure Sockets Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)协议。

        一个典型的HTTPS通信过程分为两个阶段:

阶段一:SSL/TLS握手(建立安全连接)

这是最关键的部分,双方协商加密方式并验证身份。过程大致如下:

客户端发起请求(Client Hello):

浏览器(客户端)向服务器发送一个“Client Hello”消息。
消息中包含:客户端支持的TLS版本、客户端支持的密码套件(加密算法组合,如RSA、AES、SHA等)、一个随机数(ClientRandom)。

服务器响应(Server Hello):

服务器收到请求后,选择一个双方都支持的TLS版本和密码套件。
服务器发送“Server Hello”消息,包含:选定的TLS版本、选定的密码套件、服务器生成的随机数(ServerRandom)。

服务器发送证书(Server Certificate):

服务器将其数字证书发送给客户端。这个证书由受信任的**证书颁发机构(CA)**签发,包含了服务器的公钥、域名、有效期等信息,并附有CA的签名。
(可选)服务器密钥交换(Server Key Exchange): 某些加密套件可能需要服务器发送额外的密钥交换参数。

服务器发送结束(Server Hello Done):

服务器通知客户端,服务器部分的初始信息发送完毕。

客户端验证证书并生成预主密钥(Pre-Master Secret):

验证证书: 客户端检查证书是否由受信任的CA签发、是否过期、域名是否匹配当前访问的网站。如果验证失败,浏览器通常会警告用户。
生成预主密钥: 客户端生成一个随机数,称为预主密钥(Pre-Master Secret)。
加密并发送预主密钥: 客户端使用从证书中获取的服务器公钥,将预主密钥加密后发送给服务器。由于只有服务器的私钥才能解密,这就保证了预主密钥的传输是安全的。

客户端发送结束(Client Key Exchange):

客户端发送一个“Client Key Exchange”消息,内容就是刚才加密发送的预主密钥(加密形式)。
客户端还可能发送其他消息,如证书请求(如果需要客户端认证)、扩展消息等。

服务器解密预主密钥:

服务器使用自己的私钥解密收到的预主密钥。

双方计算主密钥(Master Secret):

关键步骤! 客户端和服务器现在都拥有了三个随机数:ClientRandom、ServerRandom和Pre-Master Secret。
双方使用预先商定的密钥派生函数(如伪随机函数PRF),将这些随机数作为输入,计算出相同的主密钥(Master Secret)。这个主密钥是后续加密通信的基础。

客户端发送完成消息(Change Cipher Spec):

客户端通知服务器,后续所有的通信都将使用协商好的加密算法和主密钥进行加密。

客户端发送 Finished 消息:

客户端发送一个加密的“Finished”消息,这个消息是之前所有握手消息的哈希值(用主密钥加密)。服务器可以解密并验证这个哈希值,以确认握手过程没有被篡改,并且客户端确实拥有主密钥。

服务器发送完成消息(Change Cipher Spec):

服务器通知客户端,后续所有的通信都将使用协商好的加密算法和主密钥进行加密。

服务器发送 Finished 消息:

服务器发送一个加密的“Finished”消息,内容是之前所有服务器端握手消息的哈希值(用主密钥加密)。客户端可以解密并验证这个哈希值。
一旦双方都成功验证了对方的Finished消息,握手阶段就结束了。 此时,一个安全的通信通道已经建立。

阶段二:加密数据传输

握手完成后,客户端和服务器使用在握手阶段协商好的对称加密算法和主密钥(或从主密钥派生出的会话密钥)来加密和解密所有传输的数据(如HTML页面、图片、表单提交等)。对称加密因为加解密速度快,适合大量数据的传输。

HTTPS加密的关键技术点:

非对称加密(公钥加密):

用于SSL/TLS握手阶段,安全地交换对称密钥(主密钥)。客户端用服务器的公钥加密数据,只有服务器用私钥才能解密。

对称加密(私钥加密):

用于加密实际传输的大量数据。加解密速度快,但密钥分发是个问题(这就是为什么需要非对称加密来交换对称密钥)。

哈希函数(消息摘要):

用于生成数据的固定长度摘要(指纹)。即使数据有微小变化,摘要也会完全不同。在握手过程中用于验证消息的完整性(Finished消息)。

数字证书:

由可信的第三方(CA)颁发,绑定服务器的公钥和身份信息(域名)。客户端通过验证证书来确认服务器的身份,防止中间人攻击。

证书颁发机构(CA):

操作系统、浏览器等预装了众多CA的根证书。客户端通过信任这些根证书来验证网站证书的合法性。


HTTPS的优势总结:

数据保密性: 加密传输,防止窃听。

数据完整性: 通过哈希校验,防止数据被篡改。

身份认证: 通过证书验证,确认网站的真实身份,防止钓鱼。

提升搜索引擎排名: Google等搜索引擎优先推荐使用HTTPS的网站。

增强用户信任: 浏览器地址栏显示安全锁标志,让用户更放心。


HTTPS的挑战:

性能开销: 加密/解密需要计算资源,相比HTTP稍慢(但现代硬件和优化算法已大大缓解)。

证书成本和管理: 获取、部署、更新和管理证书需要成本和操作(虽然现在有许多免费证书方案如Let’s Encrypt)。

配置复杂性: 服务器需要正确配置SSL/TLS。

总结:

       

         HTTPS通过结合非对称加密、对称加密、哈希函数和数字证书等技术,在HTTP的基础上构建了一个安全的通信层。它通过复杂的SSL/TLS握手过程建立安全的通道,然后使用高效的对称加密传输数据,从而有效保护了用户与网站之间的通信安全,是现代互联网不可或缺的基础设施。

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

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

相关文章

【freertos-kernel】stream_buffer

文章目录 补充任务通知发送处理ulTaskGenericNotifyTakexTaskGenericNotifyWait 清除xTaskGenericNotifyStateClearulTaskGenericNotifyValueClear 结构体StreamBufferHandle_tStreamBufferCallbackFunction_t 创建xStreamBufferGenericCreatestream buffer的类型 删除vStreamB…

在word中点击zotero Add/Edit Citation没有反应的解决办法

重新安装了word插件 1.关掉word 2.进入Zotero左上角编辑-引用 3.往下滑找到Microsoft Word,点重新安装加载项

新华三H3CNE网络工程师认证—Easy IP

Easy IP 就是“用路由器自己的公网IP,给全家所有设备当共享门牌号”的技术!(省掉额外公网IP,省钱又省配置!) 生活场景对比,想象你住在一个小区:普通动态NAT:物业申请了 …

算法打开13天

41.前 K 个高频元素 (力扣347题) 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2: 输入: nums [1], k 1 输出: …

LabVIEW与PLC液压泵测控系统

针对液压泵性能测试场景,采用LabVIEW与西门子 PLC 控制系统,构建高精度、高可靠性的智能测控系统。通过选用西门子 PLC、NI 数据采集卡、施耐德变频电机等,结合LabVIEW 强大的数据处理与界面开发能力,实现液压泵压力、流量、转速等…

应急响应靶机-web2-知攻善防实验室

题目: 前景需要:小李在某单位驻场值守,深夜12点,甲方已经回家了,小李刚偷偷摸鱼后,发现安全设备有告警,于是立刻停掉了机器开始排查。 这是他的服务器系统,请你找出以下内容&#…

Python制作史莱姆桌面宠物!可爱的

史莱姆桌面宠物 一个可爱的桌面史莱姆宠物,它会在您的任务栏上移动并提供可视化设置界面。 这里写目录标题 史莱姆桌面宠物功能特点安装与运行直接运行方式创建可执行文件 使用说明自定义GIF说明打包说明开源地址 功能特点 可爱的史莱姆在任务栏上自动移动支持…

vue3 自动导入自己的js文件中的函数

vue3 自动导入自己的js文件中的函数 vite.config.js import AutoImport from unplugin-auto-import/viteexport default defineConfig({resolve: {alias: {: fileURLToPath(new URL(./src, import.meta.url))}},plugins: [vue(),AutoImport({imports: [vue, vue-router, pini…

Mobile App UI自动化locator

在开展mobile app UI层自动化测试时,编写目标元素的locator是比较耗时的一个环节,弄清楚locator背后的逻辑,可以有效降低UI层测试维护成本。此篇博客以webdriverioappium作为UI自动化工具为例子,看看有哪些selector方法&#xff0…

44、web实验-后台管理系统基本功能

44、web实验-后台管理系统基本功能 “44、web实验-后台管理系统基本功能”通常指的是在Web开发学习过程中,关于构建后台管理系统的实践环节,主要涉及实现一个具备基本功能的后台管理系统。以下是该实验的主要内容: #### 实验目标 - 掌握后台管…

【Flask】:轻量级Python Web框架详解

什么是Flask? Flask是一个用Python编写的轻量级Web应用框架。它被称为"微框架"(microframework),因为它核心简单但可扩展性强,不强制使用特定的项目结构或库。Flask由Armin Ronacher开发,基于Werkzeug WSGI工具包和Jin…

MAC电脑怎么通过触摸屏打开右键

在Mac电脑上,通过触摸屏打开右键菜单的方法如下: 法1:双指轻点:在触控板上同时用两根手指轻点,即可触发右键菜单。这是Mac上常用的右键操作方法。 法2:自定义触控板角落:可以设置触控板的右下角或左下角作为右键区域…

AI炼丹日志-26 - crawl4ai 专为 AI 打造的爬虫爬取库 上手指南

点一下关注吧!!!非常感谢!!持续更新!!! Java篇: MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 大数据篇 300: Hadoop&…

java32

1.反射 获取类: 获取构造方法: 获取权限修饰符: 获取参数信息: 利用反射出来的构造器来创建对象: 获取成员变量: 获取成员方法: 综合练习: 动态代理:

OpenStack组件:放置服务(Placement)安装

OpenEuler的安装_openeuler5.1.0-249-CSDN博客 OpenStack云计算平台基础环境准备_openstack基础环境配置-CSDN博客 OpenStack组件:镜像服务(Glance)安装-CSDN博客 OpenStack组件:认证服务(Keystone)安装…

整合swagger,以及Knife4j优化界面

因为是前后端项目&#xff0c;需要前端的参与&#xff0c;所以一个好看的接口文档非常的重要 1、引入依赖 美化插件其中自带swagger的依赖了 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter&…

STM32——CAN总线

STM32——CAN总线 1. CAN总线基础概念 1.1 CAN总线简介 控制器局域网&#xff08;Controller Area Network, CAN&#xff09;是由Bosch公司开发的串行通信协议&#xff0c;专为汽车电子和工业控制设计&#xff0c;具有以下核心特性&#xff1a; 多主控制架构&#xff1a;所有…

什么是数据倾斜?如何优化?

什么是数据倾斜?如何优化? 一、数据倾斜的定义与表现 数据倾斜是指在大规模数据处理系统中,数据分布严重不均匀的现象,导致某些计算节点负载远高于其他节点。这种现象在分布式计算框架(如Hadoop、Spark)和分布式数据库(如Hive、HBase)中尤为常见。 关键特征:少数节点…

大模型数据流处理实战:Vue+NDJSON的Markdown安全渲染架构

在Vue中使用HTTP流接收大模型NDJSON数据并安全渲染 在构建现代Web应用时&#xff0c;处理大模型返回的流式数据并安全地渲染到页面是一个常见需求。本文将介绍如何在Vue应用中通过普通HTTP流接收NDJSON格式的大模型响应&#xff0c;使用marked、highlight.js和DOMPurify等库进…

第11期_网站搭建_极简云 单码网络验证修复版本 虚拟主机搭建笔记

系统搭建环境 1、Nginx 最佳 2、php 7.2 3、MySql 5.6 后台地址 域名/admin 后台账号 admin 密码 123456 我使用宝塔面板的后门校验&#xff0c;没有发现有后门的现象&#xff0c;使用的话&#xff0c;建议再次核查一下。也希望各位 有能力的也核查一下。 夸克网盘下载地址&…