ECDH (椭圆曲线迪菲-赫尔曼密钥交换)

文章目录

    • 一、什么是ECDH?
    • 二、为什么需要 ECDH?要解决什么问题?
    • 三、原理与图示
    • 四、核心比喻:混合颜料
    • 五、技术实现步骤
      • 1. 约定公共参数
      • 2. 生成密钥对
      • 3. 交换公钥
      • 4. 计算共享密钥
      • 5. 密钥派生
    • 六、注意事项
    • 七、安全性基础
    • 八、优势特点
    • 九、典型应用场景
    • 十、相关标准


ECDH是一个非常重要且广泛应用的密码学协议,用于在不安全的通信通道上安全地生成一个共享的密钥

一、什么是ECDH?

ECDH (Elliptic Curve Diffie-Hellman) 是一种基于椭圆曲线密码学(ECC)的密钥协商协议。它允许两个通信方在不安全的信道上,通过交换公开信息,独立地推导出一个相同的共享秘密(Shared Secret)。
该共享秘密通常作为对称加密算法(如AES)的密钥,用于加密后续的通信内容。

其安全性依赖于椭圆曲线离散对数问题(ECDLP) 的计算困难性:已知椭圆曲线上的点 Gk * G,计算私钥 k 在计算上是不可行的。

二、为什么需要 ECDH?要解决什么问题?

想象一下,Alice 和 Bob 想在网上安全地聊天,但他们之间只有一个公开的、可能被窃听的网络(比如公共Wi-Fi)。

  1. 问题:
    他们需要同一个密钥来用 AES 加密和解密消息。但如何把这个密钥通过不安全的网络传给对方?如果直接发送密钥,窃听者 Eve 也会得到它。

  2. 解决方案:
    使用 ECDH。他们不需要直接传递密钥本身,而是通过交换一些公开的信息,并结合自己私密的信息,各自独立地计算出同一个共享密钥。即使 Eve 听到了所有公开信息,她也无法计算出这个密钥。

这解决了密钥分发的难题。

三、原理与图示

ECDH的核心过程可以用下图清晰地展示。它完美地演绎了如何从公开的交换中产生一个私有的共享密钥。

Bob
不安全的公共通道
Alice
生成私钥 b
计算公钥 B = b * G
计算 S = b * A
A
B
生成私钥 a
计算公钥 A = a * G
计算 S = a * B
共享密钥 S = a * b * G

数学原理:
结合律确保了双方计算的最终结果一致。
a * B = a * (b * G) = (a * b) * G = (b * a) * G = b * (a * G) = b * A

攻击者即使截获了公钥 A 和 B,由于无法解决ECDLP问题(从 A 求 a 或从 B 求 b),因此也无法计算出共享秘密 a * b * G

四、核心比喻:混合颜料

  1. 公共参数:双方使用相同的"黄色"颜料(椭圆曲线参数)
  2. 私密信息:Alice 选择"红色",Bob 选择"蓝色"(各自的私钥)
  3. 公开交换
    • Alice 发送"黄+红=橙红"(她的公钥)
    • Bob 发送"黄+蓝=绿蓝"(他的公钥)
  4. 最终共享
    • Alice 计算"绿蓝+红=黄褐"(共享密钥)
    • Bob 计算"橙红+蓝=黄褐"(共享密钥)
  5. 安全性:窃听者无法从公开的混合颜色中分离出原始私密颜色

五、技术实现步骤

1. 约定公共参数

  • 选择相同的椭圆曲线(如 secp256k1、P-256)
  • 确定曲线上的公共基点 G

2. 生成密钥对

Alice 端:

  • 生成随机私钥 a(大整数)
  • 计算公钥 A = a * G(椭圆曲线标量乘法)

Bob 端:

  • 生成随机私钥 b(大整数)
  • 计算公钥 B = b * G

3. 交换公钥

  • Alice 将公钥 A 发送给 Bob
  • Bob 将公钥 B 发送给 Alice

4. 计算共享密钥

Alice 计算: S = a * B
Bob 计算: S = b * A

由于椭圆曲线乘法满足结合律:
a * B = a * (b * G) = b * (a * G) = b * A

5. 密钥派生

通常对共享点 S 的 x 坐标进行哈希处理,得到最终会话密钥(Session key)。

六、注意事项

