计算机网络(6) --- https协议

计算机网络(5) --- http协议_哈里沃克的博客-CSDN博客http协议https://blog.csdn.net/m0_63488627/article/details/132089130?spm=1001.2014.3001.5501

目录

1.HTTPS的出现

1.HTTPS协议介绍

2.补充概念

1.加密

1.解释

2.原因

3.加密方式

对称加密

非对称密钥

2.数据摘要和数字签名

数据摘要

数字签名

3.加密方案

1.只使用对称密钥加密

2.只使用非对称密钥加密

只用一对密钥

用两对密钥

3.对称密钥加密和非对称密钥加密组合

4.中间人攻击

3.证书

1.证书介绍

2.理解数据签名

3.检查证书

4.解决安全问题

证书+对称加密+非对称加密


1.HTTPS的出现

http是明文发送的,也就是说其安全性难以保证。

1.HTTPS协议介绍

1.HTTPS也是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层ssl/tls.
2.HTTP协议内容都是按照⽂本的⽅式明⽂传输的。这就导致在传输过程中出现⼀些被篡改的情况,其端口号为443。

2.补充概念

1.加密

1.解释

1.加密就是把明⽂(要传输的信息)进⾏⼀系列变换,⽣成密⽂.
2.解密就是把密⽂再进⾏⼀系列变换,还原成明⽂
3.在这个加密和解密的过程中,往往需要⼀个或者多个中间的数据,辅助进⾏这个过程,这样的数据称为密钥
4.发送数据前要加密,这样网络上传输的都是密文,最终到达目的主机被解密就得到原始数据了

2.原因

因为http的内容是明⽂传输的,明⽂数据会经过路由器、wifi热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双⽅察觉,这就是中间⼈攻击,所以我们才需要对信息进⾏加密。

3.加密方式

对称加密

1.加密和解密使用的是同一个密钥。

2.算法公开、计算量⼩、加密速度快、加密效率⾼

3.常⻅对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2等

非对称密钥

1.需要两个密钥来进⾏加密和解密。这两个密钥是公开密钥(publickey,简称公钥)和私有密钥(privatekey,简称私钥)。

2.算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,⽽使得加密解密速度没有对称加密解密的速度快

3.常⻅⾮对称加密算法(了解):RSA,DSA,ECDSA

2.数据摘要和数字签名

数据摘要

1.数字指纹(数据摘要),其基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改,唯一性非常强。
2.摘要常⻅算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)
3.摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常⽤来进⾏数据对⽐

数字签名

摘要经过加密,就得到数字签名

3.加密方案

1.只使用对称密钥加密

即客户端和服务端之间只有一个密钥进行加密和解密。当浏览器访问服务端时,服务端将密钥发送给客户端,客户端就拥有了解密的能力。

但是,这样的设置是无法满足安全要求的,因为中间人劫持能直接连接两边,服务端将密钥给了中间人,中间人再给客户端,那么客户端的安全就不能保证了。

2.只使用非对称密钥加密

只用一对密钥

服务端有公钥和私钥。当浏览器请求时,服务端发送给客户端公钥,那么此时服务器将信息发送给客户端就用私钥进行加密,即保证了客户端向服务端发送的安全性;但是我们无法保证服务端发给客户端的安全性,因为每一个客户端的公钥完全一致,那么劫持服务端发给客户端的信息,中间人也能解密。

用两对密钥

服务端和客户端都有私钥和公钥。连接时,客户端发送公钥给服务端,服务端也将公钥给服务器。这样两边的数据都能被保护起来了。客户端发信息先用服务端的公钥解密再发送;服务端发送思路同理。

缺点:1.发送速度慢 2.安全问题依然无法解决

3.对称密钥加密和非对称密钥加密组合

服务端有一对密钥,客户端只有公钥。客户端发送请求,服务端发送公钥给客户端。客户端形成对称密钥,客户端拿着服务端发来的公钥加密密钥,这样到服务端能得到加密后的对称密钥。但是,安全问题依然无法解决

4.中间人攻击

只要当链接未完成建立,中间人在开始就已经进行攻击。此时对于上面的方法依然存在安全问题。中间人在中间生成两个密钥针对服务端和客户端,这样客户端的所有请求其实都能被中间人轻而易举的获取。由于它有两边的密钥,那么破解也十分容易。

其问题的最初问题其实是:服务端发送密文的公钥时,中间人有可能获取并且篡改,但是客户端无法辨别得到的公钥的真假。

3.证书

1.证书介绍

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

1.企业将申请认证的资料提交给CA机构。信息包括:公钥和私钥,域名,申请者等。

2.审核后,将证书发送给企业。证书的信息时明文的。

3.最后,就是每次客户端访问服务端时,服务端都会发证书给客户端,客户端确认无误再进行连接。

2.理解数据签名

1.企业发送给CA机构的证书,经过哈希得到数据摘要,数据摘要又通过CA提供的私钥进行加密变成数据签名。数据签名和证书合并就是所谓的带签名的证书。

2.数据签名是为了防篡改

3.检查证书

 

 将带签名的证书分离出数据签名和证书。签名可以通过公钥得到数据摘要。证书也可以通过哈希得到数据摘要。这两份数据摘要一致则说明安全。

因为CA的私钥只有CA有,那么CA形成的数据摘要只有CA机构可以判断

