Tor 如何防止虚假入口节点/总重定向?

信息安全
2021-08-25 09:01:36

有很多关于如何保护自己免受恶意退出节点攻击的材料,尤其是通过使用 SSL 和最大限度地减少识别信息(用户代理、屏幕大小等)的泄漏。

但是,我想知道为什么攻击者不能只设置一堆虚假的 Tor入口节点,并将您的传出连接重定向到它们(假设您必须通过他们的网络路由所有数据)。他们甚至可以轻松虚拟化或伪造整个 Tor 网络。

Tor 对此类攻击采取了哪些措施,用户可以采取哪些措施来应对这种攻击?

是否有例如具有已知公钥的硬编码入口服务器列表?如果是这样,我怎么知道那些特权服务器不是由 NSA 或中国人或任何人操作的?它们可能是 a) 从第一天开始就受到攻击,或者 b)torproject.org当我下载该软件并替换了服务器列表和校验和时,有人可能已经对其进行了操作。


(我希望这听起来不会太偏执。我在一家大型(美国)政府运营的机构工作时产生了这个想法,并注意到他们的计算机安全措施是多么普遍(可能有充分的理由)。如果我是持不同政见者或有什么要隐瞒的,他们很容易“钻空子”我的整个网络。我想这在其他国家是一个更紧迫的问题。)

2个回答

[是否有] 具有已知公钥的硬编码入口服务器列表

每个服务器都能够充当条目,因为每个数据包要么是要转发的数据包,要么是退出的数据包。这是通过将每个数据包加密到特定节点来实现的。每个节点都有一个列出的公钥,用于与该节点协商会话密钥。

这背后的原理称为洋葱路由细节很丰富,所以最好阅读这篇文章。总结是对最后一个节点的数据包进行加密,然后对倒数第二个节点加密,以此类推。

如果不控制链中的每个节点,将原始发送者链接到原始数据包将需要流量分析。

由于 Tor 节点的公钥已发布,因此链中的任何节点都无法以有意义的方式重定向您的流量。它必须传递给能够解密它的节点。对称密钥是使用签名的 Diffie-Hellman 交换导出的,因此不会从不具有与已发布公钥匹配的私钥的节点接受。密钥交换和分层加密可以保护您免受恶意节点从链中删除下游节点的侵害。

是否有例如具有已知公钥的硬编码入口服务器列表?

您可以浏览 Tor 代码,只需下载最新的 tar 球

有 10 个权限目录硬编码到 Tor 中,char数组的每个元素都包含公钥,例如moria1 : 9695 DFC3 5FFE B861 329B 9F1A B04C 4639 7020 CE31

./src/或/config.c:

static void
add_default_trusted_dir_authorities(dirinfo_type_t type)
{
  int i;
  const char *authorities[] = {
    "moria1 orport=9101 no-v2 "
      "v3ident=D586D18309DED4CD6D57C18FDB97EFA96D330566 "
      "128.31.0.39:9131 9695 DFC3 5FFE B861 329B 9F1A B04C 4639 7020 CE31",
    "tor26 v1 orport=443 v3ident=14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4 "
      "86.59.21.38:80 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D",
    "dizum orport=443 v3ident=E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58 "
      "194.109.206.212:80 7EA6 EAD6 FD83 083C 538F 4403 8BBF A077 587D D755",
    "Tonga orport=443 bridge no-v2 82.94.251.203:80 "
      "4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D",
    "turtles orport=9090 no-v2 "
      "v3ident=27B6B5996C426270A5C95488AA5BCEB6BCC86956 "
      "76.73.17.194:9030 F397 038A DC51 3361 35E7 B80B D99C A384 4360 292B",
    "gabelmoo orport=443 no-v2 "
      "v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
      "212.112.245.170:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
    "dannenberg orport=443 no-v2 "
      "v3ident=585769C78764D58426B8B52B6651A5A71137189A "
      "193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
    "urras orport=80 no-v2 v3ident=80550987E1D626E3EBA5E5E75A458DE0626D088C "
      "208.83.223.34:443 0AD3 FA88 4D18 F89E EA2D 89C0 1937 9E0E 7FD9 4417",
    "maatuska orport=80 no-v2 "
      "v3ident=49015F787433103580E3B66A1707A00E60F2D15B "
      "171.25.193.9:443 BD6A 8292 55CB 08E6 6FBE 7D37 4836 3586 E46B 3810",
    "Faravahar orport=443 no-v2 "
      "v3ident=EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97 "
      "154.35.32.5:80 CF6D 0AAF B385 BE71 B8E1 11FC 5CFF 4B47 9237 33BC",
    NULL
  };

攻击者不能对入口节点做任何事情,例如,HTTP 请求在进入 Tor 网络时有 3 层加密。

洋葱加密

攻击者最好设置大量出口,以嗅探传出流量。

传入流量不包含除加密文本之外的任何内容。

请参阅我的问题:使用被盗的主节点私钥攻击 Tor