【网络世界】HTTPS协议

news2024/11/16 2:21:31

目录

🌈前言🌈

📁 HTTP缺陷

📁 HTTPS

 📂 概念

 📂 加密

 📂 加密方式

📁 中间人攻击

📁 CA机构和证书

 📂 数据摘要(数据指纹)

 📂 数字签名

 📂  CA机构和证书

📁 完整工作流程

📁 总结


🌈前言🌈

        本期【网络世界】将介绍应用层协议HTTPS的理论知识,通过了解HTTP缺陷,引入HTTPS是如何解决,以及在解决过程中遇到的问题,如何解决这些问题的。其中不乏一些有趣的知识,例如中间人攻击等。

        如果你对HTTP协议还不是很了解,或者遗忘部分,可以通过下面这篇博文来快速阅览学习:

【网络世界】HTTP协议-CSDN博客

📁 HTTP缺陷

        HTTP协议作为互联网上应用最为广泛的一种协议,用于将服务器的超文本数据传输到客户端。然而,HTTP协议缺乏一些安全机制,这就会被有心之人利用。        

        1. 通信内容不加密,存在窃听的风险。

        2. 无法验证数据的完整性。

        3. 不验证用户身份,存在伪装风险。

        4. 缺乏会话管理和状态保持机制。

        针对第四条,我们在HTTP学习过程中知道,通过HTTP Cookie 和 Session技术解决。但是前面三条,单纯使用HTTP是无法解决的。

        因此,就引入了HTTPS协议,简单理解就是在HTTP协议上加入了一个对数据进行加密的过程,两台主机协商对数据如何加密,如何解密,确保传输过程中,不会有人对数据有所更改。

📁 HTTPS

 📂 概念

        HTTPS(安全超文本传输协议),是一个用于计算机网络上进行安全通信的传输协议。基于HTTP协议进行开发,通过引入SSL(安全套接层)和TSL(安全传输层)来加密客户端和服务器之间的通信数据。

        HTTPS协议的特点:加密通信;身份认证;端口采用443(HTTP采用80);

 📂 加密

        HTTP协议中传输的都是明文,为了保护数据不被篡改,因此需要加密技术来保护。

        例如,谍战影片里面的密码本,我们传达信息时,只有通过母本,才能知道对方想要表达或想要对方表达的信息。

        因此,我们有了简单的理解,加密就是将明文(要传输的数据)进行一系列转换,变成密文。解密就是将密文在通过一些列转换,还原成明文。

        在加密和解密过程中,需要一个或多个中间的数据进行辅助,这个中间数据就叫做密钥

 📂 加密方式

对称加密

        采用单钥密码系统的加密方式,同一个密钥可以用作数据的加密和解密过程。

        特征:数据加密和解密的的密钥是相同的。

        特点:算法公开,计算量小,加密速度快,加密效率不高。

一个很简单的对称加密,按位异或

假设 明文a = 1234 ,秘钥key = 8888

则加密数据 a ^ key,得到密文 b = 9834

接收端针对密文9384再次异或,得到原来的明文1234

非对称加密

        需要两个密钥来进行加密和解密,一个是公开密钥(公钥),另一个是私有密钥(私钥)。

        特点:算法强度复杂,安全性依赖于算法与密钥。但是算法复杂,导致加密解密速度比对称加密慢。

        公约和私钥是配对的,可以通过公钥加密,私钥解密;也可以私钥加密,公钥解密。

        公钥加密,私钥解密:只有少数人能解密。

        私钥加密,公钥解密:只有少数人能加密。

        A 要给 B 一些重要的文件, 但是 B 可能不在。

         于是 A 和 B 提前做出约定: B 说: 我桌子上有个盒子,然后我给你一把锁, 你把文件放盒子里用锁锁上, 然后我回头拿着钥匙来开锁取文件。

        在这个场景中, 这把锁就相当于公钥, 钥匙就是私钥. 公钥给谁都行(不怕泄露), 但是 私钥只有 B 自己持有. 持有私钥的人才能解密.

📁 中间人攻击

        学习了两种加密技术,HTTPS是不是就是采用了其中的一种技术呢?单纯采用一种方法,都容易遭到中间人攻击,那么什么是中间人攻击?

        中间人攻击(MIMT)指的是攻击者利用技术手段,插入自己在通信的两个端点间,欺骗双方,使他们误以为他们直接通信。

        这里就不在给出单纯使用对称加密方式的图了,原理都是一样的,通信双方在实际通信之前要进行加密协商传递一个密钥,来确保双方能使用这个密钥来进行加密解密。

        此外,单纯使用非对称加密还有一个劣势就是加密解密速度慢,因此,我们就可以知道不能单纯使用对称加密方式 或 非对称加密方式。

        那么对称加密和非对称加密方式混合使用呢?是不是可以解决问题。

        上图,细心的人可能看出,不对呀,返回公钥S途中,中间人发起来攻击,劫持了公钥S,再拿公钥S截获密钥key,之后通信双方的数据还是能被篡改。

        我们可以看出,不管是那种方式,都能被中间人攻击。

        我们从攻方的角度来看,我们可以看出,通信双方没有将要加密解密的密钥加密呀,所以我可以拿到这个密钥,来进行加密解密。

        因此,我们防守就需要修补这个漏洞,即将传送的密钥进行保护,确保通信双方能识别出这个数据有没有被修改。

