我们为什么需要 DH 算法

2024 年 11 月 5 日 星期二(已编辑)
/ ,
42
AI 生成的摘要
这篇文章上次修改于 2024 年 11 月 9 日 星期六,可能部分内容已经不适用,如有疑问可询问作者。

我们为什么需要 DH 算法

最近在复习安全的时候就在想,对于 DH 就有两个问题:

  1. 既然非对称加密算法可以实现带身份认证的、安全的密钥的交换,为什么还需要没有身份认证的 DH 算法呢?
  2. 非对称加密算法体系的身份认证实际上是依靠三方 CA 的权威性实现的,那可不可以构建一套 DH 的 CA 呢?

这篇文章就用来回答这两个问题。

〇、DH 算法概述

对安全算法有所了解的都知道,DH 算法是一个应用非常广的密钥交换算法,经常被用于协商的第一阶段,比如 TLS、IPsec 等。很多人有个误区,认为 DH 算法属于非对称加密算法,但我们应该知道,DH 算法并没有加解密的功能,所以并不能认为是非对称加密算法,它只能用于协商密钥。

一、DH 算法原理

先上 DH 算法原理图,Wikipedia 经典图:

DH 算法原理

DH 算法原理

DH 算法的密钥协商过程如下:

  1. Alice 取一个大的随机整数 xx 并发送给 Bob:X=gxmodpX = g^x mod p
  2. Bob 取一个大的随机整数 yy 并发送给 Alice:Y=gymodpY = g^y mod p
  3. Alice 计算 k=Yxmodp=(gymodp)xmodp=gxymodpk=Y^x mod p = (g^y mod p)^x mod p = g^{xy} mod p
  4. Alice 计算 k=Xymodp=(gxmodp)ymodp=gxymodpk'=X^y mod p = (g^x mod p)^y mod p = g^{xy} mod p

在协商过程中,g、p 公开,X、Y 在网络中传输,要想计算 x、y,需要计算离散对数问题

优点

  1. 计算简单
  2. 动态的,易于生成密钥对,每次协商都会重新生成
  3. 容易扩展到多方 gxyzmodpg^{xyz} mod p

缺点

  1. 没有身份认证的能力,所以不能解决中间人攻击的问题

二、与非对称加密算法的对比

非对称加密算法采用公私钥对的方式,公钥加密私钥解密,私钥加密公钥解密。相对于 DH 来说,非对称加密算法的特点有:

  1. 公私钥对一旦生成就无法修改
  2. 可用于身份认证
  3. 可构建身份认证体系 —— 数字证书体系
  4. 不具有前向安全性(PFS),私钥一旦泄露,历史所有消息都可被解密

其带有身份认证的属性,所以经常用于密钥交换(信息加密)、数字签名、身份认证。

我们为什么需要 DH

让我们回到问题上:

  1. 既然非对称加密算法可以实现带身份认证的、安全的密钥的交换,为什么还需要没有身份认证的 DH 算法呢?

因为非对称加密算法的静态、不具有前向安全性的问题很大,这意味着一旦私钥泄露,历史的所有消息都将会被破解。而 DH 动态的特点可以弥补这一点,使用 DH 算法每隔一段时间进行 rekey,这样通信双方的共享密钥时周期性变更的,即使破解了其中一个密钥,也无法得到完整的通信数据。

但是由于 DH 不具有身份认证的能力,所以经常需要结合数字证书体系来防止中间人攻击。

  1. 非对称加密算法体系的身份认证实际上是依靠三方 CA 的权威性实现的,那可不可以构建一套 DH 的 CA 呢?

这个问题还是比较好回答的,根本原因是 DH 不具有身份认证功能。在 PKI 体系中,CA 使用私钥签发证书,用户系统/浏览器中保存有 CA 公钥,可以轻易对证书的有效性进行验证。这个验证过程还是基于非对称加密算法的身份认证属性实现的,而 DH 无法做到。

Done!

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...