前言

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

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

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

1. 介绍

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

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

2. 原理与示例

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

下面用一个例子来说明这个算法的原理和过程。
Deffie-Hellman **交换算法学习小记

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

  1. 选取大素数,并公开

Alice: 选取大素数PaP_a,公开
Bob: 选取大素数Pb,Pb<PaP_b, P_b<P_a,公开

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

Alice:

  • 选择大随机数XaX_a, Xa<PaX_a<P_a,保密
  • 计算: Ya=PbXa mod PaY_a = P_b^{X_a} \ mod \ P_a,公开

Bob:

  • 选择大随机数 XbX_b, Xb<PaX_b<P_a,保密
  • 计算:Yb=PbXb mod PaY_b = P_b^{X_b} \ mod \ P_a,公开
  1. 计算**

Alice的**:Ka=YbXa mod PaKa = Y_b^{Xa} \ mod \ P_a

Bob的**:Kb=YaXb mod PaKb = Y_a^{Xb} \ mod \ P_a

  1. Ka==Kb ?K_a==K_b \ ?

Ka=YbXa mod Pa=(PbXb mod Pa)aX mod Pa=Pb(XaXb) mod Pa=(PbXa mod Pa)Xb mod Pa=YaXb mod PaKa = 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

Deffie-Hellman **交换算法学习小记

4. 安全性分析

公开的:Pa,Pb,Ya,YbP_a, P_b, Y_a, Y_b

保密的:Xa,Xb,KX_a, X_b, K

  • 优点:

    • 难以**:Deffie-Hellman **交换算法的安全性依赖于计算离散对数的困难程度。对于攻击者来说,知道 YaY_a的情况下,难以**出XaX_a ;同理 XbX_b 的**也很困难,所以攻击者难以求出 KaK_aKbK_b。因此,该算法可以保证通信双方在透明的信道中安全地交换**。
  • 缺点:

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

5. 总结

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

相关文章:

  • 2022-12-23
  • 2021-09-27
  • 2021-07-20
  • 2022-12-23
  • 2021-08-12
  • 2021-11-01
猜你喜欢
  • 2021-12-11
  • 2021-06-18
  • 2021-11-17
  • 2021-11-27
  • 2021-12-29
  • 2022-01-02
相关资源
相似解决方案