Diffie-Hellman 加密协议介绍 (DH,DHE,ECDHE)

Diffie-Hellman 协议是由 Whitfield Diffie 和 Martin Hellman 在 1976 年提出的一种非对称加密协议。
音标:/ˈdɪ.fi ˈhɛl.mən/


Diffie-Hellman(DH)

DH的工作流程

假设 小博 和 小民 想要通过不安全的网络协商出一个共享的秘密值,具体步骤如下:
(1)约定公开参数
双方事先约定两个公开参数。
一个大素数 p(作为模数)
一个生成元 g(满足 1 < g < p)。
这些参数可以公开传输,不会影响安全性。

(2)生成私钥和计算公钥
小博:
随机选择一个私钥 a(1 < a < p-1)。
根据公式计算自己的公钥:A = g^a mod p
小民:
随机选择一个私钥 b(1 < b < p-1)。
根据公式计算自己的公钥:B = g^b mod p

(3)交换公钥
小博 将自己的公钥 A 发送给 小民。
小民 将自己的公钥 B 发送给 小博。
公钥可以在不安全的信道中传输,因为它们本身并不直接暴露秘密值。

(4)计算共享的秘密值
小博:
使用自己的私钥 a 和 小民 的公钥 B 计算共享的秘密值:Shared Secret = B^a mod p = (g^b mod p)^a mod p = (g^b)^a mod p
小民:
使用自己的私钥 b 和 小博 的公钥 A 计算共享的秘密值:Shared Secret = A^b mod p = (g^a mod p)^b mod p = (g^a)^b mod p
由于模幂运算的性质(g^b)^a mod p = (g^a)^b mod p,所以 小博 和 小民 计算出的共享秘密值是相同的:

如果计算的Shared Secret不一致怎么办?
共享的秘密值计算完成后,会进一步使用主密钥派生出会话密钥(Session Keys),并用这些会话密钥加密后续的通信数据。如果密钥不一致,后续加解密会出问题,从而检测到问题。

遇到问题

虽然 Diffie-Hellman(DH)协议能够安全地协商出共享的秘密值,但它本身并不提供身份验证机制。如果通信双方无法确认对方的身份,就可能遭受中间人攻击(Man-in-the-Middle Attack, MITM)。因为pg为公开参数,且 小博 和 小民 的公钥 AB 是公开的。坏人就可以夹在 小博和小民中间,充当中间人,进行冒充了(小博 — 坏人 — 小民)。

如何避免 Diffie-Hellman 中间人攻击?

使用数字证书进行身份验证
1、服务器生成一个公钥和私钥对。将公钥嵌入到数字证书中,并由受信任的证书颁发机构(CA)签名。
2、客户端在与服务器进行 Diffie-Hellman 密钥交换之前,先验证服务器的数字证书。
验证内容包括:证书是否由可信 CA 签发、证书是否过期、证书中的公钥是否与服务器提供的公钥匹配等。
3、验证成功后,客户端和服务端继续完成 Diffie-Hellman 密钥交换。

哪里避免 Diffie-Hellman 中间人攻击?
此方案里,客户端获取到的服务器的公钥是百分百正确的,客户端的私钥和服务器的公钥计算得到的百分百正确的共享的秘密值。服务端秘钥只能和正确的客户端公钥才能算出与之相等的秘密值,如果不相等就说明存在中间人攻击。

使用预共享密钥(Pre-Shared Key, PSK)
1、如果通信双方事先共享了一个秘密密钥(PSK)。
2、在 Diffie-Hellman 密钥交换完成后,客户端和服务端将协商出的共享秘密值 S 和预共享密钥 K 结合起来,生成一个最终的会话密钥 SK。
2、双方分别使用生成的会话密钥 SK 来加密或签名一条消息,并发送给对方。对方收到消息后,使用自己的会话密钥 SK 验证消息的真实性。如果验证成功,则确认对方的身份合法。
优点:不依赖于外部证书颁发机构(CA)。实现简单,适合小型网络或封闭系统。
缺点:如果预共享密钥泄露,整个系统的安全性将受到影响。

哪里避免 Diffie-Hellman 中间人攻击?
如果存在中间人,她无法知道预共享密钥 K,因此无法正确生成会话密钥 SK。当 客户端或 服务端 收到 中间人 发送的消息时,验证会失败,从而检测到攻击。

