HTTPS协议加密原理-模拟黑客攻击

2024-02-18 21:04

本文主要是介绍HTTPS协议加密原理-模拟黑客攻击,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言:

1.对称加密原理

1.1加密原理

1.2预防缺陷

2.非对称加密原理

2.1加密原理

2.2预防缺陷

3.中间人攻击

3.1中间人攻击方法

3.2破解非对称加密

4.证书预防原理

4.1解决中间人攻击

4.2问题探究

(1)中间人有没有可能篡改该证书?

(2)中间人整个掉包证书?

4.3完整流程


前言:

 HTTPS协议对于HTTP协议多了一个加密层,这个加密层通过多种方式对于网络攻击进行防御。

 网络黑客的攻击手段多样,本节主要模拟网络黑客攻击,详解HTTPS的加密工作原理。

序列:HTTP/HTTPS - 006


1.对称加密原理

1.1加密原理

 在网络环境中,黑客往往可以捕获客户端和服务器之间的交互数据,这对于网络数据的安全性大大降低。

 引入对称加密后,这一现象可以得到一定杜绝。

 引入对称加密之后,即使数据被黑客截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容是啥了。 

1.2预防缺陷

 但事情没这么简单,服务器同一时刻其实是给很多客户端提供服务的,这么多客户端,每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能拿到了).

 因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情~

比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是啥~

但是如果直接把密钥明文传输,那么黑客也就能获得密钥了 ,所以引入非对称加密。

2.非对称加密原理

2.1加密原理

客户端在本地生成对称密钥,通过公钥加密,发送给服务器.由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥

服务器通过私钥解密,还原出客户端发送的对称密钥,并且使用这个对称密钥加密给客户端返回的响应数据

后续客户端和服务器的通信都只用对称加密即可,由于该密钥只有客户端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义 

2.2预防缺陷

那么接下来问题又来了:

客户端如何获取到公钥?

客户端如何确定这个公钥不是黑客伪造的?

黑客可以通过中间人攻击进行破解非对称加密。

3.中间人攻击

3.1中间人攻击方法

黑客可以使用中间人攻击,获取到对称密钥。

3.2破解非对称加密

  1. 服务器具有非对称加密算法的公钥S,私钥S
  2. 中间人具有非对称加密算法的公钥M,私钥M'客户端向服务器发起请求,服务器明文传送公钥S给客户端
  3. 中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥S替换成为自己的公钥M,并将伪造报文发给客户端
  4. 客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),自己形成对称秘钥X,用公钥M加
  5. 密X,形成报文发送给服务器
  6. 中间人劫持后,直接用自己的私钥M'进行解密,得到通信秘钥X,再用曾经保存的服务端公钥S加密后,将报文推送给服务器
  7. 服务器拿到报文,用自己的私钥S'解密,得到通信秘钥X
  8. 双方开始采用X进行对称加密,进行通信。但是一切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

4.证书预防原理

4.1解决中间人攻击

 在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个 证书这个证书包含了刚才的公钥,也包含了网站的身份信息.

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

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

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

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

4.2问题探究

(1)中间人有没有可能篡改该证书?

中间人篡改了证书的明文
由于他没有CA机构的私钥,所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后的证书形成匹配的签名
如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不一致,则说明证书已被篡改证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人

(2)中间人整个掉包证书?

因为中间人没有CA私钥,所以无法制作假的证书(为什么?)
所以中间人只能向CA申请真证书,然后用自己申请的证书进行掉包.
这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。
永远记住:中间人没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的

4.3完整流程

左侧都是客户端做的事情,右侧都是服务器做的事情


以上便是模拟网络黑客攻击中HTTPS协议的几个预防方法。

这篇关于HTTPS协议加密原理-模拟黑客攻击的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722454

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源