当前位置: 首页 > article >正文

从颜料混色到网络安全:DH算法的跨界智慧

一、颜料混色的秘密

想象一下,你和朋友各自有一罐私密的颜料,但你们想共同调出一种只有彼此知道的新颜色,而旁观者即使看到你们的操作也无法复现。奇怪的是,你们全程没有直接交换颜料,却能达成共识——这就是**迪菲-赫尔曼密钥交换(DH算法)**的绝妙比喻。

1976年,密码学家Whitfield Diffie和Martin Hellman提出了这一革命性的算法,解决了如何在公开信道安全交换密钥的难题。今天,它仍是HTTPS、VPN、SSH等协议的基石。但它的核心思想,竟与颜料混色有着异曲同工之妙。

假设Alice和Bob想协商一个共同的秘密颜色,但他们的通信被 eavesdropper(窃听者)Eve监视:

  1. 公开配方:Alice和Bob先约定一种公共基础颜色(比如黄色),所有人都能看到。
  2. 私密调色
    • Alice私下选择一种秘密颜料(红色),混入公共黄色,得到橙红色,发给Bob。
    • Bob也选择自己的秘密颜料(蓝色),混入黄色,得到黄绿色,发给Alice。
  3. 最终混合
    • Alice将收到的黄绿色,再混入自己的红色,得到棕褐色
    • Bob将收到的橙红色,混入自己的蓝色,同样得到棕褐色

关键点:Eve全程看到了黄、橙红、黄绿色,但她无法分离出Alice的红色或Bob的蓝色,因此无法推导出最终的棕褐色。

二、迪菲-赫尔曼Diffie–Hellman 密钥交换

DH算法的核心是为了生成一个共享的秘钥,只有交流的双方知道这个秘钥,因此即使密文被截获也不用担心。

  • 不直接传输密钥,而是通过数学计算让双方各自推导出相同的密钥。
  • 即使攻击者截获所有交换的数据,也无法计算出共享密钥(除非能解决离散对数问题)。
  • 仅用于密钥交换,不用于加密/解密消息(通常结合对称加密使用,如 AES)。

三、秘钥交换流程

假设 Alice 和 Bob 要在不安全的信道上协商一个共享密钥:

步骤 1:协商公共参数

Alice 和 Bob 公开协商:

  • 一个大素数 P
  • 一个生成元 G (通常是2或者5)

⚠️ 注意PG 可以公开,但必须足够大(如 2048 位),否则可能被暴力破解。

步骤 2:双方生成自己的私钥和公钥
  • Alice
    • 随机选择一个私钥 a a a(保密)
    • 计算公钥 A = G a m o d P A=G^a \ mod    P A=Ga mod  P,并发送给 Bob
  • Bob
    • 随机选择一个私钥 b b b(保密)
    • 计算公钥 B = G b m o d P B=G^b \ mod    P B=Gb mod  P,并发送给 Alice
步骤 3:计算共享密钥
  • Alice 收到 B B B,计算:

    K = B a m o d P = G a b m o d P K=B^a mod  P= G ^ {ab} mod  P K=Bamod  P=Gabmod  P

  • Bob 收到 A A A,计算:

    K = A b m o d P = G a b m o d P K=A^b mod  P= G ^ {ab} mod  P K=Abmod  P=Gabmod  P

  • 最终,Alice 和 Bob 得到相同的 K K K,可用于对称加密(如 AES)。

四、示例

公开P和G

P = 23 , G = 5 P=23,G=5 P=23G=5

Alice

选择私钥 a = 6 a = 6 a=6,计算公钥 A = 5 6 m o d 23 = 8 A = 5 ^ 6 \ mod \ 23 = 8 A=56 mod 23=8

Bob

选择私钥 b = 15 b=15 b=15,计算公钥 B = 5 15 m o d 23 = 19 B = 5 ^ {15} \ mod \ 23 = 19 B=515 mod 23=19

Alice和Bob交换公钥

Alice计算共享秘钥 K = B a m o d P = 1 9 6 m o d 23 = 2 K = B^a \ mod \ P = 19 ^ 6 \ mod \ 23 = 2 K=Ba mod P=196 mod 23=2

Bob计算共享秘钥 K = A b m o d P = 8 15 m o d 23 = 2 K = A^b \ mod \ P = 8 ^ {15} \ mod \ 23 = 2 K=Ab mod P=815 mod 23=2

最终双方得到共享秘钥 K = 2 K=2 K=2,可用此秘钥加密双方信息。

五、为什么DH算法安全

离散对数问题

攻击者即使截获 P , G , A , B P,G,A,B P,G,A,B 也无法计算 a 或 b,因为: A = G a m o d P A=G^a \ mod \ P A=Ga mod P,求 a a a 是离散对数问题,目前没有高校的算法可以在合理的时间内计算 a a a,除非 p p p 太小。

