0Pricing
Cryptology Academy · 课时

Diffie-Hellman 密钥交换数学

逐步学习 DH 协议和离散对数困难性假设

Diffie-Hellman 密钥交换数学 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

欢迎

本课将逐步追踪 Diffie-Hellman 密钥交换的过程:从公开参数,到 Alice 和 Bob 的私有指数,再到共享密钥。

公开参数

Alice 和 Bob 公开约定: - p:一个大素数(生产环境中为 2048 位以上) - g:Z*p 的生成元(通常为 g=2 或 g=5) Eve 可以看到 p 和 g。知道这些并不会破坏协议。

Alice 的私钥

Alice 生成一个随机秘密值:a(1 < a < p-1) Alice 计算她的公开值:A = g^a mod p Alice 将 A 发送给 Bob。Eve 可以看到 A。 Eve 无法从 A 求出 a——这就是离散对数问题。

Bob 的私钥

Bob 生成一个随机秘密值:b(1 < b < p-1) Bob 计算他的公开值:B = g^b mod p Bob 将 B 发送给 Alice。Eve 可以看到 B。 Eve 无法从 B 求出 b。

共享密钥计算

Alice:S = B^a mod p = (g^b)^a mod p = g^(ab) mod p Bob: S = A^b mod p = (g^a)^b mod p = g^(ab) mod p 双方都能计算出相同的 S = g^(ab) mod p,却始终不需要传输它。

小数值示例

p=23,g=5 Alice:a=6,A = 5^6 mod 23 = 8 Bob: b=15,B = 5^15 mod 23 = 19 Alice:S = 19^6 mod 23 = 2 Bob: S = 8^15 mod 23 = 2 ✓ Eve 可以看到:23、5、8、19,但无法轻易求出 2。

离散对数问题

给定 A = g^a mod p,求 a。对于较大的 p(2048 位),已知的最佳算法(数域筛法)需要亚指数但仍极其漫长的时间:对于 2048 位 DH,约需执行 2^100 次运算。

中间人攻击

DH 容易受到 MITM 攻击:Mallory 截获 A 和 B,并替换成她自己的值。她分别与 Alice 和 Bob 建立不同的共享密钥。解决方案是对交换过程进行身份验证(使用证书或预共享身份验证信息)。

安全素数

必须谨慎选择 p。安全素数 p=2q+1(其中 q 为素数)可以确保 DH 群不存在可被小子群攻击利用的小子群。NIST 规定了获批准的 DH 群。

DH 参数大小

NIST 建议: - 2048 位:新部署的最低要求 - 3072 位:安全性相当于 RSA-3072 - 4096 位:高安全性 永远不要使用预先生成的 Oakley Group 1/2(768/1024 位)——它们已被国家级行为体攻破(Logjam 攻击)。

Logjam 攻击(2015 年)

Logjam 表明,许多 TLS 服务器使用了同一个 1024 位 DH 素数。国家级行为体可以针对这些特定素数预先计算离散对数,从而实现实时解密。解决方案是使用 2048 位以上的唯一素数。

快速检查

在 p=23、g=5、a=4、b=3 的 DH 中,共享密钥是多少?

回顾

DH 密钥交换的数学原理已经清晰。接下来,我们将在椭圆曲线上应用相同的概念,得到 ECDH——相同的安全性,更小的密钥。

常见问题解答

「Diffie-Hellman 密钥交换数学」课时是免费的吗?

是的 — 「Diffie-Hellman 密钥交换数学」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「Diffie-Hellman 密钥交换数学」这节课中我会学到什么?

逐步学习 DH 协议和离散对数困难性假设 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Diffie-Hellman 密钥交换数学」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 密钥分发问题
  2. Diffie-Hellman 密钥交换数学
  3. ECDH:用于密钥交换的椭圆曲线
  4. 前向保密与临时密钥交换
← 返回 Cryptology Academy