什么是暗网,它们如何用于在网络通信中提供安全性和匿名性?

信息安全 网络 虚拟专用网 匿名 暗网
2021-08-23 07:00:43

互联网的主要问题之一是很难在保持匿名的同时保持与大量人交流的能力。虽然可以在应用程序级别有效地进行加密以防止窃听和 MITM 攻击(如 HTTPS 的 TLS),但保持匿名可能是一个更大的挑战。

具有离岸提供商的 VPN 可以帮助为一般互联网使用提供个人匿名性,但您仍然受制于可能被当局(或任何持枪的人)强迫记录您的行为的服务提供商的摆布。

此外,VPN 高度集中;如果你想和你的朋友交流,你必须都连接到同一个服务器,这提供了很差的冗余(如果服务器出现故障,你就是 SOL)和很差的安全性(只有一个服务器必须被攻破)。VPN 也不能很好地扩展到成百上千的用户,尤其是当您的用户偏执并且不信任他们想要与之交流的人时。

已经有许多尝试启动称为“暗网”的对等网络。例如,就在去年,Reddit的一些用户启动了Meshnet 项目,试图创建一个能够抵抗政府和 ISP 干扰的网络。

究竟什么是暗网,我如何在使用互联网时使用暗网来确保我的匿名性和隐私性?

1个回答

作为一个深度参与过一个暗网(Anonet)并帮助启动另一个暗网(Underlink,现在大部分已经不复存在)的人,我将尝试在这里分享我的经验和对它们的理解。请随时编辑此答案以提供更多详细信息或更正任何内容。

定义

“暗网”是一个棘手的词,有几个不同的定义,其中最通用的是一个私有网络,在对等点之间具有类似互联网的路由这是一个非常广泛的定义;暗网的结构差异很大。暗网的一些例子包括:

  • Anonet 和 Anonet6,一个 IPv4 和姊妹 IPv6 暗网,目标是完全去中心化和匿名
  • Underlink,一个由前 Anonet 成员构建的纯 IPv6 暗网,更多地关注业余爱好而不是完全匿名,并且比 Anonet 更加集中。
  • 西雅图无线,一个 在西雅图地区运行的网状网络1 。
  • Tor不像我将在下面描述的示例暗网,但属于暗网的定义,因为它由一系列路由流量2的出口节点组成。

暗网提供了什么

正如问题所指出的,在保持与大量用户交流的能力的同时,很难在互联网上保持匿名。在互联网上,您与之通信的每个网站都会收到您的 ISP 颁发的 IP,这会为他们提供您的大致位置,并且至少可以可靠地使用它来跟踪您的操作。

相比之下,暗网允许您在访问暗网上托管的资源时使用内部的、非全局路由的 IP 地址。暗网中的参与者,不包括您的直接同行,将永远无法看到您的真实 IP 地址,但仍然能够使用几乎任何对等应用程序(HTTP、电子邮件、BitTorrent、FTP、SSH、 ...)。


一个示例暗网

我将描述一个示例暗网。这应该足以让您至少开始构建自己的暗网。但是,您需要做更多的研究。构建暗网的方法有很多种,您需要在计划时做出明智的决定。暗网是了解更多网络信息的好方法。我强烈建议任何对该主题感兴趣的人参与其中。

对等互连

像互联网一样,暗网是建立在对等互连的概念之上的。任何有兴趣加入网络路由基础设施的人都需要与网络上的一个或多个现有参与者对等。这形成了一个冗余的参与者网络,允许网络扩展。

为了与某人对等,您真正需要的只是与他们的直接联系(以及他们的合作)。您可以将以太网电缆从他们的机器(或路由器)连接到您的机器,或者您可以使用 VPN 软件3设置虚拟以太网隧道。使用虚拟隧道而不是物理基础设施(以太网链路、无线连接)的好处是您的网络可以轻松且廉价地跨越全球。使用物理链接将您限制在您物理区域的参与者中,从而限制了您的暗网的潜在规模和采用。使用虚拟隧道的主要缺点是您仍然依赖 ISP 和政府允许您访问互联网4

路由

假设你已经设法将两台机器连接在一起,我现在将解释一个正常运行的暗网最重要的组成部分:路由。您可以使用多种类型的路由。例如,Tor使用洋葱路由不过,为了这个示例设置,我们将使用更传统的路由方案:BGP 路由5