使用签名算法验证公钥
1、客户端和服务器双方分别生成自己的非对称密钥对(公钥和私钥)。
2、客户端和服务器双方分别生成自己的 Diffie-Hellman 公钥。
3、发送方使用自己的非对称私钥对 Diffie-Hellman 公钥进行签名。
4、发送方将 Diffie-Hellman 公钥及其对应的签名一起发送给接收方。
5、接收方收到 Diffie-Hellman 公钥和签名后,使用发送方的非对称公钥验证签名的有效性。
6、如果签名验证成功,接收方确认发送方的身份合法。双方继续完成 Diffie-Hellman 密钥交换,协商出共享的秘密值。
7、双方使用协商出的共享秘密值生成会话密钥。会话密钥可以用于后续的加密通信。

哪里避免 Diffie-Hellman 中间人攻击?
签名可以保证准确的拿到对方的公钥,准确的公钥和自己私钥就可以准确的生成共享的秘密值。


DHE(Diffie-Hellman Ephemeral)

静态 Diffie-Hellman
使用固定的长期密钥对(公钥和私钥)进行密钥交换。
特点:如果攻击者获取了服务器的私钥,可以解密所有历史会话。

DHE(Diffie-Hellman Ephemeral)
每次通信时生成临时的密钥对(公钥和私钥),仅用于当前会话。临时密钥对在会话结束后被销毁,无法再次使用。
特点:提供前向安全性(Forward Secrecy),即使长期密钥泄露,也无法解密之前的会话。

前向安全性(Forward Secrecy) 啥意思?
前向安全性(Forward Secrecy,简称 FS)是一种加密通信的安全属性,确保即使长期密钥(如服务器的私钥)在未来被泄露,也无法解密之前已截获的通信内容。换句话说,前向安全性保护了过去的会话免受未来密钥泄露的影响。

DHE 的工作流程

(1)初始化连接
双方(如客户端和服务器)通过某种方式(如 TLS 握手)建立连接。双方约定一组公共参数(如大素数 ( p ) 和生成元 ( g ))。
(2)生成临时密钥对
服务器端:生成一个随机的私钥 ( x ),计算对应的公钥 ( X = g^x mod p )。
客户端:生成一个随机的私钥 ( y ),计算对应的公钥 ( Y = g^y mod p )。
(3)交换公钥
服务器将生成的公钥 ( X ) 发送给客户端。
客户端将生成的公钥 ( Y ) 发送给服务器。
(4)计算共享秘密值
服务器端:使用客户端的公钥 ( Y ) 和自己的私钥 ( x ),计算共享秘密值 ( S = Y^x mod p )。
客户端:使用服务器的公钥 ( X ) 和自己的私钥 ( y ),计算共享秘密值 ( S = X^y mod p )。
由于数学性质,( S = (g^y)^x mod p = (g^x)^y mod p ),因此双方计算出的共享秘密值相同。
(5)生成会话密钥
双方使用共享秘密值 ( S ) 生成会话密钥(Session Key)。会话密钥用于后续的加密通信。
(6)销毁临时密钥对
临时密钥对(私钥 ( x ) 和 ( y ))在会话结束后被销毁,无法再次使用。

DHE 的优势

(1)前向安全性(Forward Secrecy)
DHE 使用临时密钥对,确保每次会话都生成独立的共享秘密值。即使长期密钥(如服务器的私钥)在未来被泄露,也无法解密之前的会话内容。
(2)防止中间人攻击
在实际应用中,DHE 通常结合数字证书使用,以验证通信双方的身份。

DHE 的局限性

(1)计算开销较大
尽管 DHE 的计算效率较高,但相比其他密钥交换算法(如 RSA),它仍然需要更多的计算资源。
特别是在处理大量并发连接时,可能会对服务器的性能产生影响。
(2)依赖公共参数的安全性
DHE 的安全性依赖于公共参数的选择(如大素数 ( p ) 和生成元 ( g ))。
如果这些参数选择不当,可能会导致安全性降低。
(3)需要额外的身份验证机制
DHE 本身只负责密钥交换,无法验证通信双方的身份。
因此,通常需要结合数字证书或其他身份验证机制来确保通信的安全性。


ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)

(1)椭圆曲线密码学(ECC)
椭圆曲线密码学是一种非对称加密技术,基于椭圆曲线上的点运算。
它提供与传统 RSA 或 DH 相同的安全性,但使用更短的密钥长度,从而提高计算效率和性能。

(2)临时密钥对(Ephemeral Keys)
每次通信时生成独立的临时密钥对,仅用于当前会话。临时密钥对在会话结束后被销毁,无法再次使用。
这就保证了前向安全性(Forward Secrecy),即使长期密钥泄露,也无法解密之前的会话。


