DH秘钥交换算法

来源:互联网 发布:photoshop2017 mac 编辑:程序博客网 时间:2024/06/07 01:46

1、DH 概述

摘自https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

Diffie–Hellman key exchange is a specific method of securely exchanging cryptographic keys over a public channel and was one of the first public-key protocols as originally conceptualized by Ralph Merkle and named after Whitfield Diffie and Martin Hellman. D–H is one of the earliest practical examples of public key exchange implemented within the field of cryptography. Traditionally, secure encrypted communication between two parties required that they first exchange keys by some secure physical channel, such as paper key lists transported by a trusted courier. The Diffie–Hellman key exchange method allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure channel. This key can then be used to encrypt subsequent communications using a symmetric key cipher.

它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。

2、算法实现

如下图所示
这里写图片描述
假如用户A和用户B希望交换一个密钥。

取素数p和整数a,a是p的一个原根,公开a和p。A选择随机数XA<p,并计算YA=a^XA mod p。B选择随机数XB<p,并计算YB=a^XB mod p。每一方都将X保密而将Y公开让另一方得到。A计算密钥的方式是:K=(YB) ^XA modpB计算密钥的方式是:K=(YA) ^XB modp

证明:

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

由于XA和XB是保密的,而第三方只有p、a、YB、YA可以利用,只有通过取离散对数来确定密钥,但对于大的素数p,计算离散对数是十分困难的。
下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。

1,Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。2,Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。 

这里写图片描述
下面我们进行一个实例

1.爱丽丝与鲍伯协定使用p=23以及g=5.2.爱丽丝选择一个秘密整数a=6, 计算A = g^a mod p并发送给鲍伯。   A = 5^6 mod 23 = 8.3.鲍伯选择一个秘密整数b=15, 计算B = g^b mod p并发送给爱丽丝。   B = 5^15 mod 23 = 19.4.爱丽丝计算s = B a mod p  19^6 mod 23 = 2.5.鲍伯计算s = A b mod p   8^15 mod 23 = 2. 

对方的公钥和自己的私钥计算的到秘密整数,双方对比之后,验证正确性。

3、用途

  1. 可以用作对称加密算法中,双方约定的加密准则的交换(对方的公钥和自己的私钥计算的到秘密整数,可以作为双方的加密准则)。交换双方可以在不共享任何秘密的情况下协商出一个密钥。
1 0
原创粉丝点击