【网络编程】HTTPS协议详解

引言

HTTPS是HTTP协议的安全版本,通过使用SSL(安全套接层)或TLS(传输层安全)协议加密通信,为数据传输提供了保密性、完整性和身份认证。与传统的HTTP相比,HTTPS能够防止敏感信息被窃取、篡改和劫持,为用户和网站提供了更安全可靠的通信方式。

常见的加密方式

对称加密:只有一个秘钥,加密和解密所用密匙是相同的。特点:算法公开,计算量小,加密速度快效率高
非对称加密:有两个秘钥(公钥和私钥),用公钥加密只有持有私钥的接受者才能解密,反之亦可。特点:算法复杂,加密速度慢,但是秘钥的分发的管理比较容易。

对称和非对称加密进行通信

在这里插入图片描述
如上图所示,看上去似乎没问题,但其实一开始服务端向客户端发送S(秘钥协商时)就已经被中间人劫持。如下图
在这里插入图片描述

非对称+对称+证书

证书

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

证书持有人信息:证书中包含了证书持有人的身份信息,如姓名、电子邮件地址、组织名称等。这些信息用于确保证书的有效性和唯一性。
证书持有人的公钥:证书中包含了证书持有人的公钥。公钥是加密通信中的重要组成部分,用于加密数据和验证签名。
证书颁发机构信息:证书中包含了颁发该证书的证书颁发机构的信息,如名称、网址等。这些信息用于验证证书颁发机构的可信度和信任链。
证书序列号:证书中包含了唯一的证书序列号,用于标识该证书的唯一性。
证书的有效期限:证书中包含了证书的有效期限,即该证书的使用期限。过期的证书将不再被信任和接受。
数字签名:证书中包含了由证书颁发机构使用其私钥对证书内容进行加密生成的数字签名。数字签名用于验证证书的完整性和真实性。

通信过程

1.客户端请求:客户端发起HTTPS请求,连接到服务器。
2.证书解析:服务器响应并发送其数字证书给客户端。
3.CA证书验证:客户端使用内置的根证书或中间证书对服务器的证书进行验证。
4.验证签名:客户端使用CA的公钥解密服务器证书中的数字签名,得到数据摘要,并与服务器公钥加密的数据摘要进行对比,以验证证书的真实性。
5.证书链验证:如果证书是由中间CA颁发,客户端还需验证中间CA的合法性。
6.证书有效期验证:客户端检查证书是否在有效期内。
7.身份和安全性确认:一旦证书验证成功,客户端确认服务器的身份,使用证书中的公钥加密一个随机生成的对称密钥,并将其发送给服务器。
8.服务器解密对称密钥:服务器使用自己的私钥解密得到对称密钥。
9. 后续通信使用对称加密:客户端和服务器使用该对称密钥加密后续的所有通信数据

数字签名

数字签名是一种用于验证电子文档或数据完整性和真实性的技术手段。它类似于传统纸质文件的签名,在数字领域提供了身份认证、数据完整性保护和防止抵赖等功能。

数字签名的基本原理如下:

私钥和公钥:数字签名使用非对称加密算法。签名者拥有一对密钥,其中一个是私钥,用于生成数字签名;另一个是公钥,用于验证签名。

数据摘要:签名者首先对原始数据(例如文件或信息)进行哈希计算,生成唯一的数据摘要(也称为消息摘要或哈希值)。数据摘要的作用是将数据压缩成固定长度的字符串,具备唯一性和不可逆性。

数字签名生成:签名者使用私钥对数据摘要进行加密操作,生成数字签名。只有使用相应公钥可以验证数字签名的合法性。

数字签名验证:接收者获取到原始数据、数字签名和签名者的公钥。接收者使用签名者的公钥(CA公钥是公开的)对数字签名进行解密操作,得到解密后的数据摘要。然后,接收者对原始数据进行同样的哈希计算,生成新的数据摘要。最后将两个数据摘要进行比较,如果相同,则说明数据完整且未被篡改,数字签名有效。

中间人能篡改证书吗?

