HTTPS 原理技术

HTTPS原理技术

  • 背景
  • 简介
  • 原理
  • 总结

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

HTTPS 中的 SSecure 的缩写,是在 HTTP 基础上增加了一个安全层,通过加密等手段保证传输数据安全。

早期 HTTPS 使用 SSL(Secure Socket Layer,安全套接字层) 协议,从 SSL 3.1 开始 IETF 将其标准化并重命名为 TLS(Transport Layer Security,传输层安全),目前最新的 TLS 版本是 2018 年发表的 TLS 1.3,但应用最为广泛的是 2008 年发表的 TLS 1.2。

因此 HTTPS = HTTP + SSL/TLS

原理

下面通过实际场景逐步说明 HTTPS 的原理。

  1. HTTP 通信过程中,所有的消息(message)都是明文传输,一旦遇到非法中间人(如黑客)监听拦截,便可获取所有的传输消息并进行伪造,如下图所示。
    HTTP明文传输

  2. 为解决传输数据安全的问题,通信的双方决定采用 对称加密 技术对消息进行加密,这样中间人最多只能获取加密后的密文,没有密钥的话不能伪造任何消息,伪造的消息到达消息接收方后无法被正确解密。
    HTTP对称加密
    此方案仍然存在两个问题:
    ① 使用相同密钥的情况下,如果通信存在多方,那么所有的通信消息都使用相同的密钥加解密,因此通信相当于是透明的,中间人可以伪装成一个合法的通信方,拿到密钥后便可获取所有的通信消息。
    ② 使用相同密钥的情况下,密钥只能在通信的一方生成,如何传递给通信的另一方,如何解决密钥传递过程的安全问题?

  3. 解决以上两个问题的关键是:
    ① 通信双方必须使用独立且唯一的密钥对通信消息进行加解密,这个密钥只有这两者知道,不能透露给任何第三方。
    ② 密钥必须以加密方式进行传递。
    因此通信的双方决定先采用 非对称加密 技术生成一个密钥对,然后拥有公钥的一方生成一个随机密钥,通过公钥加密后将此密钥发给另一方,另一方使用私钥解密后拿到相同的随机密钥,后续的通信过程就使用此随机密钥进行消息加解密,如下图所示。
    HTTP非对称加密
    此方案仍然存在问题:拿到公钥的 A 怎么能确保公钥的合法性?中间人完全可以先伪装成 A 拿到来自 B 的公钥 KEY1,然后生成自己的密钥对,将自己生成的公钥 KEY2 伪装成合法的公钥发送给 A,后续通信过程中 A 会使用拿到的公钥 KEY2 对消息进行加密并发送,中间人截取到后使用自己的私钥解密获取通信消息原文,然后伪造通信消息并使用合法公钥 KEY1 进行加密后发送给 B。

  4. 为解决公钥信任问题,引入了数字证书技术,以下便是 HTTPS 原理示意图。
    HTTPS原理
    实现 HTTPS 的整个过程分为三大阶段:

    • [A] 客户端内置 CA 公钥,以浏览器为例,各大浏览器厂商在发行版本中已内置 CA 相关数据;
    • [B] 向 CA 机构申请数字证书,并将证书部署到服务器;
    • [C] HTTPS 作用过程简述:
      • [C-1] 客户端发起 HTTPS 请求;
      • [C-2] 服务器把数字证书返回给客户端;
      • [C-3] 客户端校验数字证书合法后,从中取出服务器公钥,并生成一个随机码,用公钥对随机码进行加密;
      • [C-4] 客户端将公钥加密后的随机码发送给服务器;
      • [C-5] 服务器使用私钥解密得到随机码;
      • [C-6] 客户端和服务器根据双方之前通信交换的信息(包括随机码)生成同样的密钥,后续使用此密钥对通信信息进行对称加密。

总结

本文聚焦对 HTTPS 原理的说明,对于 HTTPS 使用到的对称加密、非对称加密、数字证书、数字签名等技术及 SSL/TLS 等协议将在后续文章中做出更加详细的说明。

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

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

相关文章

Element-ui使用上传时弹框选择文件类型

实现效果 1,点击上传,上传文件; 2,选择文件; 3,弹框选择文件类型; 4,选择类型后确定上传; 一,上传 跳过; 二,定义弹框下拉框…

Coolmuster Android Assistant: 手机数据管理的全能助手

在数字化时代,智能手机不仅是通讯工具,更是个人数据的中心。随着数据量的不断增加,如何有效管理和保护这些数据成为了一个重要议题。Coolmuster Android Assistant应运而生,它是一款专为安卓用户设计的综合数据管理软件&#xff0…

EXCEL数据透视图中的日期字段,怎样自动分出年、季度、月的功能?

在excel里,这个果然是有个设置的地方,修改后就好了。 点击文件选项卡,选项,在高级里,将图示选项的勾选给取消,然后再创建数据透视表或透视图,日期就不会自动组合了: 这个选项只对新…

