首页 > 编程语言 >ECDH秘钥交换算法——使用流程

ECDH秘钥交换算法——使用流程

时间:2024-12-05 17:00:11浏览次数:3  
标签:加密 DH 协商 ECDH 秘钥 算法 ECDHE

目录


背景:
对称加解密算法都需要一把秘钥,但是很多情况下,互联网环境不适合传输这把对称密码,有被中间人拦截的风险。
为了解决这个问题,我们看看ECDH秘钥交换算法是怎么做的?

DH、ECDH 和 ECDHE 的关系

DH、ECDHE不是本文的重点, 知道即可。

Diffie-Hellman密钥交换算法,简称DH,只是一些流程不同,不深究。

ECDH可以拆分为:EC和DH,
EC的含义:

  • elliptic curves——椭圆曲线,从名字就能看出,底层原理类似ECC,

DH的含义

  • Diffie–Hellman——是两位数学牛人的名称,他们发明了这个算法,好像也能代指密钥交换。

ECDH的定义:

  • ECDH全称是椭圆曲线迪菲-赫尔曼秘钥交换(Elliptic Curve Diffie–Hellman key Exchange),主要是用来在一个不安全的通道中协商出一把共享秘钥,这个共享秘钥一般作为“对称加密”的密钥而被双方在后续数据传输中使用。

我们先来说说 ECDH, 客户端和服务端不传输私钥(需要传输公钥), 就可以计算出一样的结果(共有加密资料), 即使协商过程被第三方(中间人)知晓和监听, 也不会泄露密钥。

而 ECDHE(ECDH Ephemeral) 与 ECDH 无本质差别, 他们协商的流程一模一样, 只是ECDHE代表协商出的共有加密资料是临时的, 就算当前的加密资料泄露, 也不会影响其之前的历史数据被解密, 这是使用方式决定的, 大白话意思就是, 我们通过 ECDH 生成的共有加密数据有实效性, 会通过逻辑在一段时间或特定事件后重新协商, 而不是只协商一次, 如果只协商一次, 如果共有加密资料被泄露, 则之前的所有数据都可以解开。 这种共有加密数据资料泄露也不会对历史数据有影响的特性在密码学中被称为 前向安全性

这种共有加密数据资料泄露也不会对历史数据有影响的特性在密码学中被称为 前向安全性——"forward secrecy"。

这个多出来的E的意思是指每次公钥都随机生成。因为像HTTPS里那种是可以从证书文件里取静态公钥的。可以理解ECDHE是ECDH的升级版。

Flow chart

我们可以仿造 TLS1.2 协议来打造一个前后端通信加密的流程, 但是需要注意以下几点:

  • ECDH 本身的协商过程是"明文的", 协商出共享加密数据后使用该数据对 body 进行加密传输才是"安全的";
  • ECDH 变成 ECDHE 是加了时效性, 因此共享加密数据的淘汰策略很重要;
  • ECC 生成的公私钥实际上是 XY 坐标, 考虑前端 JS 出问题生成 XY 重复的可能;

修改后的密钥协商流程如下:
image

之后的请求, 均使用 aesKey1 进行 AES256-CBC 加解密通信,
image

Reference

浅尝 ECDHE 协议流程
https://www.cnblogs.com/chnmig/p/16833780.html

https://cloud.tencent.com/developer/article/1173441

标签:加密,DH,协商,ECDH,秘钥,算法,ECDHE
From: https://www.cnblogs.com/mysticbinary/p/18585306

相关文章

  • 【RAS非对称加密算法】DEMO原理与示例
    fromCrypto.PublicKeyimportRSAfromCrypto.CipherimportPKCS1_OAEP#生成RSA密钥对defgenerate_rsa_keys():"""公钥是通过特定算法从私钥导出的,可以安全地公开。公钥用于加密数据或验证签名。私钥用于解密数据或生成签名。""......
  • 算法网关视频分析网关摄像机实时接入分析平台:P2P远程访问不了如何排查?云端服务平台的
    在现代视频监控系统中,P2P远程访问因其便捷性和高效性而广受欢迎。然而,当遇到P2P远程访问无法成功连接的问题时,有效的排查方法和对云服务*台的理解变得至关重要。本文将为您提供云端服务*台在处理P2P远程访问问题时的排查思路,帮助您更好地理解P2P云功能,并快速定位问题所在。通过深......
  • H7-TOOL自制Flash读写保护算法系列,为复旦微FM33LG和FM33LE制作使能和解除算法,支持在线
    说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。实际上当前已经发布的TOOL版本,已经自制很多了,比如已经支持的兆易创新大部分型号,新唐的大部分型号等。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持......
  • 红包算法,直接看代码
    packagecom.xincai.api.forum.util;importjava.math.BigDecimal;importjava.math.RoundingMode;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;/***@author:tranquil_chen*@Time:2024/3/58:40*@description:红包随机金额生成算法*/pu......
  • 力扣 LeetCode 51. N皇后(Day14:回溯算法)
    解题思路:每次进入backtracking都表示进入下一行每个backtracking中处理当前行的各个列,看各列是否合法isValid中因为是一行一行向下遍历的,所以对应的当前行一定满足条件,没有放置过其他皇后,只需要看对应的列是否满足即可是否符合需要看左上45°和右上45°,之所以是往上看,......
  • 路径规划之启发式算法之五:粒子群算法(Particle Swarm Optimization, PSO)
            粒子群算法(ParticleSwarmOptimization,PSO)是一种基于群体智能的优化算法,最早由Eberhart和Kennedy在1995年提出。该算法模拟了鸟群觅食的行为,通过粒子(即潜在的解)在解空间中的迭代搜索来寻找最优解。一、基本思想        粒子群优化算法中,每个解决......
  • 算法【二】
    题目:202.快乐数-力扣(LeetCode)编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是 无限循环 但始终变不到1。如果这个过程 结果为 1,那么这个数......
  • 算法【一】
    题目: 283.移动零-力扣(LeetCode)给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输......
  • 街面环卫算法视频分析服务器撑伞经营识别:智能分析技术如何管理和守护城市脉络
    随着城市化进程的加快,城市环卫管理面临着越来越多的挑战。如何高效、精准地进行城市环境卫生管理,成为了政府部门和相关企业亟待解决的问题。近年来,视频分析技术的崛起为环卫管理提供了新的解决思路。本文将探讨基于视频分析服务器的街面环卫撑伞经营识别算法的应用。一、背景与......
  • 《算法导论》英文版前言To the teacher第4段研习录:有答案不让用
    【英文版】Departingfromourpracticeinpreviouseditionsofthisbook,wehavemadepubliclyavailablesolutionstosome,butbynomeansall,oftheproblemsandexercises.OurWebsite,http://mitpress.mit.edu/algorithms/,linkstothesesolutions.Yo......