听说这玩意可以安全交换密钥 —— Diffie-Hellman 算法
Diffie-Hellman
密钥的配送一直是一个难以解决的问题,我们始终无法保证在不安全的线路中安全传递密钥。直到 Diffie-Hellman 密钥交换算法出现:一种确保共享密钥安全穿越不安全网络的方法。
Diffie-Hellman 密钥交换算法,是由 Whitfield Diffie 和 Martin Hellman 在1976年共同提出的一个奇妙的密钥交换协议。这个算法的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。(注意:Diffie-Hellman 算法是一种建立密钥的方法,而不是加密方法,只能用于密钥的交换,而不能进行消息的加密和解密)
Diffie-Hellman 算法描述
- 有两个全局公开的参数,一个素数 p 和一个整数 a,其中 a 是 p 的本原元(a mod p,a2 mod p,a3 mod p…是互不相同的数,而且以某种排列包含从 1 到 p-1 的所有整数)。
- 假设有用户 A 和 B 希望安全交换一个密钥。
- A 用户生成一个作为私有密钥的随机数 XA(XA < p),这个随机数只能 A 知道,然后计算公开密钥 YA = aXA mod p,并发送给 B 用户。
- B 用户生成一个作为私有密钥的随机数 XB(XB < p),这个随机数只能 B 知道,然后计算公开密钥 YB = aXB mod p,并发送给 A 用户。
- A 用户使用 XA 和收到的 YB 计算共享密钥 K = YBXA mod p = (aXB mod p)XA mod p = aXB*XA mod p。
- B 用户使用 XB 和收到的 YA 计算共享密钥 K = YAXB mod p = (aXA mod p)XB mod p = aXA*XB mod p。
- 此时双方计算出相同密钥 K,成功交换共享密钥,使用密钥 K 进行通信。
Diffie-Hellman 安全性
在 Diffie-Hellman 算法中,公开的变量是 p、a、YA、YB ,共享密钥 K = aXA*XB mod p。其中 p、a 变量已知,问题在于已知 YA、YB 求 XA、XB。这个问题涉及到离散对数问题,要解决是非常困难的。所以,我们可以相信 Diffie-Hellman 算法是非常安全的。
Diffie-Hellman 缺点
- 没有提供双方身份的任何信息。
- 它是计算密集性的,因此容易遭受阻塞性攻击,即对手请求大量的密钥。
- 受攻击者花费了相对多的计算资源来求解无用的幂系数而不是在做真正的工作。
- 没办法防止重演攻击。
- 容易遭受中间人的攻击。
Oakley 算法是对 Diffie-Hellman 密钥交换算法的优化,它保留了后者的优点,同时克服了其弱点。
听说这玩意可以安全交换密钥 —— Diffie-Hellman 算法相关推荐
- HTTPS 和 SSL/TLS 协议:密钥交换(密钥协商)算法及其原理
转自:https://blog.csdn.net/andylau00j/article/details/54583769 本系列的前一篇,咱们聊了"密钥交换的难点"以及" ...
- 扫盲 HTTPS 和 SSL/TLS 协议[3]:密钥交换(密钥协商)算法及其原理
文章目录 ★密钥交换/协商机制要达到啥目的? ★密钥交换/协商机制的几种类型 ★基于 RSA 的密钥协商 ★基于 DH 的密钥协商 ★DH 的变种 ★基于 PSK 的密钥协商 ★基于 SRP 的密钥协 ...
- Diffie Hellman密钥交换
In short, the Diffie Hellman is a widely used technique for securely sending a symmetric encryption ...
- 隐私计算加密技术基础系列-Diffie–Hellman key exchange
1 密码学 1.1 背景 隐私计算(Privacy-preserving computation)是指在保证数据提供方不泄露原始数据的前提下,对数据进行分析计算的一系列信息技术,保障数据在流通与融合过 ...
- DH密钥交换算法的python实现——Diffie–Hellman key exchange
文章目录 前言 DH交换算法简介 DH算法 Python算法的实现 后记 前言 DH交换算法简介 Deffie-Hellman(简称 DH) 密钥交换是最早的密钥交换算法之一,它使得通信的双方能在非安 ...
- openssl-key-exchange 基于ECDH (Elliptic-Curve Diffie–Hellman) 的密钥交换流程
openssl-key-exchange 本文摘自我在GitHub的开源项目 https://github.com/zhoupeng6d/openssl-key-exchange 简介 该方案介绍一种 ...
- DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换及RSA(学习笔记)
DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换(学习笔记),来自B站: [不懂数学没关系]DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换_哔哩哔哩_bilibili ...
- Elliptic curve Diffie–Hellman
原文地址:https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman Elliptic curve Diffie–Hellm ...
- Diffie–Hellman key exchange
原文地址:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Diffie–Hellman key exchange F ...
最新文章
- 清华姚班/智班2020级新生来了!中国奥数新晋“一姐”在列,湖南、湖北人数最多...
- visual studio visual studio 2005 快捷键大全
- oracle更改字段名顺序的方法
- 当 Flutter 遇见 Web,会有怎样的秘密?
- Unity C# Job System介绍(一) Job System总览和多线程
- 前端学习(2425):复习
- Win32 API串口编程
- ASP.NET2.0导出Word文档(C#导出DOC)
- python手机编译器可以干什么_Python是什么?Python学习用哪些编译器?
- 信号量、使用信号量来完成读写模型(消费者生产者模型)线程池、读写锁面试题
- python实现团队游戏小程序——你画我猜
- 如何入门多视角人脸正面化生成?不得不看的超详细最新综述!
- python、pygame开发的太空大战游戏源代码,供学习参考
- Python for Data Analysis v2 | Notes_ Chapter_5 pandas 入门
- 关于在li中使用阿里巴巴icon font导致文字不对齐的问题
- 平台电子签章实现方法
- 软件工程大作业进度报告
- UE5 使用MetaHuman 制作数字人
- FPGA 之 SOPC 系列(九)SOPC 补充:altera与xilinx对比
- 产品经理的工作职责是什么,需要具备什么能力?