Ubuntu22.04之解决:忘记登录密码(二百三十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

gpt-4o api申请开发部署应用:一篇全面的指南

利用 GPT-4o API 开发创新应用:一篇全面的指南 OpenAI 的 GPT-4o 是一款集成了音频、视觉和文本处理能力的多模态人工智能模型,它的出现代表了人工智能领域的重大进步。在本篇文章中,我们将详细介绍如何通过 OpenAI API 使用 GPT-4o&#xf…

html中 table的 colspan和rowspan

Colspan 单元格跨越多列; Rowspan 单元格跨越多行 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body><h4>单元格跨两列:</h4> <table border"1"&…

云动态摘要 2024-05-31

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [1.5折起]年中盛惠--AI分会场 腾讯云 2024-05-30 人脸核身、语音识别、文字识别、数智人、腾讯混元等热门AI产品特惠&#xff0c;1.5折起 云服务器ECS试用产品续用 阿里云 2024-04-14 云…

鸿蒙开发接口媒体:【@ohos.multimedia.medialibrary (媒体库管理)】

媒体库管理 说明&#xff1a; 该组件从API Version 6开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入模块 …

2.4 Docker部署JDK

2.4 Docker部署JDK jdk17部署&#xff08;自定义镜像&#xff09; 1.在官网上下载jdk-17_linux-x64_bin.tar.gz&#xff0c;并安装到/usr/local目录下 cd /usr/local2.创建Dockerfile vim Dockerfile# 基于官方的Ubuntu 20.04镜像作为基础镜像 FROM ubuntu:20.04# 设置环境…

【python深度学习】——大型工程项目管理以及互相导入

【python深度学习】——大型工程项目管理以及互相导入 1. 工程项目中常见的文件组织形式2. python中的“包”、“模块”、与__init__.py2.1 概念理解2.2 \__init__py的使用3. 包的导入——相对导入与绝对导入3.1 相对导入3.1.1 相对导入的语法3.1.2 相对导入的使用注意事项与常…

二维数组传参时不用二级指针接收

先放结论&#xff1a; 1. 二维数组数组名指向的类型是 int [x] 类型&#xff0c;int** 指针指向类型是 int* &#xff0c;如果用二级指针接收会导致访问错误&#xff0c;因为 int [x] 类型和 int* 类型不同。 2. 指向什么类型的指针1就按照该类型的字节数1移动。 最近在学…

初识java——javaSE(8)异常

文章目录 一 异常的概念与体系结构1.1 什么是异常&#xff1f;1.2 异常的体系结构&#xff01;1.3 编译时异常与运行时异常与Error编译时异常&#xff1a;异常声明&#xff1a;throws关键字 运行时异常&#xff1a;什么是Error? 二 处理异常2.1 异常的抛出&#xff1a;throw(注…

5.23R语言-参数假设检验

理论 方差分析&#xff08;ANOVA, Analysis of Variance&#xff09;是统计学中用来比较多个样本均值之间差异的一种方法。它通过将总变异分解为不同来源的变异来检测因子对响应变量的影响。方差分析广泛应用于实验设计、质量控制、医学研究等领域。 方差分析的基本模型 方差…

重庆人文科技学院建立“软件安全产学研基地”,推动西南地区软件安全发展

5月29日&#xff0c;重庆人文科技学院与开源网安签订了《产学研校企合作协议》&#xff0c;并举行了“重庆人文科技学院产学研基地”授牌仪式&#xff0c;此次合作不仅深化了双方在软件安全领域的产学研紧密联结&#xff0c;更是对川渝乃至西南地区软件供应链安全发展起到重要的…

AI免费插件 批量条码大师,支持100多种条码类型

没想到在网上看到一款和之前 悟空条码 类似的条码插件&#xff0c;叫批量条码大师&#xff0c;他做的比 悟空条码 功能更强&#xff0c;界面更美观&#xff0c;特分享出来给大家。 本插件采用了BWIPJS条码库&#xff0c;支持110种条码、二维码的生成; 支持批量生成&#xff0c;…

爱堡集团数智掘金—共绘上市蓝图

&#xff08;本台记者报&#xff09;2024年5月26日爱堡集团在浙江省杭州市上城区瑞莱克斯大酒店隆重召开规模达500人的盛会。这场聚焦智慧与创新的会议&#xff0c;旨在加速爱堡集团的数智化转型进程&#xff0c;并为其上市之路绘制蓝图&#xff0c;吸引了众多行业领袖和媒体的…

Qt 插件机制使用及原理

目录 1.引言 2.插件原理 3.插件实现 3.1.定义一个接口集(只有纯虚函数的类) 3.2.实现接口 4.插件的加载 4.1.静态插件 4.1.1.静态插件实现方式 4.1.2.静态插件加载的过程 4.1.3.示例 4.2.动态插件 4.2.1.动态插件的加载过程 5.定位插件 6.插件开发的优势 7.总结…

GPT-4o有点坑

GPT-4o有点坑 0. 前言1. GPT-4o简介2. GPT-4o带来的好处2.1 可以上传图片和文件2.2 更丰富的功能以及插件 3. "坑"的地方3.1 使用时间短3.2 GPT-4o变懒了 4. 总结 0. 前言 原本不想对GPT-4o的内容来进行评论的&#xff0c;但是看了相关的评论一直在说&#xff1a;技…

Ai晚班车531

1.中央网信办等三部门&#xff1a;加快推进大模型、生成式人工智能标准研制。 2.中国石油与中国移动、华为、科大讯飞签署合作协议。 3.Opera浏览器与谷歌云合作&#xff0c;接入 Gemini 大模型。 4.谷歌 Gemini 加持Chromebook Plus。 5.英飞凌&#xff1a;开发 8kW和12kW…

改进YOLOv8系列:构建新型单头transformer模块,加入到骨干尾部

改进YOLOv8系列:构建新型单头transformer模块,加入到骨干尾部 需要修改的代码self attention代码创建yaml文件测试是否创建成功本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方式,在本文中具有完整的代码和包含多种更有效加入YOLOv8中的yaml结构,读者…