ECDHE 结合数字证书 的工作原理与 SSL/TLS 协议的核心步骤高度一致,因为 ECDHE 是 SSL/TLS 中常用的密钥交换算法之一。

ECDHE结合数字证书的工作流程

(1) 初始化连接
客户端向服务器发送 ClientHello 消息,表示希望建立安全连接,并提供支持的加密套件列表。
服务器响应 ServerHello 消息,选择一个加密套件(如 ECDHE),并附带自己的数字证书。

(2) 验证服务器身份
参考 如何使用数字证书验证服务器身份

(3) 生成临时椭圆曲线密钥对
服务器和客户端分别生成临时的椭圆曲线密钥对(公钥和私钥)。
服务器:随机选择一个私钥 (d_A),计算对应的公钥 (Q_A)
客户端:随机选择一个私钥 (d_B),计算对应的公钥 (Q_B)。

(4) 交换椭圆曲线公钥
服务器将生成的公钥 (Q_A) 发送给客户端。
客户端将生成的公钥 (Q_B) 发送给服务器。

(5) 验证椭圆曲线公钥
为了防止中间人攻击,服务器需要对发送的椭圆曲线公钥进行签名。
客户端收到椭圆曲线公钥及其签名后,使用服务器数字证书中的公钥验证签名的有效性。

(6)协商共享秘密值
双方使用各自的临时椭圆曲线私钥对方的椭圆曲线公钥,计算出相同的共享秘密值。

(7)生成会话密钥
双方使用协商出的共享秘密值,结合其他参数(如随机数、哈希函数等),生成最终的会话密钥。用于后续的加密通信。

(8)完成握手
双方分别发送 Finished 消息,表示握手完成。从此时起,所有通信都将使用生成的会话密钥进行加密和解密。

ECDHE 的特点
使用临时密钥对(Ephemeral Keys),确保每次会话的独立性。因此保证前向安全性(Forward Secrecy),即使长期密钥泄露,也无法解密之前的会话。

结合的优势
ECDHE 提供高效的密钥交换前向安全性
数字证书验证服务器的身份,确保椭圆曲线公钥是由合法的服务器提供的。提供全局信任机制,避免中间人攻击。

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

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

相关文章

微软OneNote无法同步解决方案

目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑&#xff0c;最方便且免费的多设备笔记同步方案就是微软自家的OneNote&#xff0c;使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote&#xff0c;经常会出现无法同步、同步失败&#xff1…

硬件设计抽象级别详解:门级、RTL级、行为级与HLS

硬件设计抽象级别详解&#xff1a;门级、RTL级、行为级与HLS 引言 在数字系统设计领域&#xff0c;硬件描述语言(HDL)提供了多种抽象级别来描述电路功能和结构。从最底层的门级描述到高层的行为级描述&#xff0c;每一种抽象级别都有其特定的用途和优势。理解这些不同级别以及…

WPF程序使用AutoUpdate实现自动更新

AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库&#xff0c;支持从各种源&#xff08;如GitHub、FTP、HTTP服务器等&#xff09;下载并安装更新。它提供了灵活的配置选项&#xff0c;允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …

Qwen2-Audio:通义千问音频大模型技术解读

引言:从llm到mlm(audio) 大型语言模型(LLM)的发展日新月异,它们在文本理解、生成、推理等方面展现出惊人的能力。然而,交互模态不仅仅依赖于文字,语音、语调、环境音等听觉信息同样承载着丰富的内容。阿里巴巴通义千问团队,推出了 Qwen-Audio 系列模型,这里我们一起…

问题 | ACOS(X) 与 ACOSD(X)的区别

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 [TOC](ACOS(X) 与 ACOSD(X)的区别) ACOSD(X) 是反余弦函数&#xff0c;结果以角度形式表示。ACOS(X) 用于计算 X 中每个元素的反余弦值。当 X 为复数时&#xff0c;结…

两款软件助力图片视频去水印及图像编辑

今天给大家分享两款呼声很高的软件&#xff0c;它们都能处理图片和视频去水印相关的问题。其中一款软件在去水印的同时&#xff0c;图像编辑功能也十分出色&#xff1b;另一款软件专注于图片和视频去水印&#xff0c;去除效果好且支持批量处理。下面就来详细了解一下。 Remover…

Hessian矩阵详解与应用

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 ima 知识库 知识库广场搜索&#…

