隐身是最好的防御:在互联网之中构建一个互联网

“我相信,大多数人想要这项技术,是因为它能让他们自由地表达自己。知道自己能够做到这一点,会让人感到安心。与此同时,我们也可以通过改变人们对安全与隐私的看法,以及它们被重视的程度,来克服互联网中存在的一些问题。”

2001年10月,0x90(Lance James)有一个愿景。它起初源于一种"希望能够与其他 Freenet 用户进行即时通信,以讨论 Freenet 问题并交换 Freenet 密钥,同时仍然保持匿名、隐私和安全"的愿望。它被称为 IIP — the Invisible IRC Project(隐形 IRC 项目)。

The Invisible IRC Project 基于 The InvisibleNet 背后的理念与框架。在 2002 年的一次采访中,0x90 将该项目描述为专注于“智能网络技术的创新”,其目标是“在广泛使用但臭名昭著地不安全的互联网之上,提供最高标准的安全性和隐私保护”。

到2003年,已经有其他几个类似的项目启动,规模最大的包括Freenet、GNUNet和Tor。这些项目都有着广泛的目标,即对各种流量进行加密和匿名化。对于IIP来说,很明显,仅靠IRC并不是一个足够大的目标。所需要的是一个适用于所有协议的匿名化层。

2003 年初,一位新的匿名开发者“jrandom”加入了该项目。他的明确目标是扩大 IIP 的使命范围。jrandom 希望用 Java 重写 IIP 的代码库,并基于最新的论文以及 Tor 和 Freenet 在当时做出的早期设计决策,重新设计这些协议。一些概念(例如“洋葱路由”)被修改为“大蒜路由”。

到2003年夏末,jrandom 已经掌控了该项目,并将其更名为 Invisible Internet Project,或称为 “I2P”。他发布了一份文件,概述了该项目的理念,并将其技术目标和设计置于混合网络(mixnets)和匿名化层的背景之中。他还发布了两种协议(I2CP 和 I2NP)的规范,这些规范构成了当今 I2P 所使用网络的基础。

到2003年秋季,I2P、Freenet 和 Tor 正在迅速发展。jrandom 于 2003 年 11 月 1 日发布了 I2P 0.2 版本,并在随后的三年里持续快速发布新版本。

2005年2月,zzz首次安装了 I2P。到2005年夏季,zzz 已经搭建了 zzz.i2p 和 stats.i2p,它们成为 I2P 开发的核心资源。2005年7月,jrandom 发布了 0.6 版本,其中包括用于 IP 发现和防火墙穿越的创新型 SSU (Secure Semi-reliable UDP) 传输协议。

从2006年末到2007年,由于 jrandom 将重心转向 Syndie,I2P 的核心开发显著放缓。2007年11月,灾难降临:jrandom 发来一条含义隐晦的信息,称他将不得不休假一年或更久。不幸的是,此后再也没有 jrandom 的消息。

这场灾难的第二阶段发生在 2008 年 1 月 13 日,当时几乎所有 i2p.net 服务器的托管公司遭遇停电,且未能完全恢复服务。Complication、welterde 和 zzz 迅速作出决策,使项目重新恢复运转,迁移到 i2p2.de,并将版本控制从 CVS 切换到 monotone。

项目意识到其过度依赖于集中式资源。2008 年全年所进行的工作使项目去中心化,并将角色分配给多人。自 2009 年 7 月 31 日发布的 0.7.6 版本起,zzz 将为随后 49 次发布签名。

到 2009 年年中,zzz 对代码库的理解大幅加深,并识别出许多可扩展性问题。由于匿名与规避审查这两种能力,网络因此得以增长。网络内自动更新功能开始可用。

2010 年秋季,zzz 宣布在网站文档完整且准确之前,暂停 I2P 的开发。这耗时 3 个月。

自2010年起,zzz、ech、hottuna 及其他贡献者每年都会参加 CCC(Chaos Communications Congress),直到新冠疫情相关的限制措施为止。项目在此过程中凝聚了社区,并共同庆祝新版本的发布。

2013年,Anoncoin 作为首个内置 I2P 支持的加密货币问世,同时像 meeh 这样的开发者为 I2P 网络提供了基础设施。

2014年,str4d 开始参与 I2PBote 的开发,并且在 Real World Crypto 上,开始就更新 I2P 的密码学展开讨论。到 2014 年末,包括 ECDSA 和 EdDSA 在内的大多数新的签名算法已完成。

2015 年,I2PCon 在多伦多举行,包括演讲、社区支持,以及来自美洲和欧洲的与会者。2016 年在斯坦福举办的 Real World Crypto 上,str4d 做了关于密码学迁移进展的演讲。

NTCP2 于 2018 年(0.9.36 版本)实现,能够抵御深度包检测(DPI)审查,并通过更快速、现代的加密算法降低 CPU 负载。

2019 年,团队参加了更多会议,包括 DefCon 和 Monero Village,与开发者和研究人员建立联系。Hoàng Nguyên Phong 关于 I2P 审查的研究被 USENIX 的 FOCI 接收,从而促成了 I2P Metrics 的创建。

在 CCC 2019 上,作出了从 Monotone 迁移到 GitLab 的决定。2020 年 12 月 10 日,该项目正式从 Monotone 切换到 Git,加入了使用 Git 的开发者行列。

0.9.49(2021 年)开始了向用于 router 的全新、更快的 ECIES-X25519 加密的迁移,完成了多年的规范制定工作。该迁移将需要多个版本才能完成。

1.5.0 — 提前发布的周年纪念版

在连续 9 年的 0.9.x 版本发布之后,该项目直接从 0.9.50 跳到 1.5.0,以此致敬近 20 年来为提供匿名性和安全性所做的工作。此次发布完成了更小的 tunnel 构建消息的实现以减少带宽占用,并继续推进向 X25519 加密的过渡。

恭喜团队。我们再做20个。