Deffie-Hellman 密钥交换算法学习小记

文章目录

    • 前言
    • 1. 介绍
    • 2. 原理与示例
    • 4. 安全性分析
    • 5. 总结

前言

Tor在建立虚电路以后,需要与路径上的节点商量密钥用于后续分组(packet)内容的多层加密。

使用对称加密算法时,密钥交换是个大难题,因此Tor采用的是Deffie-Hellman 密钥交换算法

先对Deffie-Hellman 密钥交换算法做了简单介绍以及应用场景的介绍,然后介绍了该算法的原理,举了一个例子进行说明。

1. 介绍

Deffie-Hellman 密钥交换算法是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
                                                                                                                         – wikipedia

Deffie-Hellman 密钥交换算法是一种密钥交换算法。也就是说两个节点可以通过该算法交换密钥,但是后续的消息加密要用其他的算法来进行。

2. 原理与示例

Deffie-Hellman 密钥交换算法基于一个数学难题:离散对数问题。简单的说:
A = g a   m o d   p A=g^a \ mod \ p A=ga mod p, 已知 g , a , p g,a,p g,a,p ,求 A A A的话容易,直接代入计算即可。但如果要从 A , g , p A, g, p A,g,p反向推导出 a a a的话则很难。Deffie-Hellman 密钥交换算法中,密钥就是这里的 a a a

下面用一个例子来说明这个算法的原理和过程。
Deffie-Hellman 密钥交换算法学习小记_第1张图片

假设现在Alice和Bob在通信前需要交换密钥,用于后续数据包的加密。

  1. 选取大素数,并公开

Alice: 选取大素数 P a P_a Pa,公开
Bob: 选取大素数 P b , P b < P a P_b, P_bPb,Pb<Pa,公开

  1. 选取大随机数,计算key

Alice:

  • 选择大随机数 X a X_a Xa, X a < P a X_aXa<Pa,保密
  • 计算: Y a = P b X a   m o d   P a Y_a = P_b^{X_a} \ mod \ P_a Ya=PbXa mod Pa,公开

Bob:

  • 选择大随机数 X b X_b Xb, X b < P a X_bXb<Pa,保密
  • 计算: Y b = P b X b   m o d   P a Y_b = P_b^{X_b} \ mod \ P_a Yb=PbXb mod Pa,公开
  1. 计算密钥

Alice的密钥: K a = Y b X a   m o d   P a Ka = Y_b^{Xa} \ mod \ P_a Ka=YbXa mod Pa

Bob的密钥: K b = Y a X b   m o d   P a Kb = Y_a^{Xb} \ mod \ P_a Kb=YaXb mod Pa

  1. K a = = K b   ? K_a==K_b \ ? Ka==Kb ?

K a = Y b X a   m o d   P a = ( P b X b   m o d   P a ) a X   m o d   P a = P b ( X a ∗ X b )   m o d   P a = ( P b X a   m o d   P a ) X b   m o d   P a = Y a X b   m o d   P a Ka = Y_b^{Xa} \ mod \ P_a \\= (P_b^{Xb} \ mod \ P_a)^X_a \ mod \ P_a \\= P_b^{(X_a * X_b)} \ mod \ P_a \\= (P_b^{X_a} \ mod \ P_a)^{X_b} \ mod \ P_a \\= Y_a^{X_b} \ mod \ P_a Ka=YbXa mod Pa=(PbXb mod Pa)aX mod Pa=Pb(XaXb) mod Pa=(PbXa mod Pa)Xb mod Pa=YaXb mod Pa

Deffie-Hellman 密钥交换算法学习小记_第2张图片

4. 安全性分析

公开的: P a , P b , Y a , Y b P_a, P_b, Y_a, Y_b Pa,Pb,Ya,Yb

保密的: X a , X b , K X_a, X_b, K Xa,Xb,K

  • 优点:

    • 难以破解:Deffie-Hellman 密钥交换算法的安全性依赖于计算离散对数的困难程度。对于攻击者来说,知道 Y a Y_a Ya的情况下,难以破解出 X a X_a Xa ;同理 X b X_b Xb 的破解也很困难,所以攻击者难以求出 K a K_a Ka K b K_b Kb。因此,该算法可以保证通信双方在透明的信道中安全地交换密钥。
  • 缺点:

    • 没有身份验证信息
    • 拒绝服务
    • 重放攻击
    • 中间人攻击

5. 总结

尽管有一些缺点,但是由于该算法能在透明的信道中安全地交换密钥,因此Tor网络中需要交换密钥的时候采用的是该算法。

你可能感兴趣的:(匿名通信)