Diffie-Hellman密钥交换协议

简介: Diffie-Hellman密钥交换协议

Diffie-Hellman也就是DH算法,本章我们将简单介绍一下该算法。

什么是DH算法?


DH算法是Diffie和Hellman两位作者于1976年提出的一种密钥交换协议。它的主要用途是在非安全网络下通信双方密钥的安全建立,从而使通信双方能够使用这个密钥进行消息的加密解密,从而实现通信的安全。DH算法实现的是密钥交换或者密钥协商,通信双方各自生成自己的私钥和公钥,私钥仅对自己可见,然后交换公钥,并根据自己的私钥和对方的公钥,生成最终的密钥secretKey,DH算法通过数学定律保证了双方各自计算出的secretKey是相同的


在基于对称加密进行安全通信的过程中,通信双方需要持有一个共享的密钥。只有这样,由任何一方加密的信息才能由另一方使用相同的密钥解密。

但是在能够安全的通信之前,通信双方应该如何约定一个共享的密钥呢?这就是安全中的经典问题:密钥配送问题。


常用的加密算法

对称加密算法

   流加密(序列密码算法)

   分组加密

   常用的对称加密算法:DES/3DES、AES


非对称加密算法

   RSA    支持变长密钥的公共密钥算法

DH算法的计算过程


Alice和Bob都有一个只有自己知道的私钥,在特定规则(g, a, p)下生成自己的公钥A;

Alice将自己的公钥A,连同g, p共同发给Bob

Bob在收到Alice发送来的公钥A, g, p后,先使用相同的规则((g, a, p))生成自己的公钥B;

再使用Alice的公钥A计算生成共享密钥K

Bob将自己的公钥B发送给Alice即可。(Alice已经有g, p, 因此无需在发送)

Alice在接收到Bob的公钥B后,使用相同的规则计算成功共享密钥K

至此,Alice 和 Bob便同时拥有了共享密钥K。此时由于各自的私钥a,b未在互联网上传播,因此即使存在窥探者Eve,他仅通过公开的A\B\g\p在短时间内无法破解出a,b,K。

因此DH算法便可以在不安全的网络上协商出密钥,基于此构建安全的加密通道。


看到这里可能还是有点懵,所以这里我们就不聊数学原理,因为实际情况太过于复杂,我们就以一种简单的计算案例来进行理解整个DH算法的过程。

a96a802ec97335b2ace66bd59c477472_59b01feb0b064daeb1826ea514119856.png


我们一步一步的来理解。

这里的P是一个质数,正常环境下一般比较大,可以将其进行公开。

g是一个DH算法中所固定的一个数(是一个双方已知的值)。

x和y为A、B双方自己所知道的一个随机值,正常环境中一般比较大。

X和Y时经过A和B双方根据自身已有的值来运算出来的值,将这两个值计算出后,再互相发送给对方进行二次计算。

最后双方经过公式计算出来的Z是相同的。

也就是说,Z就是双方经过DH算法协商出来的密钥。


该算法的好处在于,黑客根据已公开的数据(P,g,X,Y),难以推导出x、y,因为是取模运算,是不可逆的。而且正常环境下P和x,y的值都非常大,这也使破解难度加大。协商出来的Z,在A、B通信时,传输的相当于就是一个对称密钥,相当于是A、B之间进行一个私密的传输,不会造成密钥泄露,而导致中间人劫持(因为A、B双方都不会把协商的密钥Z发出,只会用Z对数据进行加密和解密)


注意:真实情况下这样的密钥协商可能会进行很多次,以达到更高的安全性和可靠性。

相关文章
|
数据可视化 前端开发 搜索推荐
数字孪生可视化开发技术(ThingJS)学习笔记
数字孪生可视化开发技术(ThingJS)学习笔记
1358 0
|
存储 算法 安全
【密码学】非对称加密算法 - ECDH
由于 ECC 密钥具有很短的长度,所以运算速度比较快。到目前为止,对于 ECC 进行逆操作还是很难的,数学上证明不可破解,ECC 算法的优势就是性能和安全性高。实际应用可以结合其他的公开密钥算法形成更快、更安全的公开密钥算法,比如结合 DH 密钥形成 ECDH 密钥协商算法,结合数字签名 DSA 算法组成 ECDSA 数字签名算法。ECDH算法常常用来进行密钥的协商,协商好密钥后,用来解决上面的密钥分配问题,将对称加密的密钥安全的传到对端设备。算法加密/解密数字签名密钥交换RSA✅✅✅❌。
6215 0
|
开发工具 git 索引
Git使用详细教程(4):git rm使用详解
Git使用详细教程(4):git rm使用详解
763 104
|
存储 Serverless 数据库
科普文:云计算服务类型IaaS, PaaS, SaaS, BaaS, Faas说明
本文介绍了云计算服务的几种主要类型,包括IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)、BaaS(后端即服务)和FaaS(函数即服务)。每种服务模式提供了不同的服务层次和功能,从基础设施的提供到应用的开发和运行,再到软件的交付使用,满足了企业和个人用户在不同场景下的需求。文章详细阐述了每种服务模式的特点、优势和缺点,并列举了相应的示例。云计算服务的发展始于21世纪初,随着互联网技术的普及,这些服务模式不断演进,为企业和个人带来了高效、灵活的解决方案。然而,使用这些服务时也需要注意服务的稳定性、数据安全性和成本等问题。
15028 5
|
搜索推荐 数据可视化 数据挖掘
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
本文介绍了一个基于Python Flask框架的招聘数据分析推荐系统,该系统具备用户登录注册、数据库连接查询、首页推荐、职位与城市分析、公司性质分析、职位需求分析、用户信息管理以及数据可视化等功能,旨在提高求职者的就业效率和满意度,同时为企业提供人才匹配和招聘效果评估手段。
913 0
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
|
算法 安全 网络安全
Diffie-Hellman (DH) 算法的工作原理
【8月更文挑战第23天】
3127 0
|
数据安全/隐私保护 Android开发 Windows
2025 年三款免费高清无水印视频录制工具推荐合集
本文介绍了三款免费高清录屏软件:EVCapture、Bandicam 和 屏幕录像机(oCam)。EVCapture 功能强大,支持视频录制与直播,提供分屏录制、实时按键显示等;Bandicam 适合游戏录屏,可自定义录制区域并添加Logo,还支持音频和摄像头设置;oCam 小巧灵活,支持多种视频格式(如GIF、MP4等)及音频、截图功能。三者均无水印,画质清晰,满足不同录屏需求。资源地址已提供,可供下载体验。
12139 0
|
Java Linux Shell
Linux开发和编程指南:搭建环境、Shell脚本与常见编程语言配置及使用
Linux开发和编程指南:搭建环境、Shell脚本与常见编程语言配置及使用
2993 0