【网络安全】https协议的加密方案避免中间人攻击(MITM攻击)导致的数据泄露风险

news2024/11/15 9:58:03

目录

引言

概念准备

中间人

加密

数据摘要 && 数据指纹

数字签名

密钥加密

中间人攻击

CA证书

https加密的解决方案


个人主页:东洛的克莱斯韦克-CSDN博客

引言

http在应用层协议中是明文传输协议,它是通信双方传输数据时的一种约定。【网络】HTTP协议-CSDN博客

用http协议传输数据,其数据包在全网内是公开的。在局域网中第三方设备把自己的网卡的工作模式设为混杂模式,或者用一些抓包软件很容易监听并解析出其他人的通信内容,如果涉及一些隐私信息就会造成信息泄露的风险。

https是在http的基础上做了一层加密,本文探讨https是如何做到加密的。

概念准备

在探讨之前先铺垫一些概念~

中间人

中间人的攻击对象是客户端,在C/S架构或B/S架构中,中间人要窃取的是客户端的数据。

数据包从客户端到服务端需要经过一些中间设备,比如局域网中的路由器,运营商的服务器等等,http协议的数据包并没有加密,而数据包又要经过中间设备,黑客只需劫持一些中间设备或想办法让自己成为中间设备(比如建立假网站)就能轻松拿到客户端的和服务端之间交互的数据包。

下面是让自己成为中间人的几种方式

ARP 欺骗:在局域网中, hacker 经过收到 ARP Request ⼴播包,能够偷听到其它节点的 (IP, MAC) 地址。例, 黑客收到两个主机 A, B 的地址,告诉 B ( 受害者 ) ,自己是 A ,使得 B 在发送给 A 的数据包都被黑客截取
ICMP 攻击:由于 ICMP 协议中有重定向的报文类型,那么我们就可以伪造一个ICMP 信息然后发送给局域网中的客户端,并伪装自己是一个更好的路由通路。从而导致⽬标所有的上网流量都会发送到我们指定的接⼝上,达到和 ARP 欺骗同样的效果
wifi && 假网站等

加密

加密就是把 明文 ( 要传输的信息 ) 进行一系列变换 , 生成 密文 解密就是把 密文 再进行一系列变换 , 还原成 明文 。在这个加密和解密的过程中, 往往需要一个或者多个中间的数据 , 辅助进行这个过程 , 这样的数据称为 密钥
公开的密钥称为公钥,非公开的密钥称为私钥。
对称加密:用同一个密钥(私钥)加密和解密。 算法公开、计算量⼩、加密速度快、加密效率⾼
相关算法:
DES(使用密钥加密的块算法)
三重数据加密算法
BLOWFISH
非对称密钥:用对公钥和私钥进行加密和解密。用公钥加密只能用私钥解密,用私钥加密只能用公钥解密。算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
 

数据摘要 && 数据指纹

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

数字签名

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

密钥加密

下面用对称加密和非对称加密结合的方案,假设黑客一定能用中间设备窃取数据

服务端有自己的一对公钥S和私钥S*

客户端向服务端发起请求,获取服务端的公钥S,黑客也一定能拿到公钥S。

客户端在本地生成自己的私钥C,然后用服务端的公钥S加密,即使有中间设备,但该数据包只有服务端的私钥S*解密,私钥C只有客户端和服务端知道,从次双方用私钥C对称加密进行通信,至此通信双方完成密钥协商。

那么这样真的是安全的吗?

并不是,如果黑客一开始就把服务器的公钥S掉包了呢?

中间人攻击

上述方案中并没有让黑客参进密钥协商,假设黑客也有一对自己的公钥M和私钥M*,黑客如果把服务端的公钥S掉包成自己的公钥M给客户会怎么样呢

客户端拿到黑客的公钥M,在本地生成自己的私钥C。用黑客的公钥M加密,然后再向服务器发起请求,黑客很自然的用自己的私钥M*解密,拿到客户端的私钥C,然后用服务端的公钥S加密向服务端发起请求,至此客户端,黑客,服务端都拿到密钥C,客户端和服务端用密钥C进行对称加密通信,但双方并不知道有第三方也拿到了密钥C。

上述通信方案最根本的问题是,客户端无法证明服务器第一次响应的公钥M是不是真的,而公钥M自身也不能证明自己是真的。

只要能证明服务器第一次响应的公钥M是真的,就可以完成密钥协商,然后用对称加密通信,下面就要引入CA证书的概念了。