前向保密

即使攻击者长期记录所有通信,并在未来破解了 a 或 b,也无法解密过去的会话,因为每次会话的 a 和 b 都是随机生成的。

六、存在的问题

DH 算法本身不提供身份认证,因此可能遭受 中间人攻击(攻击者冒充 Alice 或 Bob)

相关文章:

从颜料混色到网络安全:DH算法的跨界智慧

一、颜料混色的秘密 想象一下,你和朋友各自有一罐私密的颜料,但你们想共同调出一种只有彼此知道的新颜色,而旁观者即使看到你们的操作也无法复现。奇怪的是,你们全程没有直接交换颜料,却能达成共识——这就是**迪菲-赫…...

C++GO语言socket套接字

目录 01 06-socket-client-server通信过程分析 02 07-socket-server-单次处理 03 08-socket-client 01 09-socket-server-多连接建立 02 10-socket-client多次发送数据 01 -socket-client-server通信过程分析 ### - Server Demo接收一个链接,而且只能发送一次数…...

WebSocket:实时通信的新时代

在现代Web应用中,实时通信变得越来越重要。传统的HTTP协议虽然能够满足基本的请求-响应模式,但在需要频繁更新数据的场景下,其效率和性能显得捉襟见肘。WebSocket协议应运而生,它提供了一种在单个TCP连接上进行全双工通信的机制&a…...

(四)YOLO_World-SAM-GraspNet的mujoco抓取仿真(操作记录)

一、创建虚拟环境 这里直接克隆之前项目的环境 (二)Graspnet在mujoco的仿真复现(操作记录)_graspnet仿真-CSDN博客 conda create -n graspnet --clone mujoco_graspnet conda activate graspnet 二、安装额外的环境包 pip in…...

IT/OT 融合架构下的工业控制系统安全攻防实战研究

1. 引言 随着工业 4.0 和智能制造的浪潮席卷全球,信息技术 (IT) 与运营技术 (OT) 的融合已成为不可逆转的趋势。这种融合旨在通过实时数据交换和分析,打破传统的信息孤岛,显著提升生产效率、优化决策、降低运营成本并增强市场竞争力。IT 系统…...

基于Qt的app开发第六天

写在前面 博主是一个大一下的计科生,现在正在做C面向对象程序设计的课程设计,具体功能可以看本专栏的第一篇博客。 目前的进度是:配好MySQL驱动->设计完界面->实现各个界面的切换 这一篇博主要初步实现待办板块的功能,即新建…...

npm create vite@latest my-vue-app 解读

背景发荧光的样式。 filter属性的学习:filter - CSS:层叠样式表 | MDN 复习一下em 组件的调用: 是msg让“ViteVue”显示出来的!! a标签的targte属性: 组件之间怎么传值的: ,没看懂code标签怎么…...

【SpringCloud GateWay】Connection prematurely closed BEFORE response 报错分析与解决方案

一、背景 今天业务方调用我们的网关服务报错: Connection prematurely closed BEFORE response二、原因分析 三、解决方案 第一步: 增加 SCG 服务的JVM启动参数,调整连接获取策略。 将连接池获取策略由默认的 FIFO(先进先出)变更为 LIFO&#xff08…...

ABP vNext 集成高性能、高可靠 MQTT 服务器实战

🚀 ABP vNext 集成高性能、高可靠 MQTT 服务器实战 🔧 本文将从实战出发,带你一步步在 ABP vNext 框架中集成 MQTT 服务,构建一个高性能、高可靠的物联网通信平台。适合 IoT 系统、智能硬件平台和实时监控场景。 🛠️ …...

PD快充诱骗协议芯片XSP04D与主板共用一个Type-C和电脑传输数据

随着智能电子产品的广泛应用,快充方案越来越受到重视,且迭代次数也更加频繁。在一些使用频率较高、耗电较大的电子产品中,快充方案也成为了大多数人的追求,它能很大程度上缩短充电的时间,例如XSP04D这款快充诱骗协议方…...

goland无法debug

goland无法使用debug,修复_goland无法debug-CSDN博客...

ECLIC中断流程及实际应用 —— RISC-V中断机制(二)

在长期的嵌入式开发实践中,对中断机制的理解始终停留在表面层次,特别当开发者长期局限于纯软件抽象层面时,对中断机制的理解极易陷入"知其然而不知其所以然"的困境,这种认知的局限更为明显;随着工作需要不断…...

【网络分析工具】网络工具wireshark、TCPdump、iperf使用详解

这里写目录标题 1. wireshark1.1. 过滤包1.2. 常见分析 2. tcpdump3. iperf 1. wireshark **ip.dst eq 10.0.0.21** 是用于网络流量分析工具(例如 Wireshark 或 tcpdump)的过滤器表达式。 它的作用是筛选出所有目标IP地址为 10.0.0.21 的数据包 IP.add…...