事项说明与建议
曲线选择 (Curve Selection)使用标准化、广泛审计的曲线
NIST 曲线prime256v1 (P-256), secp384r1 (P-384)
其他安全曲线curve25519 (常用于现代协议如 Signal)
避免使用冷门、未经验证或可能包含后门的曲线。
密钥派生函数 (KDF - Key Derivation Function)绝对不要直接使用原始共享秘密
原始ECDH输出的字节串可能缺乏均匀熵分布。必须使用 HKDF 等密码学安全的KDF对其进行加工,以生成长度固定、随机性均匀的加密密钥材料。这是生产环境中的必须步骤
前向保密 (Forward Secrecy)基础ECDH不天然具备前向保密。为实现FS(推荐),应使用 ECDHE (Ephemeral,短暂地),即每次会话都生成临时的密钥对。这样,即使攻击者获取了某一方的长期私钥,也无法解密过去的通信会话。
身份验证 (Authentication)基础ECDH易受中间人攻击 (MITM)。协议本身不验证公钥所属者的身份。
解决方案:必须结合数字签名(如ECDSA)或数字证书来对交换的公钥进行认证,确保你正在与预期的通信方而非攻击者建立密钥。
侧信道攻击 (Side-Channel Attacks)软件实现必须能够抵抗时序攻击(Timing Attacks)等侧信道攻击。使用像 OpenSSL、Libsodium 这样的成熟密码学库,而不是自己实现底层算法,这些库通常已经包含了针对此类攻击的防护。
随机数生成 (Random Number Generation)私钥 ab 必须是密码学安全的真随机数。使用安全的随机数生成器(如 /dev/urandom、CryptGenRandom、BCryptGenRandom)。弱的随机数生成会导致私钥被预测,整个协议安全形同虚设。

七、安全性基础

基于椭圆曲线离散对数问题(ECDLP) 的计算困难性:

  • 已知公钥 A 和基点 G,计算私钥 a 在计算上不可行
  • 即使攻击者截获所有公开参数(A, B, G),也无法计算出共享密钥 S

八、优势特点

特性描述
前向保密每次会话使用临时密钥对,长期私钥泄露不影响历史会话安全
高效性较短的密钥长度(256位)即可提供足够安全性,计算资源需求低
带宽友好公钥尺寸小,适合带宽受限环境

九、典型应用场景

  • TLS/SSL:保护 HTTPS 连接安全
  • SSH:安全远程访问
  • 加密消息:Signal、WhatsApp 等端到端加密
  • 区块链:比特币/以太坊地址生成和交易签名
  • VPN:WireGuard 等现代VPN协议
  • 物联网:设备间安全通信

十、相关标准

  • NIST 曲线系列:P-256、P-384、P-521
  • 比特币曲线:secp256k1
  • 国家标准:SM2(中国商用密码算法)

注意:实际应用中需要结合适当的哈希函数和密钥派生函数(如 HKDF)来从共享密钥派生出实际使用的加密密钥。

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

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

相关文章

Spring Boot实战:打造高效Web应用,从入门到精通

目录一、Spring Boot 初相识二、搭建开发环境2.1 安装 JDK2.2 安装 IDE(以 IntelliJ IDEA 为例)2.3 初始化 Spring Boot 项目三、Spring Boot 基础配置3.1 配置文件详解(application.properties 和 application.yml)3.2 自定义配置…

2025网络安全宣传周知识竞赛答题活动怎么做

