Invisible Internet Project (I2P)
A summary of the Invisible Internet Project - what it is, how it differs from the networks it gets compared to, and how to actually live on it.
Most people arrive at I2P by way of a comparison - "like Tor, but" and never get past the sentence. That's a shame, because the differences aren't footnotes; they are the architecture. What follows is the short version. The long versions are one click down.
What it is
The Invisible Internet Project (I2P) is an anonymous overlay network that runs on top of the regular internet. Tor was designed for reaching the clearnet anonymously, whereas I2P contains everything inside the network itself.
I2P is a mixnet in the strict sense. Traffic is layered, routed through multiple peers, and mixed with other traffic so that no single hop knows both who you are and what you are asking for. Sites here (eepsites) are hosted by the routers of the people who run them. There is no central datastore.
How it works
Every router builds tunnels; one-way paths through other routers, and uses them in pairs. Your outbound tunnel delivers a request that is never seen in the clear; the site's inbound tunnel receives it without learning where it came from. Tunnels rotate on their own schedule, so even a well-positioned adversary is chasing a moving target.
The routing scheme is called garlic routing, because each message is wrapped with multiple "cloves". These are real payloads and decoys bundled together, so an observer can't tell which is which, or how many there are. This mixing of metadata makes timing attacks difficult.
An eepsite is simply a website hosted inside I2P. Addresses come in two flavours: long machine destinations (b32) and human-readable names resolved by the network's addressbooks. Both are unpacked in the posts below.
Getting on it
Running a router requires installing, start it up, and waiting for tunnels to build. The part people get wrong is the browser. I2P has no dedicated browser, it's all about the protocol. A standard browser simply pointed at a proxy is a leaky bucket - fingerprinting does not care that your traffic is encrypted. A hardened profile is essential.
Living on it
Once you are in, the network rewards curiosity. Eepsites live under names resolved by the network's own addressbooks; services beyond the web — IRC, mail, torrents — sit alongside them; and, my favourite discovery, there are plenty of streaming radio stations and torrent seeders.
Why I stay
I2P provides the best mix of security and anonymity out there. Most people want to compare and contrast with Tor, which is not always appropriate. Tor was designed to be used as a proxy to clearnet, and I2P is self-contained. Here is some other ways they differ, with an emphasis on why I2P is better architecturally.
Anonymity is not a feature you toggle on I2P. It is the foundation everything else is built on.
- The short version
How is I2P different from Tor?
Tor has a centralized directory, run by a small number of directory authorities. I2P uses a distributed hash table, using a rotating set of floodfill routers. This makes peer discovery truly decentralized, and less susceptible to attack.
In Tor, a user constructs a circuit of 3 hops called a circuit. This circuit is bi-directional, and requests and responses travel the same circuit which is re-constructed periodically. In I2P separate inbound and outbound tunnels are used, which makes correlation attacks more difficult.
Tor transmits each message encrypted through its circuit, using the onion routing model. In I2P's garlic routing model, messages are bundled into "cloves" along with decoys. This method makes timing correlation attacks difficult, because attackers only see one half of the interaction. The metadata that is visible is not specific to a message, but rather to a bundle of messages.
Tor routes all traffic through these fixed circuits, which is efficient but not very flexible. I2P is designed to route messages through multiple concurrent paths. This leads to better performance when routes get congested or blocked, and distributes traffic loads automatically.
Using Tor typically means you're visiting a clearnet site, and your traffic travels through a 3-hop circuit. The exit node is frequently a bottleneck. For onion sites, both the client and the server use their own circuits, doubling the latency. I2P is made for using internal servers, and always has the additonal latency of using tunnels of both client and server. Requests and responses go though more hops, and it is slower in general. Accessing clearnet through a proxy is strongly discourgaged. In this regard, for some use cases, Tor has the advantage with I2P typically taking double the time to round trip.
In numeric terms, I2P's anonymity set is far smaller than Tor. Tor network has millions of users, and typically has thousands of exit nodes running at a given point in time. I2P probably has tens of thousands of users, so the anonymity set is greatly reduced in theory. Realistically, the guard and exit nodes pose the danger to de-anonymization in Tor, and they number in the thousands. I2P uses every node to route traffic, and therefore effectively offers the same quality of anonymity in terms of the numbers.
I2P is smaller, but the architecture allows it to scale better. Because every node is a router, and random floodfill routers run the directory service, it scales horizontally as more routers (users) are added. Tor, by contrast, becomes more constrained by the centralized directory sa the number of users grows.
Another drawback often cited about Tor network is that it has institutional funders, including US Government agencies. That's not neccessarily a problem, but there are no concerns in this regard with I2P as it is 100% volunteer driven by the community of users.
