avatar

Catalog
浅谈对称加密传输

看到crownless一篇关于Tor原理解析的文章,涉及到了加密传输的部分,以前没仔细理解,现在用通俗的语言记录下来。

基础概要

对称加密

所谓对称加密,就是通信双方,在发送和接收数据时,使用同一个密钥key对数据进行加密与解密。发送方和接收方必须在数据传送前商定好秘钥。

优点:加密速度快、效率高。 缺点:一旦密钥泄露,加密信息不再安全

25519曲线

Curve25519椭圆曲线,是基于蒙哥马利曲线的密钥协商算法,具体如下

蒙哥马利曲线算法,可以做到”Time-constant”,也就是说不论他们进行运算的数值是多少,他们所花的时间是相同的,可以规避“ 时间旁路 ”攻击。(crownless文中有提到这是一种很神奇的可以在不安全的信道上建立共享的对称密钥的方法)

传输过程

密钥获取

Bob为了访问Alice,先访问Tor的目录服务器,获取一部分Tor节点的IP地址,并从中随机选择三个节点的IP地址A、B、C。然后,Bob会先和A节点通过Curve25519椭圆曲线算法以及协商所需的参数,协商一个对称密钥keyA;这时A节点会将Bob协商密钥所需参数发送给Bob。Bob通过算法计算出对称密钥keyA。之后,Bob和节点A之间就会用这把对称密钥keyA进行加密通信。

然后,Bob把B的IP地址和与B协商密钥所需的参数用对称密钥keyA加密后发送给A。A用keyA解密后,将Bob与B协商密钥所需的参数发送到B的IP地址。B收到参数后产生了对称密钥keyB,并将与Bob协商密钥所需的参数发还给A。A将参数通过keyA加密后发还给Bob。Bob用keyA解密后通过算法计算出对称密钥keyB。Bob通过相同的方法和C协商出keyC。至此,Bob有了三把钥匙keyA、keyB、keyC。

需要注意的是,当把协商密钥所需的参数,发给相应的节点时,若一方还没收到协商的参数并生成密钥,另一方就不会对协商参数进行加密。在B收到参数生成密钥keyB后,将与Bob协商密钥所需的参数发还给A,此时不会对协商参数用keyB进行加密,以保证另一方可以拿到参数生成密钥。但已经进行加密通信的双方,则会使用密钥加密通信数据。

加密传输

Bob往Alice发送数据包时,先将数据Data用keyC加密,再用keyB加密,再用keyA加密,就好像层层包裹一样,然后发往节点A。节点A解开一层加密,发往节点B。节点B解开一层加密,发往节点C。节点C解开一层加密,得到Bob发往Alice的明文,发送给Alice。

参考文章:

  1. https://bbs.pediy.com/thread-248850.htm

  2. https://www.jianshu.com/p/5dba044f67b1

Author: cataLoc
Link: http://cataloc.gitee.io/blog/2020/03/07/%E6%B5%85%E8%B0%88%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E4%BC%A0%E8%BE%93/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