The Definitive Guide to I2P

The invisible internet

Cléber Zavadniak
clebertech-en
6 min readApr 26, 2018

--

Bizarre guy…

tl; dr

  • I2P is its own network (a darknet);
  • It is very easy to install and use;

1- What is I2P

“I2P” stands for “The Invisible Internet Project”. It is a darknet , that is, it is a network per se, isolated from the clearnet (the internet that “normal people” use).

1.1- Anonymity

The primary purpose of I2P is anonymity: if used correctly, (a) it is very difficult for you to be identified and (b) your traffic is monitored. However, unlike Tor (The Onion Router), whose goal is “anonymity to access Facebook”, for example, I2P simply does not serve anything from clearnet : I2P is a network in itself, isolated from other networks .

1.2- Isolation

Is this isolation good? Is it bad? Well, a bit of both. Perhaps the biggest advantage of the network being isolated is the fact that both clients and servers are both anonymous — unlike Tor, where the client is anonymous, but neither the “exit point” nor the server are.

2- How I2P works

2.1- No changes in the client-server architecture

Unlike projects like ZeroNet or DAT, the I2P project is not intended to create distributed applications. That is possible, of course, but to the same extent that it is possible to create distributed applications in the “common internet”.

This is because, although there is a small ecosystem around it, the real core of I2P is a kind of substitute for IP and TCP protocols. What is built on top of this, therefore, turns out to be (conceptually, at least) not different from “traditional” applications.

2.2- It is practically the same as Tor

Don't be fooled when you read about “ garlic routing “, as if it were very different from “ onion routing “. There is some difference in nomenclature, as well as the purpose of each technology (darknet versus interface with clearnet), but the operating principles are very similar .

Basically, messages travel wrapped in multiple layers of routing .The message “Alpha, deliver this package to Beta” contains a message “Beta, deliver this package to Gamma”, which in turn contains the message “Gamma, deliver this package to Delta”, where each message is signed and encrypted, so that it can only be read by its intended recipient.

It doesn't matter much if the “tunnels” are unidirectional or bidirectional if you don't have a more technical profile. What matters is to know that, instead of following a “direct” route, the data packets travel through several reasonably random intermediaries, so as to make it unfeasible to profile (it would be necessary to “spy” on a lot of nodes) and it is practically impossible to read what is being sent: messages are encrypted within encrypted messages within encrypted messages and there's no way to know how many “layers” there are nor how many messages each packet contains (hence the term “garlic routing”).

2.3- It is necessary to have specific software running in user space

The main implementation of I2P was written in Java and, believe me, this turned out to be a nice thing: the Android version works very well .

The interface of the desktop version is really nice (based only on the website I had my doubts that it would be…), easy to use and seems to have good quality translations.

The user interface of the “I2P console”

2.4- There is no central DNS server

What you have are “address books and these are local. Each node maintains its own and the users can exchange addresses with each other.

This is not to say, of course, that on your first login there will be no domain names available. I2P already comes with an address book populated with many default values.

(This reminds me a lot of the beginnings of the internet, when the names were all resolved via /etc/hosts of each computer...)

3- Using I2P

3.1- Installing

You can download the most appropriate version of your device here:

On Linux, I ran the installer like this:

java -jar i2pinstall_0.9.34.jar

And I installed I2P in ~/Apps/i2p.

To run:

cd ~/Apps/i2p
./i2prouter start

3.2- Using

I created a Firefox profile only for I2P, since it is recommended to use i2prouter as a proxy . If you do not use profiles like me, you can use an extension, such as "foxyproxy", which allows you to use various proxy settings in Firefox and switch between them based on URL patterns. Look on the internet for how to do this and you will find it.

The proxy address is 127.0.0.1:4444 for HTTP and FTP and 127.0.0.1:4445 for HTTPS.

3.2.1- Console

Access 127.0.0.1:7657 to access the I2P console. From there there are many links to documentation, some applications, configuration options, display of software status, etc.

3.2.2- It is slow…

Remember that I mentioned that instead of the packets go “directly” to the destinations they go through N intermediaries that are decrypt the messages? Yeah. This process is slow and you feel it as you navigate the “ epsites “ (the sites that inhabit the I2P network). There are some configuration options that improve this, but I leave it for you to research about.

The warning here is: don't worry, it’s kind of slow, really.

4- Interesting contents

4.1- Bittorrent client

http://localhost: 7657/i2psnark/

But it’s just a client: there’s no built-in search.

4.2- Ed2k Client

http://echelon.i2p/imule/

I have not tested it yet, but it’s interesting to know that it exists.

4.3- Secure e-mail client

http://i2pwiki.i2p/index.php?title=I2P-Bote

I2P-Bote is an I2P plugin that allows sending “e-mail” messages between users of the network (it will not send e-mails to your friends “@uol.com, I'm sorry) in a distributed way (there is no central server) and secure (among other things, messages are encrypted end-to-end).

4.4- Distributed Forum

http: //i2pwiki.i2p/index.php?title=Syndie

The name “Syndie” comes from “syndication”: messages are copied from user to user, in the same fashion as Secure Scuttlebutt. And the implementation is not exclusive to I2P: the software also runs over Tor, clearnet (“the regular internet”) and Freenet.

5- Visual appeal

Perhaps the biggest “problem” of I2P is precisely that it is not a widely adopted technology: it is very noticeable that there are more programmers than designers using it. The mascot is bizarre, I have never seen an SVG version of the logo (which is not that beautiful, either), the website evokes a feeling of “was modern in the 90s”, the console is “Java style”, the Linux installer uses a skin style “old Aqua“ …

And this is something I have been thinking about, lately: the visual appeal is very important for the dissemination and adoption of new technologies. One day I want to write an entire article about it.

I, for example, on this journey for “censorship-free” and distributed technologies, began testing ZeroNet and then IPFS, mostly because their websites have a greater visual appeal .

So, here’s an appeal to the good-hearted designers: how about volunteering to help improve this I2P particular issue? It is not necessary to know how to program to collaborate with open source projects!

Epitome

I have put aside the “non-HTML” part of I2P, but it is possible, for example, to use other types of applications, such as SSH, over this protocol.

It is easy to install and start using I2P. It’s nothing out of this world and “normal users” can use with just a little effort and goodwill. And, as far as anonymity matters, it’s a technology that can help a lot of people in countries where having a different opinion (and talking about it) might end up making you fell a bit … dead.

--

--