CA证书

CA证书是由证书颁发机构(Certificate Authority,简称CA)签发的数字证书。它包含了证书申请者的信息(如域名、组织信息等)、公钥信息以及证书颁发机构的签名。证书的作用类似于现实生活中的身份证,它证明了服务端公钥的权威性和可信度,确保了公钥与服务器身份之间的绑定关系。

服务器端在使用HTTPS之前,需要向CA机构申领一份数字证书。这个过程中,服务器会向CA提交证书签名请求(Certificate Signing Request,简称CSR),CSR文件中包含了服务器的公钥信息和一些必要的信息(如域名、组织信息等)。CA机构在收到CSR后,会对申请者的身份和申请信息进行审核。审核通过后,CA会使用自己的私钥对CSR中的信息进行签名,生成最终的数字证书,并颁发给申请者。

CA证书是一个结构化的字符串,其中包含了以下关键信息

证书发布机构:即签发证书的CA机构的名称。
证书有效期:证书的有效时间范围,超过这个时间范围的证书将不再被认为是有效的。
公钥:服务端的公钥信息,这是证书中最核心的部分,用于后续的数据加密和解密。
证书所有者:证书申请者的信息,包括域名、组织名称等。
签名:CA机构使用自己的私钥对证书内容进行签名,确保证书内容的完整性和真实性。

理解CA证书只需理解最核心的两个东西即可

一个是公钥,CA证书里的公钥是服务端的公钥,上文已经提到,CA证书就是为了证明服务端的公钥自身是没有被掉过包的。

那么CA证书怎么能证明服务端公钥的合法性呢?那就是数字签名

CA机构会把证书内容摘要算法比如MD5形成数据指纹,再把数据指纹用CA自己的私钥加密形成数据签名,而客户端会内置CA机构的公钥。

那么客户端一定能辨别证书的真假,有如下场景来解释为什么~

1.黑客只篡改证书内容,但客户端可以通过比对数据指纹来判断证书是否被修改过。

2.黑客篡改证书内容的同时重新用摘要算法形成数据指纹,但黑客没有给证书签名的能力,因为只有CA机构才有私钥。

3.黑客拿真证书掉包,但客户端可以比对公钥,域名,法人信息等判断证书的合法性。

CA证书有自证的能力,那么CA证书中服务器公钥也有自证能力,下面就是https的加密方案。

https加密的解决方案

https采用非对称加密 + 对称加密 + 证书认证的方案进行密钥协商

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

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

相关文章

超声波便携式气象站:精准监测,随身携带

在追求高效与便捷的今天,超声波便携式气象站以其独特魅力脱颖而出,成为众多行业及户外爱好者的理想选择。超声波便携式气象站采用多采集装置一体式设计,不仅实现了体积的小型化与重量的轻量化,更便于用户随身携带,随时…

期权杠杆与期货杠杆的区别是什么?

期权与股指期货在杠杆性上展现出截然不同的特性,这些特性对投资者的策略选择具有深远影响。首先,股指期货采用保证金制度,其杠杆比例是恒定的,无论市场如何波动,投资者在月初设定的十倍杠杆到月尾仍保持不变。相比之下…

STM32常见的下载方式有三种

经过对比,推荐使用 SWD下载,只需要一个仿真器(如jLINK、ST LINK、 CMSIS DAP 等),比较方便。 不推荐使用串口下载(速度慢、无法仿真和调试)和 JTAG 下载(占用 IO 多)。

Java语言程序设计基础篇_编程练习题*16.7 (设置时钟的时间)

