【密码学基础】Diffie-Hellman密钥交换协议

DH介绍

Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。

这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。

但是注意,这个密钥交换协议 只能用于密钥的交换,而不能进行消息的加密和解密。 双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。
这种秘钥交换技术的目的在于使两个用户安全的协商一个会话密钥。

DH密钥交换流程

  • 步骤1:Alice和Bob共同确定公开的大素数 P P P和一个整数 G G G,其中 G G G是 P P P的原根
  • 步骤2:Alice选取一个秘密整数 a a a作为私钥,然后对 a a a进行幂模计算,得到公钥 A A A: A = G a m o d P A=G^a~\mathrm{mod}~P A=Ga mod P,然后将 A A A发给Bob
  • 步骤3:和Alice一样,Bob选取一个秘密整数 b b b作为私钥,然后对 b b b进行幂模计算,得到公钥 B B B: B = G b m o d P B=G^b~\mathrm{mod}~P B=Gb mod P,然后将 B B B发给Alice【 A , B A, B A,B就是所谓的Diffie-Hellman公开值】
  • Alice计算密钥 K 1 = B a m o d P K_1=B^a~\mathrm{mod}~P K1=Ba mod P
  • 和Alice一样,Bob计算密钥 K 2 = A b m o d P K_2=A^b~\mathrm{mod}~P K2=Ab mod P
  • K 1 = B a m o d P = ( G b ) a m o d P = G a b m o d P , K 2 = A b m o d P = ( G a ) b m o d P = G a b m o d P K_1=B^a~\mathrm{mod}~P=(G^b)^a~\mathrm{mod}~P=G^{ab}~\mathrm{mod}~P, K_2=A^b~\mathrm{mod}~P=(G^a)^b~\mathrm{mod}~P=G^{ab}~\mathrm{mod}~P K1=Ba mod P=(Gb)a mod P=Gab mod P,K2=Ab mod P=(Ga)b mod P=Gab mod P,因此, K 1 = K 2 K_1=K_2 K1=K2【 K 1 , K 2 K_1, K_2 K1,K2就是所谓的共享密钥】

安全性分析

对于幂模运算 c = b e m o d m c=b^e~\mathrm{mod}~m c=be mod m,只要给定 b , e , m b, e, m b,e,m,求模幂的过程是非常高效的。另一方面,当 m m m是大素数时,给定 b , c , m b, c, m b,c,m,求指数 e e e的过程是很难的【称为离散对数的难题】。这种单向函数的特性使模幂运算被多次用于密码算法中。

DH通信过程可见,只有 G , P , A , B G, P, A, B G,P,A,B会在传输,而 a , b a, b a,b是不会传输的。同时,因为离散对数的难解,当 G , P G, P G,P选的足够大时,通过 A , B A, B A,B分别推算 a , b a, b a,b是极其困难的。进而,破解出最终的对称密钥K也是极其困难的。

相关推荐
AI柠檬2 分钟前
机器学习:数据集的划分
人工智能·算法·机器学习
mm-q291522272912 分钟前
YOLOv5(PyTorch)目标检测实战:TensorRT加速部署!训练自己的数据集(Ubuntu)——(人工智能、深度学习、机器学习、神经网络)
人工智能·深度学习·机器学习
搞科研的小刘选手21 分钟前
【多所高校合作】第四届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2025)
图像处理·人工智能·机器学习·计算机视觉·数据挖掘·人脸识别·人机交互
B站_计算机毕业设计之家1 小时前
计算机视觉:python车辆行人检测与跟踪系统 YOLO模型 SORT算法 PyQt5界面 目标检测+目标跟踪 深度学习 计算机✅
人工智能·python·深度学习·算法·yolo·目标检测·机器学习
蒋星熠2 小时前
多模态技术深度探索:融合视觉与语言的AI新范式
人工智能·python·深度学习·机器学习·分类·数据挖掘·多分类
weixin_307779136 小时前
构建下一代法律智能助手:需求分析、资源整合与系统设计
人工智能·深度学习·机器学习·需求分析
夫唯不争,故无尤也6 小时前
深度学习Adam优化器核心概念全解析:参数,梯度,一阶动量,二阶动量
pytorch·深度学习·机器学习
一碗绿豆汤12 小时前
机器学习第二阶段
人工智能·机器学习
番石榴AI15 小时前
基于机器学习优化的主图选择方法(酒店,景点,餐厅等APP上的主图展示推荐)
图像处理·人工智能·python·机器学习
数据与后端架构提升之路15 小时前
构建一个可进化的自动驾驶数据管道:规则引擎与异常检测的集成
人工智能·机器学习·自动驾驶