计算机网络 深入理解HTTPS协议证书

news2024/11/19 9:37:39

文章目录

  • 一、HTTPS协议
  • 二、对称加密
  • 三、非对称加密&对称加密(混合加密)
  • 三、加密+证书
  • 四、HTTPS双刃性

一、HTTPS协议

之前介绍了HTTP协议,它给我们带来很大便利,但是也能看到他的不足。由于其本身通信使用明文,没有进行加密,也没有确认通信方的一种机制,所以在互联网上近似于裸奔,很容易就会受到中间人攻击,导致安全存在问题。
有以下三点安全隐患
1、通信时数据并没有进行加密,而是使用明文,很容易就会被窃听
2、没有验证通信对象的机制,导致了可能会有人假扮客户端进行通信
3、无法验证报文的完整性,中途可能被人篡改,自己又无法确认

所以为了弥补上述缺点,HTTPS就诞生了,HTTPS并不是一个新的协议,而是身披SSL外壳的HTTP,通过引入加密,证书,完整性保护来保证了他的安全。

二、对称加密

对称密钥加密也叫做共享密钥加密,其实就是加密和解密采用了同一个密钥。
双方在进行通信时,发送方会利用密钥进行加密,再将密钥一同发送给接收方,让其使用这个密钥进行解密。
优点:算法透明且计算算力小,加密速度快且效率高。

这种方法看起来不错,但存在很大的问题,如果在发送的时候被拦截下来,密钥就会泄露给中间人,此时中间人就可以通过密钥来对之后的数据进行解密,此时也就失去了加密的意义。
因为服务端没有秘钥key,而客户端要把key和数据一块发过去,这就很容易被中间人劫持,所以用这种方法解决不了安全问题。
如图:
在这里插入图片描述

三、非对称加密&对称加密(混合加密)

非对称加密又叫做公开密钥加密,他使用一对非对称的密钥,一把叫做私有密钥,一把叫做公有密钥。公有密钥是公开的,任何人都可以获得,而私有密钥则不能让任何人知道

当进行通信时,发送方使用对方的公有密钥进行加密,而接收方接收时则使用自己的私有密钥进行解密,这样一来,用于解密的私钥就完全掌握在接收者自己手里,中间人也无法从中窃取密钥,安全也一定程度的得到了保障,
但是还是有隐患
如果服务端有公钥和私钥,因为我们建立TCP三次握手之后,还得需要秘钥握手过程,这个过程是服务端要给客户端发一个公钥,然后私钥自己留着用于解密,所以这时候中间人会在这过程就可能把这个传给客户端的公钥拿到,而且服务端无法进行加密,一旦中间人拿到公钥,就能窃取数据甚至修改。
在这里插入图片描述

改为混合加密,客户端好服务端各自有公钥P和私钥S
也就是各自使用非对称加密,它们各自发送对方自己的公钥,然后用对方的公钥加密,收到数据的时候在用自己的私钥解密,这时候看起来是安全的,都是用非对称加密,速度太慢,可以改为对称加密+非对称加密
在这里插入图片描述
以上过程是秘钥握手协商过程,上面做完就可以要对称秘钥c进行通信。

但是还是存在问题
从上图可以明显看到,如果c给s发自己的p的时候,就已被中间人劫持,然后他准备了自己的私钥和公钥,将自己的公钥给客户端,客户端形成v之后,中间人再用自己的私钥解密获得对称秘钥c,再用服务端的公钥对c加密发给服务端,服务端正常解密得到c,在这个时候,中间人已经得到了对称秘钥c,数据还是可能被修改。

三、加密+证书

解决上面的问题,HTTPS引入了数字证书这一机制。

服务器的运营人员会向数字证书认证(CA)机构来进行认证,在机构对其验明身份之后,就会对服务器的公钥做一个数字签名,并且将公钥放入明文信息后(公开的)绑定在一起形成证书。此时当客户端接收到服务器发送的公钥证书的时候,从里面获取公钥。
数字签名:CA机构把明文信息通过哈希散列函数进行运算得到一串固定长度的数字摘要。数字摘要并不是加密机制,可以来判断这个份信息是否被修改,后面分析时用到。
如图:
在这里插入图片描述
客户端怎么知道这个公钥是可用的?
上面提到,CA机构对其验明身份之后,就会对服务器的公钥做一个数字签名,CA是用自己的私钥对这个数据摘要进行加密的,这个私钥只有CA机构有,当客户端收到证书的时候,它会去验证这个证书是否被修改,而客户端比如说是浏览器,因为CA会在所有的浏览器内置自己的公钥,用来它对上面的数据摘要进行解密,解完之后,得到数据摘要,再进行相同的哈希算法对明文信息运算生成一个散列值。

