前言:
今天我们对“密钥交换是什么”都比较看重,兄弟们都想要学习一些“密钥交换是什么”的相关内容。那么小编同时在网摘上网罗了一些对于“密钥交换是什么””的相关文章,希望各位老铁们能喜欢,咱们一起来了解一下吧!迪菲-赫尔曼算法可以实现再不安全的网络实现密钥的安全交换。
假设 :A和B需要建立安全通信通道,A和B需要持有密钥解密信息,迪菲-赫尔曼算法简单说就是A和B各持有密钥P和S,并把自己持有的密钥发给对方,这样A和B都持有密钥PS,并且几乎无法通过PS得到P或者S,且密钥与顺序无关,即PS等同SP。PS可以继续合成PPS等,无限继续合成,但是无法拆解。
实例:
A和B欲通信,此时只有A持有密钥P,然后A将P发给B,则A和B都持有P。A和B分别准备私钥SA和SB,发给对方,则A和B分别合同PSA和PSB,然后再和自己的私钥合成SAPSB和SBPSA,由于顺序无关,此时A和B持有相同密钥,可以安全交换信息,由于即使密钥被截获也无法拆解,所以是安全的。但是,也并非完全安全,单纯的迪菲-赫尔曼算法无法规避中间人攻击。
刚才是举例说明思路,下面是数学基础原理
首先,对于任一素数P,一定存在一定数量的生成元。
现在假设P是一个非常大的素数,G是P的所有生成元中的一个。A和B分别准备一个秘密数字X和Y,分别做如下计算GX mod P 和 Gy mod P,然后将结果发给对方。A和B再重复取余,由于GX y mod P 和 GyX mod P是相等的。A和B此时得到相同的结果作为密钥。
下面单独说明一下数学推导过程:
假设A,B两人通信,约定使用同一个有限循环群G和它的一个生成元g。一般过程如下:
A选择一个随机正整数a,计算ra=ga mod p发送给B。
B选择一个随机正整数b,计算rb=gb mod p发送给A。
A收到B消息后 计算R1=rba mod p
B收到A消息后 计算R2=rab mod p
由于r1==r2,所以得到同一个值,作为共同的密钥。
为什么r1==r2? 可以推导如下:
R1=rba mod p=(gb mod p)a=(gb)a mod p=gba mod p
R2=rab mod p=(ga mod p)b=(ga)b mod p=gab mod p
得到R1==R2, 这里用到了指数模运算的性质。