在 BGP 路由设置中,每个参与者都是一个“自治系统”(AS)。每个 AS 都有自己的一组 IP 空间来做它想做的任何事情。这些 AS 用一个数字(“ASN”)标识,该数字在整个网络(互联网或暗网,具体取决于上下文)中是唯一的。您可以在此处查看Internet 上使用的 AS 编号列表

假设我想和我的朋友chris(我是lex)对视。我们每个人都选择了一个 AS 编号(我是3090chris404)。为了对等,我们只需要做两件事:

  • 在我们的路由器(通常是托管在某些数据中心的 VPS 或通用 Linux 机器)之间建立连接。我们可能会使用虚拟隧道 (VPN) 来执行此操作。
  • 配置我们的 BGP 守护程序以将我们的对等连接通告给网络的其余部分,并相互建立路由6

每个网络参与者通常都希望拥有多个对等点来提供冗余。然而,这是一个安全风险,因为每个对等点都会知道您的真实 IP 地址。因此,您只想与您信任的人进行对等(不仅仅是作为一个人信任,而且还信任以保护他们的机器免受黑客或当局保护以保护您的身份)。

示例网络图如下所示(这是 Anonet6 上实际 BGP 设置的旧视觉图): ano6老视觉图

每个气泡代表一个参与者在 Anonet 上进行路由。通常这里的每台机器都会得到一个 /24(上面的地图是 ano6,但我会使用 IPv4 术语,因为它对更多人来说更容易掌握),并且可以随意分配其中的地址;那台机器将为他们处理最终路由。

所以假设我是 AS3090 ( lex,在中间)。AS3090实际上是一些数据中心的专用机器。为方便起见,我的所有个人计算机都使用一些标准 VPN 软件(在本例中为 OpenVPN)连接到我的服务器,并在 AS3090 的 /24 上获得地址。这样,我的笔记本电脑/平板电脑/台式机,没有静态 IP,不必担心对等。他们让专用服务器为他们处理。

如果我的一台连接到 AS3090 的机器想要将数据包发送到 AS31416 中的机器(地图的最右侧),它有几个简单的选项:

AS3090 (lex) -> AS1112 (UFO)     -> AS31416 (JCS)
AS3090 (lex) -> AS404 (chris)    -> AS31415 (JCS) -> AS31416 (JCS)
AS3090 (lex) -> AS404 (chris)    -> AS405 (chris) -> AS31416 (JCS)
AS3090 (lex) -> AS2323 (achedaz) -> AS1112 (UFO)  -> AS31416 (JCS)

(this is just a subset of possible paths)

这都是 BGP 路由框架的一部分。

我列表中的第一条路径是最短的(就跳数而言,不一定是延迟,因为每个跳可能并且通常位于不同的大陆上),因此数据包将采用该路径。响应数据包可能会采用不同的路径返回,但这并不重要;只要数据包到达源头,两台机器仍然可以通话。看到传出数据包离开一个接口而响应返回另一个接口的情况并不少见。你的操作系统不会在意。

这种设置的美妙之处在于它的功能就像真正的互联网一样(事实上,互联网的核心部分就是这样使用 BGP 路由的)。如果 AS3090 (lex) 失去与 AS1112 (UFO) 的连接,则数据包将自动选择到 AS31416 的不同路径。这种方式是多余的。

为什么这提供匿名性

这也使得暗网非常适合匿名。如果我是 AS12345(dBZ,上中),那么整个网络上唯一知道我真实 IP 的人就是我唯一的对等体,AS1(r101)。其余的只能看到我在 AS12345 子网内的内部 IP。对于当局或其他任何人来说,要找出 AS12345 的位置/IP,他们必须跟踪对等点的链条并打破每一个点,以找出他们正在与谁联系。在大型暗网中可能非常昂贵,因为对等点经常跨越边界(在 Anonet 中,我们经常计划跨越边界以使其特别棘手)。

成长的烦恼

一旦你理解了它,这个东西就很容易了。发展这样一个网络的难点在于它是去中心化的。Anonet 在其生命中多次分裂成两半。AS3090 (lex) 和 AS757 (Vutral) 之间的对等连接随时可能中断,Anonet 的这两半将完全停止连接。但每一半的人仍然可以互相交谈。您可以将暗网切成两半,它仍然可以生存。

