Diffie-Hellman算法解析

一、Diffie-Hellman算法简介

Diffie-Hellman算法是第一个公开密钥算法,早在 1976 年就发现了。其安全性源于在有限域上计算离散对数,比计算指数更为困难。该算法可以使两个用户之间安全地交换一个密钥,但不能用于加密或解密信息。

二、Diffie-Hellman密钥交换

Diffie-Hellman密钥交换方案(DHKE)提供了实际中密钥分配问题的解决方案,即它允许双方通过不安全的信道进行交流,得到一个共同密钥。许多公开和商业的密码协议中都实现了这种基本都密钥协议技术,例如SSH、TLS、IPSec

DHKE基本思想: Z p ∗ \mathbb{Z}^*_p Zp内的指数运算(p是素数)是单向函数,并且该指数运算是可交换的。

即: k = ( a x ) y ≡ ( a y ) x m o d    p k=(a^x)^y\equiv(a^y)^x\mod p k=(ax)y(ay)xmodp

k = ( a x ) y ≡ ( a y ) x m o d    p k=(a^x)^y\equiv(a^y)^x\mod p k=(ax)y(ay)xmodp是一个联合密钥,k可以当作通信双方的会话密钥使用。

1、Diffie-Hellman握手协议

  1. 选择一个大素数 p p p
  2. 选择一个整数 α ∈ 2 , 3 , . . . p − 2 \alpha \in {2,3,...p-2} α2,3,...p2
  3. 公开 p p p a a a

2、Diffie-Hellman密钥交换

Diffie-Hellman算法解析_第1张图片

三、通过一个例子理解一下

题目:Diffie-Hellman的域参数为 p = 20 , α = 2 p=20,\alpha=2 p=20,α=2,则DHKE处理过程如下

Diffie-Hellman算法解析_第2张图片

可见,双方得到的 k A B k_{AB} kAB都是16

参考资料:《深入浅出密码学》–Christof Paar,Jan Pelzl著

你可能感兴趣的:(算法)