中间人理论上不能篡改证书,因为他们没有CA的私钥来重新生成匹配的数字签名。即使篡改了证书的明文,客户端在验证签名时会发现不一致,从而拒绝该证书。

总结

HTTPS工作过程中涉及到的秘钥有三组:
1.非对称加密(CA):用于检验证书是否被篡改,服务器持有(证书的)私钥(在形成CSR文件申请证书时获得),客户端持有公钥(操作系统包含了可信任的CA机构有哪些,同时持有对应的公钥)。服务器在客户端请求时返回携带签名的证书,客户端通过这个公钥进行证书验证,保证证书的合法性。
2.非对称加密(协商生成对称秘钥):客户端用收到的CA证书中的公钥(是被信任的)给随机生成的对称秘钥加密,传输给服务器,服务器通过私钥解密获取到对称加密秘钥。
3.对称加密(数据传输)

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

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

相关文章

【HTTP下】总结{重定向/cookie/setsockopt/流操作/访问网页/总结}

文章目录 1.请求头2.cookie理解 3.vim跳转/搜索4.setsockopt被重用的意思 5.流操作5.1定位读取指针5.2ifstram::read() 6.总结6.1 百度搜索框搜索功能字符6.2请求uri请求和响应的第一行都有http版本请求内容里有GET /favicon.ico HTTP/1.1 6.3访问网页Fiddler抓包原理&#xff…

树莓派4b测量PM2.5

1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…

上传文件客户端签名直传

上传文件的客户端签名直传是一种常用的将文件直接上传到云存储服务如Amazon S3、阿里云OSS等云服务上的技术手段。这种方法通常用于减轻服务器负担,并提高上传效率。 以下是实现客户端签名直传的基本步骤: 1. 客户端请求上传权限 客户端(如…

加速数据要素流通,“隐语杯”全国高校隐私计算大赛正式启动报名!

当前,我国数字经济正处在一个快速增长的阶段,数据要素逐渐成为促进社会经济繁荣的关键驱动力。随着国家对数据治理及隐私保护政策的不断完善,隐私计算技术的创新和实践应用变得愈发重要。面对数据安全与隐私保护的双重挑战,如何实…

高性价比开放式耳机有哪些?五大好评热卖开放式耳机推荐

近年来,开放式耳机凭借其独特的开放式声学设计,给用户带来了动态空间的音质享受。在佩戴等方面也带来了一定的舒适度。然而,面对满目的耳机品牌,新手小白往往会不知道如何挑选。那如何选择一款适合自己的产品呢?我整理…

了解如何有效地利用 Swagger UI

在讨论程序员职业生涯中的一些琐碎但必须的任务时,众所周知,编写和维护文档是他们最不喜欢的活动之一。程序员普遍不愿意编写注释和文档,同时又对那些没有留下适当文档的同事感到失望。这种矛盾主要是因为文档管理是一个繁琐的过程&#xff0…

Yolov8-pose关键点检测:卷积魔改 | 变形条状卷积,魔改DCNv3二次创新

💡💡💡本文独家改进: 变形条状卷积,DCNv3改进版本,小幅涨点的前提下相比较DCNv3大幅度运算速度 💡💡💡强烈推荐:先到先得,paper级创新,直接使用; 💡💡💡创新点:1)去掉DCNv3中的Mask;2)空间域上的双线性插值转改为轴上的线性插值; 💡💡💡如…

计算机毕业设计 | springboot+vue凌云在线阅读平台 线上读书系统(附源码)

1,绪论 随着社会和网络技术的发展,网络小说成为人们茶钱饭后的休闲方式,但是现在很多网络小说的网站都是收费的,高额的收费制度是很多人接受不了的,另外就是很多小说网站都会有大量的弹窗和广告,这极大的影…

代码随想录第四十七天|打家劫舍、打家劫舍Ⅱ、打家劫舍Ⅲ

题目链接:. - 力扣(LeetCode) 代码如下: 打家劫舍问题需要注意相邻房子不能偷,因此在偷与不偷的选择上可以归类为: 偷当前(i)的房子,则子问题变为前i-2个房子的偷取金额…

