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
英文地址,請注明出處:http://en.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…

【項目思維】嵌入式產業鏈與技術生態

這篇文章深入解析嵌入式產業鏈與技術生態上下游關系,輔助建立嵌入式工程師職業發展認知。嵌入式行業并不是“寫單片機程序”那么簡單,而是一個 從芯片設計到系統集成再到最終產品落地 的復雜生態鏈。理解上下游價值鏈,有助于你成為系統型工程…