4.解决安全问题

1.客户端请求服务端,服务端将证书发给客户端。

2.证书中有服务端的公钥。为了保证公钥的正确性,客户端会分离出证书和数据签名,证书直接哈希得到数据摘要,CA在浏览器中加入了公钥,该公钥用于数据签名,数据签名解码得到数据摘要,要知道CA的私钥只有CA有,也就意味着数据签名转换的数据摘要是绝对正确的,两个数据摘要一对比就能知道是否有中间人攻击了

证书+对称加密+非对称加密

1.首先客户端发送请求,服务器发送证书,客户端检查证书。此时客户端就得到了服务器的公钥

2.客户端生成了对称加密密钥,通过服务器的公钥加密给服务器。服务器的私钥只有服务器拥有,那么也就只有服务器能够解密出对称加密的密钥。最终得到了安全的要求

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

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

相关文章

python和c语言哪个好上手,c语言和python语言哪个难

大家好,本文将围绕python和c语言哪个更值得学展开说明,python语言和c语言哪个简单是一个很多人都想弄明白的事情,想搞清楚c语言和python语言哪个难需要先了解以下几个事情。 前言 新手最容易拿来讨论的三个语言,具体哪个好&#x…

使用正则表达式 移除 HTML 标签后得到字符串

需求分析 后台返回的数据是 这样式的 需要讲html 标签替换 high_light_text: "<span stylecolor:red>OPPO</span> <span stylecolor:red>OPPO</span> 白色 01"使用正则表达式 function stripHTMLTags(htmlString) {return htmlString.rep…

分布式系统:ACID与CAP

ACID: 在计算机科学中&#xff0c;ACID是数据库事务的一组特性&#xff0c;旨在保证数据的有效性&#xff0c;即使在出现错误、断电和其他意外情况下也能保持数据的一致性。在数据库的上下文中&#xff0c;满足ACID属性的一系列数据库操作&#xff08;可以被视为对数据的单一逻…

宝塔Linux面板升级“获取更新包失败”怎么解决?

宝塔Linux面板执行升级命令后失败&#xff0c;提示“获取更新包失败&#xff0c;请稍后更新或联系宝塔运维”如何解决&#xff1f;新手站长分享宝塔面板升级失败的解决方法&#xff1a; 宝塔面板升级失败解决方法 1、使用root账户登录到你的云服务器上&#xff0c;宝塔Linux面…

linuxARM裸机学习笔记(2)----汇编LED灯实验

MX6ULL 的 IO IO的复用功能 这里的只使用了低五位&#xff0c;用来配置io口&#xff0c;其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的&#xff0c;GPIO1_IO00 一共可以复用为 9种功能 IO&#xff0c;分别对应 ALT0~ALT8。每种对应了不同的功能 io的属性配置 HY…

Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序&#xff0c;被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能&#xff0c;例如&#xff1a;静态文件&#xff0c;Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器…

unity如何手动更改脚本执行顺序

在Unity中&#xff0c;脚本的执行顺序是由脚本的执行顺序属性决定的。默认情况下&#xff0c;Unity根据脚本在项目中的加载顺序来确定它们的执行顺序。然而&#xff0c;你可以手动更改脚本的执行顺序&#xff0c;以下是一种方法&#xff1a; 在Unity编辑器中&#xff0c;选择你…

基于ffmpeg与SDL的视频播放库

由于工作需要&#xff0c;自己封装的基于ffmpeg的视频编解码库&#xff0c;显示采用了SDL库。可以播放本地文件或网络流&#xff0c;支持多端口播放&#xff0c;支持文字叠加&#xff0c;截图、视频录制等等。 头文件代码&#xff1a; #pragma once #ifdef __DLLEXPORT #defin…

ORCA优化器浅析——CQueryContext对优化器的要求

从ORCA优化器浅析——重要主流程概述中可以知道进入真正优化器引擎执行流程之前需要对优化器提出要求&#xff0c;比如后面会提到的required columns、required sort orders等。而CQueryContext即是承载这些内容的类。首先CQueryContext类是通过PqcGenerate函数构造的&#xff…

MySQL进阶--性能分析

目录 一、简介二、什么的SQL性能分析三、性能分析的方式1.SQL执行频率2.慢查询日志3.profile详情4.explain执行计划 PS: 一、简介 本文的内容讲的是MySQL的性能分析&#xff0c;包括执行频率、慢查询日志、profile详情和explain执行计划~ 二、什么的SQL性能分析 SQL性能分析…

使用Golang实现一套流程可配置,适用于广告、推荐系统的业务性框架——简单应用

在诸如广告、推荐等系统中&#xff0c;我们往往会涉及过滤、召回和排序等过程。随着系统业务变得复杂&#xff0c;代码的耦合和交错会让项目跌入难以维护的深渊。于是模块化设计是复杂系统的必备基础。这篇文章介绍的业务框架脱胎于线上多人协作开发、高并发的竞价广告系统&…

MySQL|查看事务加锁情况

文章目录 使用information_schema数据库中的表获取锁信息INNODB_TRXINNODB_LOCKSINNODB_LOCK_WAITS 使用SHOW ENGINE INNODB STATUS获取信息补充 使用information_schema数据库中的表获取锁信息 在information_schema数据库中&#xff0c;有几个与事务和锁紧密相关的表 INNOD…