探秘编程之旅:Baidu Comate 智能代码助手的魔法揭秘

目录 Baidu Comate智能代码助手1.场景需求2.安装步骤3.功能介绍3.1 /指令3.2 插件3.3 #知识 4.使用体验5.总结 Baidu Comate智能代码助手 智能编程助手的意义在于提升编程体验和效率,使开发人员能够更轻松、更快速地完成编码任务,是如今人工智能技术的一…

yaml配置文件的在深度学习中的简单应用

1 .创作灵感 小伙伴们再阅读深度学习模型的代码的时候,经常会遇到yaml格式的配置文件。用这个配置文件是因为我们在训练模型的时候会涉及很多的参数,如果这些参数东一个,西一个,我们调起来的时候就会很不方便,所以用y…

数字电商人才孵化基地授牌仪式在天府锋巢直播产业基地隆重举行!

2024年4月25日,数字电商人才孵化基地授牌仪式在天府锋巢直播产业基地隆重举行。此次仪式不仅标志着德商锋巢与天府新区信息技术职业学院的紧密合作正式启动,更意味着双方在数字电商领域的人才培养和产业发展上迈出了坚实的步伐。 仪式现场,德…

WiFine通信与Wi-sun通信对比

调制速率 WiFine通信:(G)FSK 50Kbps~500Kbps ;LoRa 5Kbps~37.5Kbps Wi-Sun通信:(G)FSK 50Kbps~300Kbps ;QPSK/OFDM 计划中… 2、协议简介 WiFine通信:为低成本、低功耗、移动设备倾力打造 的轻量级、分布式无线移动…

初始C++(二)

前言: C相对于C语言还有很多区别,接下来我们继续介绍 函数重载: 很好理解,就是Java中的函数重载。C加了函数的修饰,通过函数修饰规则去找。C语言是直接通过函数名查找,C是通过修饰后的函数名去查找。 引用…

Java 运行的底层原理

Java是一种跨平台的编程语言,其底层原理涉及到了多个方面,包括Java虚拟机(JVM)、字节码、类加载机制、垃圾回收器等。让我们逐一深入了解Java运行的底层原理。 1. Java虚拟机(JVM) Java虚拟机是Java程序运…

Python进行excel处理-01

最近干采购,每个月要对供应商的对账单,对对应的采购订单号和物料编号的价格和数量,是不是和物料管控总表里面的价格数量是不是一致,于是写了一个代码。 从总表里面找到,对账单里对应采购订单和物料编码的数据&#xf…

5W 1.5KVDC 隔离 宽电压输入 DC/DC 电源模块——TP05DB 系列

TP05DB系列电源模块额定输出功率为5W,应用于2:1及4:1电压输入范围 4.5V-9V、9V-18V、18V-36V、36V-72V、9V-36V和18V-72V,40-160VDC的输入电压环境,输出电压精度可达1%,具有输出过流保护等功能。可广泛应用于通信、铁路、自动化以…

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台 SpringBoot 社区智慧养老监护管理平台 功能介绍 登录注册 个人中心 修改密码 个人信息 房间信息管理 房间入住信息管理 反馈信息管理 留言管理 老人信息管理 公告管理 物资申请管理 管理员管理 护工管理 体检员管理…

[C++][数据结构]AVL树插入的模拟实现

前言 紧接着上一篇文章,我们来模拟实现一下set的底层结构 引入 对于BSTree,虽然可以缩短查找的效率,但如果数据有序它将退化为单支树 我们可以用AVL树来解决这个问题。 概念 AVL树: 它的每个结点的左右子树高度之差的绝对值…

Tuxera NTFS for Mac Mac用户无缝地读写NTFS格式的硬盘和U盘

在数字化时代,数据交换和共享变得日益重要。然而,对于Mac用户来说,与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac OS默认不支持Windows常用的NTFS文件系统。幸运的是,Tuxera NTFS for Mac为我们提供了一个优雅的解…