【软件系统架构】单体架构

一、引言 在软件开发的漫长历程中&#xff0c;架构的选择一直是至关重要的决策。单体架构作为一种经典的架构模式&#xff0c;曾经在许多项目中发挥着不可替代的作用。虽然如今微服务等架构逐渐流行&#xff0c;但理解单体架构对于深入掌握软件架构体系仍然有着重要意义。 二、…

[C++初阶] :从C到C++

目录 C发展史&#xff0c;C语言的特性C新增关键字namespace关键字C语言的命名缺陷&#xff08;重定义现象&#xff09;域与指定访问操作符 “::”命名空间域详解namespace std C的输入与输出函数重载什么是重载,重载的几种常见形态重载的作用注意不构成重载的情况 缺省参数1.全…

[快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发

目录 数据库设计流程 三张表 测试 接口设计 部门管理接口文档 1. 查询所有部门 2. 新增部门 ⭕3. 根据ID查询部门 4. 修改部门 5. 删除部门 &#xff08;部门分页条件查询&#xff09; 错误响应示例 接口设计规范 服务端开发 接口开发 数据库设计流程 01 明确业…

实用插件推荐 -------- 一个可以将任意语言(python、C/C++、go、java等)的程序转换为汇编语言的小插件

链接为&#xff1a; Compiler Explorer 界面&#xff1a; 参考自&#xff1a;如何获取虚函数表及内存分析_com的虚函数表怎么寻找-CSDN博客

vue学习八

十七 组件通信方式 1 props 父传子 //父组件 <script setup>//book来源省略import Subview1 from ./Subview1.vue;function updatebook(updatetimes){book.value.updatetimes updatetimes} </script> <template><Subview1 :book"book" :upd…

51单片机的寻址方式(完整)

目录 一、立即数寻址 二、直接寻址 三、寄存器寻址 四、寄存器间接寻址 五、变址寻址 六、位寻址 七、指令寻址 &#xff08;一&#xff09;绝对寻址 &#xff08;二&#xff09;相对寻址 在 51 单片机中&#xff0c;寻址方式是指在执行指令时&#xff0c;CPU 寻找操作…

每日一题:动态规划

如题&#xff08;基础题&#xff09;&#xff1a; 经典的爬楼梯问题&#xff0c;先从递归想起&#xff1b; class Solution { public:int climbStairs(int n) {if(n1)return 1;if(n2)return 2;return climbStairs(n-1)climbStairs(n-2);} }; 之后可以想办法&#xff08;如哈希…

【论文阅读】FairCLIP - 医疗视觉语言学习中的公平性提升

FairCLIP - 医疗视觉语言学习中的公平性提升 1.研究背景与动机2.核心贡献3.方法论细节4.实验结果与洞见5.总结 FairCLIP: Harnessing Fairness in Vision-Language Learning FairCLIP - 医疗视觉语言学习中的公平性提升 Accepted by CVPR2024 github:链接 1.研究背景与动机…

Linux 入门:权限的认识和学习

目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么&#xff08;权限角色目标权限属性&#xff09; 3).文件访问者的分类&#xff08;角色&#xff09; 4).文…

大语言模型的压缩技术

尽管人们对越来越大的语言模型一直很感兴趣&#xff0c;但MistralAI 向我们表明&#xff0c;规模只是相对而言的&#xff0c;而对边缘计算日益增长的兴趣促使我们使用小型语言获得不错的结果。压缩技术提供了一种替代方法。在本文中&#xff0c;我将解释这些技术&#xff0c;并…

Java高频面试之集合-14

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;为什么 HashMap 的容量是 2 的倍数呢&#xff1f; HashMap的容量被设计为2的幂次&#xff0c;主要基于以下原因&#xff…

TreelabPLMSCM数字化供应链解决方案0608(61页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读&#xff1a;TreelabPLMSCM 数字化供应链解决方案 0608 在当今快速变化的市场环境中&#xff0c;企业面临着诸多挑战&#xff0c;Treelab 数智化 PLM_SCM 行业解决方案应运而生。该方案聚焦市场趋势与行业现状&#xff0c;致力于解…

Docker搭建MySQL主从服务器

一、在主机上创建MySQL配置文件——my.cnf master服务器配置文件路径&#xff1a;/data/docker/containers/mysql-cluster-master/conf.d/my.cnf slave服务器配置文件路径&#xff1a; /data/docker/containers/mysql-cluster-master/conf.d/my.cnf master服务配置文件内容 …