输入朋友的 IP 地址来访问他们的服务(网站、文件共享等)并不好玩。你想要DNS,对吧?嗯,这需要一些中央权威来确保没有人侵犯彼此的主张。在 Anonet 上,我们“解决”的方式是使用一种叫做“resdb”的东西:一个git包含一组声明的 repo。任何人都可以提出声明并提交更改。关键是让其他人接受你对他们的 git repo 副本所做的更改。这意味着不同的人拥有不同版本的存储库,因此对于某些人来说,域不存在,对于其他人来说,它存在,而对于其他人来说,它可能存在但指向完全不同的地方。ano.

但是您不仅需要 DNS 保留是唯一的。IP 分配也应该是唯一的。难道我们都不想成为172.16.0.0/24吗?如果多人使用它,我们会发生冲突,这意味着它们也会进入 resdb,您需要说服人们接受您的声明。您还需要处理 AS 编号预订以及 ICANN 在互联网上处理的其他十几件事情。它变成一团糟,而且很难扩大规模,因为没有中央机构对保留有最终决定权。

我怎么强调都不过分resdb为了方便起见,Underlink 试图通过牺牲 Anonet 的一些去中心化来解决这些问题。有一个中央机构负责处理 DNS 注册和 ASN/IP 分配,它在 Underlink 短暂的生命(大约一年)期间工作得很好。Underlink 从未起飞,但我确实认为它的模型在许多情况下更可取。这一切都取决于中央当局保持良性和安全。我们创建暗网的全部原因是我们不想生活在 ICANN 的规则之下。这两种方法显然都有优点。

结论

我希望这能让你对什么是暗网有所了解。同样,这不是一个完整的定义,它只是基于我的经验,其中很多与您的目标并不真正相关。例如,我知道有些人试图通过使用带有 DD-WRT 的消费者路由器(将地理上接近的对等点连接在一起)而不是使用互联网上的现有基础设施来创建暗网。

如果您有任何问题,请随时要求澄清。我不是专家,但纯粹出于兴趣,我玩过这些东西。

如果您有要添加的知识,请继续编辑此回复。我已将其设为社区 wiki 以鼓励这一点。


1. 网状网通常被定义为在参与者控制的物理链路上运行的暗网,例如广播无线路由器或物理网络电缆。相比之下,大多数暗网使用互联网的现有基础设施,通过虚拟隧道 (VPN) 而不是物理链路连接对等点。因此,Meshnet 在尺寸上受到了更多限制,但它们确实提供了额外的好处。

2. 这是一个相当大的简化,因为我并不完全熟悉 Tor 的运作方式,这篇文章的其余部分更多地关注使用类似互联网的路由而不是洋葱路由的传统暗网。

3. 过去,我使用过QuickTunSigmaVPNOpenVPN但是,实际上,任何允许您与远程机器建立虚拟以太网隧道的软件都可以使用。它甚至不必加密连接(但这是一个非常好的主意,上面的所有软件示例都提供加密)。

4. 如果您使用加密隧道(他们将看到的只是加密的 VPN 连接),您的 ISP 或政府将无法轻易告诉您正在参与暗网,但它可能看起来很可疑,他们当然可以阻止您从建立初始 VPN 连接。

5. BGP路由在很多暗网中都有使用,包括Anonet和Underlink。洋葱路由和其他更奇特的路由方案确实有其优点,但它们会使人们更难加入您的网络(对 BGP 路由的支持已广泛且标准化,因为它是互联网使用的)。BGP 路由既冗余又可以提供不错的匿名性,因此没有理由将其注销,但寻找替代方案并不是一个坏主意。

6. 对等互连的示例 BGP 路由配置如下所示:

protocol bgp bgp_chris_underlink_core
{
        table underlink_core; # routing table

        local as 3090; # my ASN
        neighbor 172.16.10.1 as 404; # partner (chris') IP address for the virtual tunnel interface, and his ASN
        source address 172.16.9.1; # my IP address virtual interface

        # a series of filters to ensure chris can't send me bad routes
        import filter underlink_filter_core;
        export filter underlink_filter_core;
};

此示例使用bird,但其他 BGP 守护程序将以类似方式配置。我只用过bird,但是BGP路由软件有很多种。由于它是一种标准化协议,因此您和您的对等伙伴无需使用相同的 BGP 软件。您甚至可以使用带有专有 BGP 客户端的企业级路由器来对抗他 15 美元/米的 Linux VPS 运行鸟。