一、Deffie-Hellman 算法简介
Deffie-Hellman(简称 DH) 密钥交换是最早的密钥交换算法之一,它使得通信的双方能在非安全的信道中安全的交换密钥,用于加密后续的通信消息。 Whitfield Diffie 和 Martin Hellman 于 1976 提出该算法,之后被应用于安全领域,比如 Https 协议的 TSL(Transport Layer Security)以 DH 算法作为密钥交换算法。
二、背景知识
首先介绍一些跟DH算法相关的数学知识。
离散对数问题
假设a、p均为素数,则有以下等式:
{ a^1 mod p, a^2 mod p, ..., a^(p-1) mod p } = {1, 2, ... , p-1 } {} 表示集合
对于任意一个数 x,若 0 < x < p,则必定存在唯一的 y 使得 x = a^y mod p,其中 0 < y < p。当p很大时,很难求出y,所以它能做为DH秘钥交换的基础。
求模公式:((a^x mod p)^y) mod p = a^xy mod p
证明如下:
假设 a^x = mp + n,其中0<n<p,则
C = ((a^x mod p)^y) mod p
= ((mp+n) mod p)^y mod p
= (n mod p)^y mod p
= n^y mod p
= (mp&#