0x01 Diffie-Hellman密钥交换概述
Diffie-Hellman密钥交换是一种安全交换密钥的方法,可以让双方在不泄漏密钥的情况下,德出一个密钥。以Whitfield Diffie和Martin Hellman的名字共同命名。
Diffie-Hellman密钥交换是Ralph Merkle构想的第一个公钥协议之一,由 Diffie 和 Hellman 于 1976 年出版,这是最早提出私钥和相应公钥概念的公开著作。可以让双方在不泄漏密钥的情况下协商出一个密钥来
传统上,两方之间的安全加密通信要求他们首先通过某种安全的物理方式交换密钥,例如由受信任的信使传输纸质密钥列表。
Diffie-Hellman密钥交换方法允许彼此双方在不安全的通道上共同建立共享密钥。
总结来说就是Diffie-Hellman密钥交换方法在发送和接收双方见建立了一个“秘密通信方法”,目的是为了能够在公共平台发送秘密数据。
wikipedia给了一个非常好的例子,简单解读一下可以非常清楚Diffie-Hellman密钥交换的本质。
可以看出通信双方为:Alice,Bob
Alice和Bob先共同有一个相同的颜色,Alice通过自己的私有颜色获得了可以公开的颜色,bob也通过自己的私有颜色获得了可以公开的颜色,之后二者互换,Alice和Bob通过自己的私有颜色去处理接收到的颜色,最终获得相同颜色。
0x02 Diffie-Hellman 密钥交换的历史
Diffie-Hellman 密钥交换可以追溯到 1970 年代,在那个年代,Whitfield Diffie 和 Martin Hellman 发表了他们的论文《密码学新方向》,从此这个新技术又被称为Diffie-Hellman 密钥交换。
这项工作的灵感部分来自 Ralph Merkle 的早期发展。Merkle谜题,接受者会随机选择一个谜题来解决,然后付出必要的努力来完成它。一旦解决了这个难题,就会向接收者显示一个标识符和一个会话密钥。然后收件人将标识符发送回原始发件人,这让发件人知道已解决了哪个难题。
0x02 Diffie-Hellman密钥交换例子
有两个公开的参数,一个素数p,一个原根g
假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数a
计算出Akey=g^a mod p,并将Akey发送给用户B
用户B随机选取b,计算出Bkey=g^b mod p,并将Bkey发送给用户A
此时,用户A知道p,g,a,Bkey
用户A通过计算得到共享密钥=Bkey^a mod p
用户B知道p,g,b,Akey
用户B通过计算得到共享密钥=Akey^b mod p
而用户A和用户B计算得到的共享密钥是一样的
共享密钥还可以这样算key=g^(a*b) mod p
也就是A得到的是:
B得到的是:
0x03 Diffie-Hellman安全性
尽管 Diffie-Hellman 已被证明在正确实施时具有很强的抗攻击性,但仍存在安全问题,除了暴力破解、离散对数或量子计算方面的突破之外,Diffie-Hellman 的用户可能容易受到少数依赖于利用计算环境的攻击,即所谓的边信道攻击。
Diffie-Hellman密钥交换算法在其基本形式中最严重的限制是缺乏身份验证,单独使用Diffie-Hellman密钥交换的通信很容易受到中间人攻击。
理想情况下,Diffie-Hellman 应该与公认的身份验证方法(例如数字签名)结合使用,以通过公共通信介质验证用户的身份。Diffie-Hellman密钥交换非常适合用于数据通信,但较少用于长时间存储或归档的数据。
References:
Diffie-Hellman密钥交换算法(非专业只讲过程)_VVeaker的博客-CSDN博客
What is Diffie-Hellman Key Exchange? - Definition from WhatIs.com
Diffie-Hellman密钥交换是一种安全交换密钥的方法,可以让双方在不泄漏密钥的情况下,德出一个密钥。以Whitfield Diffie和Martin Hellman的名字共同命名。Diffie-Hellman密钥交换是Ralph Merkle构想的第一个公钥协议之一,由 Diffie 和 Hellman 于 1976 年出版,这是最早提出私钥和相应公钥概念的公开著作。可以让双方在不泄漏密钥的情况下协商出一个密钥来传统上,两方之间的安全加密通信要求他们首先通过某种安全的物理方式交换密钥,例如由受信任
1、
Diff
ie-
Hellman
算法
简介
Diff
ie-
Hellman
算法
(以下简称为:DH
算法
),是最早的
密钥
交换
算法
之一,它使得通信的双方能在非安全的信道中安全的
交换
密钥
,用于加密后续的通信消息。
起基本流程原理如下:
假定小明和小红期望在一个不安全的网络中协商一个共同的
密钥
,那么进行如下步骤:
两人先说好大素数(质数)p和它的原始根g。
小明随机产生一个数a,并计算A = p^a mod g, 发送给小红。
小红随机产生一个数b,并计算......
Diff
ie-
Hellman
(简称DH)是
密钥
交换
算法
之一,它的作用是保证通信双方在非安全的信道中安全地
交换
密钥
。目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端、服务端利用DH
算法
交换
对称
密钥
。
下面会先简单介绍DH的数理基础,然后举例说明如何在nodejs中使用DH相关的API。下面话不多说了,来一起看看详细的介绍吧。
要理解DH
算法
,需要掌握一定的数论基础。感兴趣的可以进一步研究推导过程,或者直接记住下面结论,然后进入下一节。
假设 Y = a^X mod p,已知X的情况下,很容易算出Y;已知道Y的情况下,很难算出X;
(a^Xa mod p
Diff
ie-
Hellman
密钥
交换
技术
文章目录
Diff
ie-
Hellman
密钥
交换
技术描述大体介绍加解密解释
英文名
Diff
ie-
Hellman
key exchange(简称DH)。
Diff
ie-
Hellman
密钥
交换
是一个在公共渠道安全
交换
加解密
密钥
的方法。DH是加解密领域最早的公钥
交换
实际应用的例子之一。
传统上,双方之间的安全加密通信要求他们首先通过一些安全的物理渠道来
交换
密钥
。...
Diff
ie-
Hellman
算法
是Whitefield
Diff
ie和Martin
Hellman
在1976年公布的一种秘钥
交换
算法
,它是一种建立秘钥的方法,而不是加密方法,所以秘钥必须和其他一种加密
算法
结合使用。这种秘钥
交换
技术的目的在于使两个用户安全的
交换
一个秘钥一遍后面的报文加密。
Diff
ie-
Hellman
密钥
交换
算法
的有效性依赖于计算离散对数的难度。
简言之,可以如下定义离散对数:...
1976年,
Diff
ie和
Hellman
在其题为《
密码学
的新方向》的论文中首次给出了公钥
密码学
的定义,并提出了
Diff
ie-
Hellman
密钥
交换
算法
。该
算法
解决了对称密码体制中的
密钥
分发问题,使得通信双方可以通过公开信道安全地
交换
共享
密钥
。其安全性建立在离散对数问题的困难性之上。
Diff
ie-
Hellman
密钥
交换
Alice与Bob使用
Diff
ie-
Hellman
密钥
交换
的步骤如下:
Bob利用对称秘钥K对信息进行加密并将加密结果发送给Alice,Alice收到信息之后,用同样的秘钥进行解密。
问题1:Alice是如何知道对称秘钥K的?------即,Bob首先需要将对称秘钥K发送给Alice,Alice才能对信息进行解密。即:通信双方需要达成共识,也就是用什么样的秘钥进行加密。
由此推出:传递信息的前提是需要关于秘钥达成共识,也就是传递秘钥。
问题2:...