网络安全答题PK小程序可以结合竞技性、趣味性和知识性,设计以下核心功能模块,提升用户参与度和学习效果:一、核心PK功能实时对战匹配 随机匹配在线用户(按段位/积分相近原则) 好友定向PK(支持分享邀请对战&…

echo、seq、{}、date、bc命令

文章目录echo、seq、{}、date、bc命令echo案例seq命令案例{}花括号列表扩展序列扩展嵌套扩展datebc(高精度计算器)echo、seq、{}、date、bc命令 echo echo命令是一个常用的Shell命令,用于在终端上输出文本。它的基本语法如下: echo [option] [string]…

Vue2之Vuex

文章目录 数据准备新建项目选择模块安装vscode工具打开 删除无用文件删除src/assets文件下的所有内容删除src/components文件下的所有内容修改src/app.vuevscode运行项目 一、 概述1.是什么2. 使用场景3.优势4 Vuex流程图5.注意: 二、需求: 多组件共享数据创建三个组…

2025具身智能赛道观察:技术、产业与视频基础设施

引言 2025 年,具身智能(Embodied Intelligence)毫无疑问已经成为全球资本追逐的“风口赛道”。从人形机器人、无人配送,到低空经济和智能驾驶,几乎所有与物理世界深度结合的领域,都被纳入具身智能的广义范…

【商业银行风控模型(python版本,实操合集,附带anaconda安装教程,持续更新)】

Anaconda(Python工具)安装1.Mac中安装Anaconda2.点击“Free Download”下载后,点击“Skip registration”,跳过注册环节。 3.conda list4.安装完成Anaconda基本操作命令 # 查看当前虚拟环境下的所有包 conda list # 查看某个特定的…

FPGA DDR 地址映射-黄金法则

FPGA 中 DDR 控制器的地址映射顺序(Address Mapping Order) 是优化设计速度(带宽和效率) 的关键。简单来说,地址映射顺序决定了线性地址如何映射到 DDR 芯片内部的物理结构(Bank、Row、Column)。…

网络安全设备监控指标

网络安全设备监控指标 近日看到一篇设备情况汇报,内容写得有些欠缺,因此我特意问了一下AI,整理了一下思路。以下是监控需要关注的性能指标。权当抛砖引玉。根据指标可以做监控,也可以做调研指标。 业务承载能力 吞吐量&#xff08…

JSP程序设计之JSP指令

1、JSP指令概念与分类 (1)概念 JSP指令相当于在编译期间的命令,用来设置与整个JSP页面相关的属性,它并不直接产生任何可见的输出,用来设置全局变量、声明类、要实现的方法和输出内容的类型等。在JSP文件被解析为Java…

Generative Art with p5.js: Creating Beauty from Code

Are you ready to make something truly beautiful with p5.js? Forget about boring bar charts and sales data—let’s create art that moves, breathes, and responds to your touch. We’re going to explore generative art, where code becomes your paintbrush and a…

Wi-Fi技术——网络安全

一、数据帧的安全 1、无线网络安全的发展 理论上无线电波范围内的任何一个站点都可以监听并登录无线网络,所有发送或接收的数据,都有可能被截取,因此无线网络安全十分重要。 原始802.11的安全策略为WEP,其存在根本性的漏洞&#x…

Java提供高效后端支撑,Vue呈现直观交互界面,共同打造的MES管理系统,含完整可运行源码,实现生产计划、执行、追溯一站式管理,提升制造执行效率

前言在当今竞争激烈的制造业环境中,企业面临着提高生产效率、降低成本、保证产品质量以及快速响应市场变化等多重挑战。制造执行系统(MES,Manufacturing Execution System)作为连接企业上层计划管理系统(如ERP&#xf…

【macOS】垃圾箱中文件无法清理的常规方法

【macOS】垃圾箱中文件无法清理的方法如果外接 SSD 移动盘上的垃圾文件无法删除, 可能是由于文件系统格式不兼容、文件被占用、权限不足等原因导致的, 以下是一些常见的解决方法:检查移动硬盘文件系统格式:如果移动硬盘是 NTFS 格…

鸿蒙ArkTS 核心篇-15-条件渲染(组件)

目录 根据逻辑条件结果,渲染不同的 UI 内容 DevEco Studio代码实战 预览效果 总结 根据逻辑条件结果,渲染不同的 UI 内容 DevEco Studio代码实战 let num: number 20Entry Component struct Index {build() {Column() {if (num 1) {Text(文本 1)} …

大模型微调显存内存节约方法

大模型微调时节约显存和内存是一个至关重要的话题,尤其是在消费级GPU(如RTX 3090/4090)或资源有限的云实例上。下面我将从显存(GPU Memory) 和内存(CPU Memory) 两个方面,为你系统地…

Linux笔记12——shell编程基础-6

字符截取命令一、cut命令功能:用于从文件或标准输入中提取指定字段或列语法:cut [选项] 文件名-f:列号,提取第几列,默认识别制表符分割出来的列(列号之间用,隔开)-d:分隔符&#xff…

高效浏览器标签页管理:Chrome扩展开发完全指南

Hi,我是前端人类学(之前叫布兰妮甜)! 在信息过载的时代,浏览器标签页管理已成为提高工作效率的关键技能。本文将介绍如何开发一个功能完整的Chrome扩展,帮助用户高效管理浏览器标签页,并探讨其实…

从 WPF 到 Avalonia 的迁移系列实战篇3:ResourceDictionary资源与样式的差异与迁移技巧

从 WPF 到 Avalonia 的迁移系列实战篇3:ResourceDictionary资源与样式的差异与迁移技巧 我的GitHub仓库Avalonia学习项目包含完整的Avalonia实践案例与代码对比。 我的gitcode仓库是Avalonia学习项目。 文中主要示例代码均可在仓库中查看,涵盖核心功能实现与优化方案…

基于Springboot的音乐媒体播放及周边产品运营平台(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的音乐媒体播放及周边产品运营平台(有报告)。Javaee项目,springboot项目。项目介绍: 采用M(model)V(view)C(controller&#xff09…

【项目思维】嵌入式产业链与技术生态

这篇文章深入解析嵌入式产业链与技术生态上下游关系,辅助建立嵌入式工程师职业发展认知。嵌入式行业并不是“写单片机程序”那么简单,而是一个 从芯片设计到系统集成再到最终产品落地 的复杂生态链。理解上下游价值链,有助于你成为系统型工程…