*16.7 (设置时钟的时间) 编写一个程序,显示一个时钟,并通过在三个文本域中输入小时、分钟和秒 钟来设置时钟的时间,如图16-38b 所示。使用程序清单14-21的ClockPane改变时钟大小使其居于面板中央 习题思路 实例化一个ClockPane(在程序清单1…

【网络安全渗透测试零基础入门必知必会】之什么是文件包含漏洞分类(非常详细)零基础入门到精通,收藏这一篇就够了

一、前言 这是大白给粉丝盆友们整理的网络安全渗透测试入门阶段文件包含渗透与防御第1篇。 本文主要讲解什么是文件包含漏洞、本地文件包含漏洞 喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术。 一、什么是文件包含漏洞…

the request was rejected because no multipart boundary was found

文章目录 1. 需求描述2. 报错信息3. 探索过程1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票,经过后端解析PDF之后,将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.util.…

VSCode远程调试Linux程序

VS 安装CodeRunner插件 菜单→添加配置→lunch.json中设置如下: program填入要调试的文件 {"version": "0.2.0","configurations": [{"name": "gdb renderPng","type": "cppdbg","re…

为什么某央企可以抓到红队攻击,而你不行?

国家HVV行动从2016年到2024年已经是第9年了,HVV行动目的就是保卫国家关键基础设施的网络安全行动,更是一场实战化的网络攻击与防御实战,这些年来红队攻击手段层出不穷,最为典型的就是 0/N Day、弱口令、社工钓鱼等,也极…

北京青蓝智慧科技ITSS服务经理:长安链ChainBridge“链桥”问世 加速国家级区块链网络互联互通

8月5日,据国家区块链技术创新中心消息,我国首个完全自主控制的区块链软硬件技术系统——长安链,正式推出了全场景技术平台ChainBridge“链桥”。 此平台能够支持所有异构和同构的区块链进行协作,满足跨领域、跨地域、跨行业及跨层…

用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn

写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回(栈帧弹出线程栈)相关的指令xReturn 。 1:正文 因为invokexxx指令和普通的指令不同,会创建一个新的栈帧,并压倒操作数栈中,所以我…

《黑神话:悟空》在PS5上优化得不错 能达到2K/60帧

《黑神话:悟空》是今年最受玩家期待的游戏之一,但许多粉丝担心该作优化不佳,因为其使用的是虚幻5引擎。虚幻5引擎会导致性能问题出现,游戏 科学的新作也将面临同样问题。但有新报告称,《黑神话》PS5版优化得相当不错&a…

UE 后期处理

UE4后期处理材质的一些应用(上) - 哔哩哔哩 (bilibili.com) UE4后期处理材质的一些应用(下) - 哔哩哔哩 (bilibili.com) 后期处理材质的作用 后期处理材质使您能够设置与后期处理一起使用的材质,以创建破坏的视觉屏幕…

免费【2024】springboot 二手图书交易系统的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

PyCharm找不到Python了咋办

Python发生了重装的,且新的路径和原有路径不同,就会出现如下的错误: 解决办法: 点开PyCharm菜单的File/Setting 然后: 有上图的提示,说明需要将原来的venv进行清空。 如此操作之后,原来的红色…

交通预测数据文件梳理:PEMS04

文章目录 前言一、PEMS04.csv文件二、adj_PEMS04.pkl文件三、adj_PEMS04_distance.pkl文件四、PEMS04.npz文件 前言 最近做的实验比较多,对于交通预测数据的各种文件和文件中的数据格式理解愈加混乱,因此打算重新做一遍梳理来加深实验数据集的理解&…

【矩阵对角线求和】求一个3*3矩阵对角线元素之和

求一个3*3矩阵对角线元素之和&#xff0c;使用C语言实现 具体代码&#xff1a; #include<stdio.h>int main(){float a[3][3],sum0;printf("请输入3x3矩阵的元素&#xff08;按行输入&#xff09;&#xff1a;\n");for(int i0;i<3;i){for(int j0;j<3;j)…

AD 飞线显示混乱、错位

执行Design->Netlist->Update Free Primitives From Componet Pads

8月6(信息差)

&#x1f30d;华为最便宜小折叠&#xff01;华为nova Flip今晚发布&#xff1a;搭载麒麟8000芯片 从曝光的跑分信息来看&#xff0c;nova Flip将搭载麒麟8000处理器&#xff0c;也就是nova 12 Pro/Ultra的同款&#xff0c;采用8核心的134组合&#xff0c;大核是1颗2.4GHz的Cor…

如何用ai来完成数据库分析(1)

前言 因一些课程设计要写长篇分析报告&#xff0c;这里借用ai做一篇指导教程&#xff0c;分上下两篇。这篇也会教如何让ai给你你想要的答案&#xff0c;众所周知&#xff0c;现在的ai并不智能&#xff0c;不针对各类厂家&#xff0c;但是放出来的确实表象如此。 但其实问法决…

SAP ABAP代码模板CLASS

此模板也使用OO ALV,创建新程序简单&#xff0c;功能包装独立&#xff0c;用到一个独立的CLASS. 1.ALV类 class ZCL_CM_GUI_ALV definitionpublicfinalcreate public .public section.data REPID type SYREPID .data DYNNR type SYDYNNR .data TOOLBAR type CHAR30 .data USE…