然后拿刚生成的散列值和上面解完密之后的散列值进行对比,看是否一样,如果相等,说明该证书没被修改过。说明这个明文中即CA机构给我们的公*钥是可以用的。
加密+证书认证分析
通过上面的分析之后,在握手协商的时候,服务端给客户端发送证书,验证合法性,客户端得到公钥,然后这边生成自己的对称秘钥,再把它发给服务端,服务端用私钥对它进行解密得到对称秘钥c,以后就用对称秘钥进行通信。这样解决了公钥被其他人恶意截取的问题
在这里插入图片描述

四、HTTPS双刃性

HTTPS在通信接口部分使用了SSL和TLS来进行代替,对于HTTP协议来说,它是直接和TCP进行通信。
而HTTPS为了保证安全,使用了SSL来提供保障,通信时首先与SSL进行通信,再由SSL来与TCP进行通信,正是因为由SSL的存在,才使得HTTP具备了HTTPS的加密、证书、安全性保障这些功能。
但是SSL为HTTPS保障安全的同时,也降低了效率。
体现在两点:
1、和HTTP相比,网络负载可能会变慢几十倍,由于HTTPS还需要额外进行SSL通信,整体上处理通信量不可避免的增加。
2、SSL为了确保安全,在客户端和服务端都需要进行大量的加密和解密的运算处理,导致其比起HTTP来说会更多的消耗服务器和客户端的硬件资源,导致负载增强。
SSL的高安全带来的低效率以及高负载使HTTPS并不会一直使用
具体原因
对于高访问量的Web网站来说,进行大量的加密解密出来带来的负载十分庞大,并且对于可公开信息也没有加密的必要,所以大多数网站并不会一直使用HTTPS,而是只在进行私密内容传输的时候才会使用,来确保资源的节约。
数字证书的成本太高使个人网站及非盈利网站望而却步,要进行HTTPS通信,数字证书是必不可少的,但是对于一些非盈利的网站以及个人网站来说,每年用来购买数字证书带来的花销太大,所以大多还是用HTTP。

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

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

相关文章

MATLAB /Simulink 快速开发STM32(使用st官方工具 STM32-MAT/TARGET),以及开发过程

配置好环境以后就是开发: stm32cube配置芯片,打开matlab添加ioc文件,写处理逻辑,生成代码,下载到板子中去。 配置需要注意事项: STM32CUBEMAX6.5.0 MABLAB2022BkeilV5.2 Matlab生成的代码CTRLB 其中关键的…

Apache RocketMQ 命令注入

漏洞简介 RocketMQ 5.1.0及以下版本,在一定条件下,存在远程命令执行风险。RocketMQ的NameServer、Broker、Controller等多个组件外网泄露,缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令…

java+springboot+mysql个人日记管理系统

项目介绍: 使用javaspringbootmysql开发的个人日记管理系统,系统包含超级管理员、管理员、用户角色,功能如下: 超级管理员:管理员管理;用户管理;反馈管理;系统公告;个人…

银河麒麟V10 wireshark安装说明(断网离线)

下载离线安装包 链接:https://pan.baidu.com/s/11QFRmCGlIJrJaiKcHh9Hag?pwdu9wv 提取码:u9wv 安装步骤 tar zxvf wireshark.tar.gz cd wireshark sudo dpkt -i *.deb wireshark

关于CORS的笔记

CORS目录 一、SpringBoot 跨域设置二、CORS(1)总结的图如下(2)简单请求满足的条件(3)响应头(4)请求头(5)使用XMLHttpRequest进行跨域访问1. Access-Control-A…

html学习9(脚本)

1、<script>标签用于定义客户端脚本&#xff0c;比如JavaScript&#xff0c;既可包含脚本语句&#xff0c;也可通过src属性指向外部文件。 2、JavaScript最常用于图片操作、表单验证及内容动图更新。 3、<noscript>标签用于在浏览器禁用脚本或浏览器不支持脚本&a…

Java课题笔记~ 关联映射

一、MyBatis关联查询 在关系型数据库中&#xff0c;表与表之间存在着3种关联映射关系&#xff0c;分别为一对一、一对多、多对多。 一对一&#xff1a;一个数据表中的一条记录最多可以与另一个数据表中的一条记录相关。列如学生与学号就属于一对一关系。 一对多&#xff1a;主…