debian中笔记本的省电选择auto-cpufreq

在reddit中,看评论区出现这个软件,于是打算尝试一下,应该能对不使用电源时笔记本的省电起到一定的作用。 https://github.com/AdnanHodzic/auto-cpufreq?tabreadme-ov-file#why-do-i-need-auto-cpufreq 作用 One of the problems with Linux…...

力扣热题100之环形链表 II

题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…...

【记录】HunyuanVideo 文生视频工作流

HunyuanVideo 文生视频工作流指南 概述 本指南详细介绍如何在ComfyUI中使用腾讯混元HunyuanVideo模型进行文本到视频生成的全流程操作,包含环境配置、模型安装和工作流使用说明。 参考:https://comfyui-wiki.com/zh/install/install-comfyui/install-c…...

SpringCloud之Ribbon基础认识-服务负载均衡

0、Ribbon基本认识 Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡的工具。 Ribbon 主要功能是提供客户端负载均衡算法和服务调用 Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。 Ribbon 会基于某种规则(如简单…...

[Java实战]Spring Boot 静态资源配置(十三)

[Java实战]Spring Boot 静态资源配置(十三) 引言 静态资源(如 HTML、CSS、JavaScript、图片等)是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理,但面对复杂场景(如多模块项目、CDN 集成…...

重生之我在2024学Fine-tuning

一、Fine-tuning(微调)概述 Fine-tuning(微调)是机器学习和深度学习中的一个重要概念,特别是在预训练模型的应用上。它指的是在模型已经通过大量数据训练得到一个通用的预训练模型后,再针对特定的任务或数据…...

Selenium Web自动化测试学习笔记(一)

自动化测试 技术手段模拟人工,执行重复性任务,准确率100%,高于人工 selenium 可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以&#x…...

2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业​​认证

2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业​​认证 立刻预约吧 文章目录 2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业​​认证立刻预约吧🔍 探索 AI 向量搜索的强大功能!🎯 学习路径目标&#x1f6e…...

服务器不备案有影响吗

在当今数字化的时代,服务器成为了众多企业和个人开展业务、展示自我的重要工具。然而,有一个问题常常被忽视,那就是服务器不备案到底有没有影响? 答案是肯定的!服务器不备案,影响可不小。据相关数据显示&a…...

EasyRTC嵌入式音视频通话SDK驱动智能硬件音视频应用新发展

一、引言 在数字化浪潮下,智能硬件蓬勃发展,从智能家居到工业物联网,深刻改变人们的生活与工作。音视频通讯作为智能硬件交互与协同的核心,重要性不言而喻。但嵌入式设备硬件资源受限,传统音视频方案集成困难。EasyRT…...

力扣-21.合并两个有序链表

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 class Solution { public:ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {ListNode *l new ListNode(-1);ListNode *p l;while (list1 &&…...

多线服务器具有什么优势

在当今数字化飞速发展的时代,多线服务器宛如一位低调的幕后英雄,默默为我们的网络世界提供着强大的支持。那么,多线服务器到底具有哪些令人瞩目的优势呢 首先,多线服务器的最大优势之一就是网络访问的高速与稳定。想象一下&#x…...

ESP32 PWM音频应用及场景说明

ESP32芯片的PWM(脉冲宽度调制)功能在音频应用中具有广泛用途,尤其是在低成本、低功耗的场景中。以下是具体的应用举例和应用场景说明: 一、ESP32 PWM音频应用举例 1. 简单音频播放 实现方式:通过PWM生成模拟音频信号&…...

C++.变量与数据类型

C++变量与数据类型 1. C++变量与数据类型1.1 基本数据类型1.2 复合数据类型2.1 定义方式2.2 常量类型3.1 数据类型修饰符3.2 存储类修饰符3.3 类访问修饰符4.1 算术运算符4.2 关系运算符4.3 逻辑运算符4.4 赋值运算符4.5 条件运算符4.6 位运算符5. 总结5.1 变量与数据类型5.2 常…...

Compose笔记(二十二)--NavController

这一节主要了解一下Compose中的NavController,它是实现导航功能的核心组件,提供了强大而灵活的页面管理能力,用于管理导航图中的目的地和执行导航操作。 API navigate(route: String) 含义:导航到指定路由的目的地。 作用&#x…...

SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)

目录 SELF JOIN(自连接) CROSS JOIN(交叉连接 / 笛卡尔积) 示例: SELF JOIN CROSS JOIN 如果没有 DATEDIFF() 函数怎么办? 🔍 SELF JOIN vs CROSS JOIN 对比总结 SELF JOIN(自…...

互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1

互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1 场景背景 在某互联网大厂的技术面试中,技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情,但回答问题时总是带着幽默感,有时甚至让人哭笑不得。…...