📁 CA机构和证书

 📂 数据摘要(数据指纹)

        通过单项散列函数(Hash函数)来得到一个字符串,通过对比字符串,来判断数据是否被修改。数据摘要确保修改后的数据再次进行摘要时,得到的字符串与之前的字符串相差很大。

        注意的是,数据摘要是用来判断数据是否被修改,而不是用来加密数据的。

        例如我们对数据data进行摘要,将摘要放在数据的头部,此后,通信双方就取出摘要,然后通过相同的Hash函数再次对数据进行摘要,对比两个摘要是否一样,如果不一样,就判断数据被修改,丢弃该报文。

 📂 数字签名

        对数据摘要进行加密,得到的就是数子签名。

 📂  CA机构和证书

        CA机构(Certificate Authority,证书颁发机构)是一种信任第三方实体,它负责验证和签发数字证书。数字证书是用于在Internet上验证通信方身份的一种机制,通常被用于加密通信和确保数据完整性。

        只有CA机构才能进行数字签名,办法证书(带数字签名的服务器信息)。CA机构有一对公钥和私钥,CA机构对申请者的信息进行签名,来确保申请者身份的合法性。

服务器端:

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

客户端:

        • 当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).

        • 判定证书的有效期是否过期

        • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).

        • 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一 个 hash 值(称为数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对 比 hash1 和 hash2 是否相等. 如果相等, 则说明证书是没有被篡改过的。

        这里有人问了?为什么一个证书就能就觉问题了。我们看一下证书的细节

        CA机构采用私钥加密,公钥解密,即只有CA机构才能加密,其他人只能解密。

        这次我们在站在攻方的角度,尝试去修改。

        (1). 修改数据:你不是公钥解密嘛,我也可以拿到你的公钥,我解密得出你的数据,进行修改。发送给客户端。客户端拿到证书,用CA机构的公钥解密数据,也将数字签名解密,得到数据摘要,然后对解出来的数据进行摘要,发现摘要不一致,发现数据被篡改,丢弃该报文。

        (2). 修改摘要:好像也没有什么意义。修改摘要,客户端将数据再行摘要,发现摘要不一致,认为数据被篡改,丢弃该报文。

        (3). 全部修改:我即修改数据,也修改签名,因为可以用公钥解密,再用自己的密钥加密。但是客户端不认,客户端会在本地缓存认证的CA机构的公钥,如果发现用CA机构的公钥解不开数据,就认为数据被篡改。

        CA机构只会开放公钥,CA机构的私钥会自己保管好,别人是拿不到的,也就无法再次对数据进行加密。

        因此,攻方手段尽失,无法在修改任何数据了,即使修改了,客户端也能发现并丢弃了。

        有了证书后,证书内包含了服务器的公钥,客户端再生成自己的密钥,用服务器的公钥加密密钥,然后传输给服务器,此后,通信双方就是用客户端生成的密钥进行通信,即保证了安全性,也保证了性能。

📁 完整工作流程

        有了证书的存在,通信双方再也不怕服务器的公钥被修改了,验证了服务器公钥的权威性和合法性。

  HTTPS 工作过程中涉及到的密钥有三组.:

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

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

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

📁 总结

        本期【网络世界】介绍了什么是HTTPS协议,是如何对HTTP缺陷进行修补,学习了什么是中间人攻击,以及HTTPS是如何解决中间人攻击的。此外,也了解CA机构,证书的概念。

        以上,就是本期【网络世界】的主要内容了,如果感觉本期内容对你有帮助,欢迎点赞,收藏,关注 Thanks♪(・ω・)ノ

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

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

相关文章

nginx反向代理和负载均衡+安装jdk-22.0.2

ps -aux|grep nginx //查看进程 nginx 代理 nginx代理是负载均衡的基础 主机:192.168.118.60 这台主机只发布了web服务,没有做代理的任何操作 修改一下index.html中的内容 echo "this is java web server" > /usr/local/nginx/htm…

【OpenCV-Python实战项目】26-实时手部跟踪

0 介绍 目的:使用mediapipe库做手部的实时跟踪 检测流程:(1)手掌检测;(2)手掌特征检测 手掌特征分布:mediapipe手掌特征分布如下: 1.环境要求 后续代码运行环境&…

力扣SQL50 换座位

Problem: 626. 换座位 👨‍🏫 参考题解 Code SELECT(CASEWHEN MOD(id, 2) ! 0 AND counts ! id THEN id 1WHEN MOD(id, 2) ! 0 AND counts id THEN idELSE id - 1END) AS id,student FROMseat,(SELECTCOUNT(*) AS countsFROMseat) AS seat_counts O…

电测量数据交换DLMSCOSEM组件第53部分:DLMSCOSEM应用层(中)

2.综述 (续上篇) 上篇地址:http://t.csdnimg.cn/DBKrg 2.2DLMS/COSEM应用层主要特点 2.2.1DLMS/COSEM应用层结构 DLMS/COSEM AL的主要部件是应用服务对象(ASO)。它给其服务用户提供服务(COSEM应用进程),并使用支撑层提供的服务。客户机和服务器侧都包含三个必…

Image Caption评估指标深入理解

前言:刚开始做图像描述的任务就整理了这些评估指标,时间久远有点记不清怎么具体实现原理了,结果面试的时候就问了这个问题,没答上来,郁闷了很久,还是基础不扎实,浅浅记录一下 文章目录 BLEUROUG…

C语言的结构体

结构体定义 结构体指针

【优选算法】滑动窗口——leetcode——串联所有单词的⼦串(hard)

目录 1.题目 2,算法原理 ​编辑 1.哈希表 2.left和right指针的移动 3.滑动窗口的执行次数 3.代码实现 1.C代码 2.C语言代码 4.C知识点 1. std::vector 2. std::string 3. std::unordered_map 4. 迭代器 5. 范围循环 (range-based for loop) 6. 动…

0基础学会无代码在亚马逊云科技AWS上利用LLM和智慧体(Agent)开发客服机器人

简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍的是如何利用亚马逊云科技大模型托管服…

【解决方法】git clone出现 curl 56 OpenSSL SSL_read: Connection was reset, errno 10054

当我们克隆别人的项目出现以下提示信息时候 remote: Enumerating objects: 7095, done. error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset, errno 10054 error: 2292 bytes of body are still expected fetch-pack: unexpected disconnect while reading s…

Python(C++)大尺度分层边值时变图统计推理并行算法

🎯要点 🎯分层结构制定生成模型 | 🎯贝叶斯模型选择程序 | 🎯分层结构图的信息性 | 🎯分层模型适应实值边协变量的网络 | 🎯分层模型适应时变网络,划分层对应于检测变化点 | 🎯定义…

Python中15个让你代码更优雅的上下文管理器用法

文末赠免费精品编程资料~~ 今天,我们要探索的是Python中一个超级实用又往往被低估的特性——上下文管理器。这可不是普通的魔法,它能让你的代码更加整洁、安全,还能自动处理资源,就像变魔术一样。准备好,让我们一起揭…

一分多行列转换(Gbase版)

1、源数据表结构 CREATE TABLE "sf_ref_pd_config" ("I_BATCH_NO" decimal(5,0) DEFAULT NULL COMMENT 批次ID,"V_ASSET_CLASS_NAME" varchar(200) DEFAULT NULL COMMENT 资产类型,"N_EXEC_ID" decimal(5,0) DEFAULT NULL COMMENT 执…

pyjwt:Python 中的 JWT 处理专家

文章目录 探索 pyjwt:Python 中的 JWT 处理专家简介:为何选择 pyjwt?什么是 pyjwt?安装 pyjwtpyjwt 的基本使用1. 编码JWT2. 解码JWT3. 验证签名4. 过期时间5. 自定义头部 场景应用场景一:用户登录场景二:A…

深度学习的数据类型总结

文章目录 1.基本概念1.比特(bit):2. **字节**(Byte):2. **数据类型**: 2. 相互转化 1.基本概念 1.比特(bit): 计算机中最小的数据存储单位,用 0 和 1 表示。信息传输速…

python制作一个AI聊天机器人-【python教程】教你用python制作一个AI聊天机器人,源码可分享,零基础也能实现!

要制作一个基本的AI聊天机器人,我们可以使用Python的多个库,其中一个非常流行且易于上手的是Rasa。一个简单的入门示例,我们可以使用pyttsx3,是一个Python库,用于将文本转换为语音。 它提供了一个简单易用的接口&#…

【ThingsBoard初体验】本地运行源码踩坑记录

前言 运行源码之前,请先编译源码。这很重要!!! 官网源码编译教程:http://www.ithingsboard.com/docs/user-guide/contribution/yuanmabianyi/ 如果编译过程中出现报错,请看我上一篇文章:【Thing…

《LeetCode热题100》---<滑动窗口篇两道>

本篇博客讲解LeetCode热题100道滑动窗口篇中的两道题 第一道:无重复字符的最长子串 第二道:找到字符当中的所有字母异位词 第一道:无重复字符的最长子串 哈希滑动窗口 class Solution {public int lengthOfLongestSubstring(String s0) {int…

nginx出现Refused to apply inline style because it violates

Content Security Policy的错误。根据错误提示,nginx拒绝应用内联样式,因为它违反了内容安全策略(Content Security Policy)。内容安全策略是一种浏览器机制,用于防止潜在的安全漏洞,通过限制从外部来源加载…

初步入门C ++之继承的概念

继承 ​ 继承,他的功能就如同他的名字一样,可以继承一个类的数据和方法,然后增添一些自己独有的数据和方法: 根据我们之前讲解初步入门C之类的例子,假如我们现在有一个长方体的类,它和长方型类唯一不一样…