DH key exchange 原理介绍



迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。
它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。

(1)、算法描述

离散对数的概念:

原根:如果a是素数p的一个原根,那么数值:

            a mod p,a^2 mod p,…,a^(p-1) mod p

 是各不相同的整数,且以某种排列方式组成了从1 到p-1 的所有整数。

离散对数:如果对于一个整数b和素数p的一个原根a,可以找到一个唯一的指数 i,使得:

          b =(a的i次方) mod p                其中0 ≦ i ≦ p-1

                     那么指数 i 称为b的以a为基数的模p的离散对数。

Diffie-Hellman 算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数p和它的一个原根a后,对给定的 b,要计算 i ,被认为是很困难的,而给定 i 计算b 却相对容易。

Diffie-Hellman算法:

假如用户A和用户B希望交换一个密钥。

取素数p和整数a,a是p的一个原根,公开a和p。

A选择随机数XA

B选择随机数XB

每一方都将X保密而将Y公开让另一方得到。

A计算密钥的方式是:K=(YB) ^XA mod p

B计算密钥的方式是:K=(YA) ^XB mod p

证明:

                     (YB)^ XA mod p = (a^XB mod p)^ XA mod p

                         = (a^XB)^ XA mod p = (a^XA) ^XB mod p    (<-- 密钥即为 a^(XA*XB) mod p)

                         =(a^XA mod p)^ XB mod p = (YA) ^XB mod p

由于XA和XB是保密的,而第三方只有p、a、YB、YA可以利用,只有通过取离散对数来确定密钥,但对于大的素数p,计算离散对数是十分困难的。

例子:

你可能感兴趣的:(web)