学习gRPC (三)

测试gRPC例子 编写proto文件实现服务端代码实现客户端代码 通过gRPC 已经编译并且安装好之后&#xff0c;就可以在源码目录下找到example 文件夹下来试用gRPC 提供的例子。 在这里我使用VS2022来打开仓库目录下example/cpp/helloworld目录 编写proto文件 下面是我改写的exa…

领域驱动设计(六) - 架构设计浅谈

单用一篇文章很难把这个主题描述的清楚&#xff0c;但为了系列的完整性&#xff0c;笔者会围绕DDD中所介绍的内容做下初步总结&#xff0c;使读者有一个连续性。 一、概述 现在不是局部解决问题的时代了要运用新的技术创造新的效率提升&#xff0c;需要整个商业链条一起前进。…

粉末治金液压系统伺服阀控制器

粉末冶金液压系统是一种应用于粉末治金工艺的液压系统。该系统由液压泵、压力调节器、液压缸、液压管道、电气控制系统等组成。 该系统的优点包括&#xff1a; 工艺动作可靠&#xff1a;粉末冶金液压系统能够精确控制压力和流量&#xff0c;保证工艺动作的可靠性。 提高生产…

分布式存储系统中一致性与可用性核心实战

《高并发系统实战派》-- 你值得拥有 文章目录 副本的喜与忧什么是一致性和可用性&#xff1f;一致性与可用性的较量如何有效权衡&#xff0c;提高系统性能和稳定性&#xff1f;带入实际场景场景案例CAP BASE 双轮指导CAP指导BASE指导 副本的喜与忧 我们要知道&#xff0c;无…

CSDN竞赛68期题解

总结 近几期的题目质量有所提升&#xff0c;数据范围还是一如既往的没给。对于算法题&#xff0c;给定详细的数据范围&#xff0c;规范输入输出&#xff0c;再多给出几个样例以及样例说明&#xff0c;参赛的体验感才会提升。 题目列表 1.小球游戏 题目描述 某台有10个小球的…

[Python] Pylance 插件打开 Python 的类型检查

安装 Python 插件 2.打开一个 Python 文件 可以看到右下角有一个花括号和 Python 字样&#xff0c;点击花括号&#xff08;不是 Python 字样&#xff09;打开类型检查即可&#xff1a;

【问题随记】

ubuntu 14.04源更新(sources.list) deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-update…

echart图表X轴文字太长被隐藏标签解决方案

在Echart图标中&#xff0c;X轴的标签文字间隔默认是自动计算的&#xff0c;在标签文字长度太长的情况下&#xff0c;有可能标签会被隐藏掉&#xff0c;如图 这种显示显然是不符合严谨的业务需求。以下提供三种解决方案 第一种&#xff1a;竖排显示 效果&#xff1a; 在高度一…

汽车EBSE测试流程分析(四):反思证据及当前问题解决

EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第四”篇章&#xff0c;在之前的“篇章&#xff08;三&#xff09;”中已经结合具体研究实践阐述了“步骤二&#xff0c;通过系统调研确定改进方案”等内容。那么&#xff0c;在本篇章&#xff08;四&#xff09;中&#…

web爬虫第五弹 - JS逆向入门(猿人学第一题)

0- 前言 爬虫是一门需要实战的学问。 而对于初学者来说&#xff0c;要想学好反爬&#xff0c;js逆向则是敲门砖。今天给大家带来一个js逆向入门实例&#xff0c;接下来我们一步一步来感受下入门的逆向是什么样的。该案例选自猿人学练习题。猿人学第一题 1- 拿到需求 进入页面…

据说这是最全的,App自动化测试思路总结,从0到1实施...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、编程语言选择 …

Open3d——根据距离参数给点云上渐变色

找了半天网上都没有开源的根据距离进行点云渐变色上色的代码&#xff0c;所以写一个方便自己和大家的使用~ 渐变色生成代码 输入点云shape为[N,3]&#xff0c;我这里使用的是nuScenes数据集&#xff0c;生成的点云使用到中心点的距离作为参数&#xff0c;进行渐变&#xff0c;…

XML(eXtensible Markup Language)

目录 为什么需要XML? 一 XML语法 1.文档声明 2.元素 语法: 3.属性 4.注释 5.CDATA节 二 树结构 三 转义字符 四 DOM4J 1.XML解析技术 2.dom4j介绍 3.dom4j基本使用 XML 指可扩展标记语言&#xff08;eXtensible Markup Language&#xff09;。 XML 被设计用来传…