I2P is an anonymous network also known as THE INVINCIBLE INTERNET PROJECT, it’s an overlay network and darknet that exposes a simple layer that applications can use to anonymously and securely send messages to one another. Some of those include Web surfing, chatting, blogging and file transfers. The software that executes this layer is called an I2P router and a computer running I2P is called an I2P node. All channeling is encrypted end to end, and even the final destinations are cryptographic identifiers. When sending a message they are a total of four layers of encryption used. This process is known as Garlic routing which is a alternative of Onion routing, garlic routing benefits from the research done on the latter but makes some different adjustments.
I2P’s design allows peers that use I2P to communicate with each other unidentified- the recipient and the sender are undetectable to each other as also can’t be seen by third parties as well. The network itself is message based (Internet Protocol), but there is a library available to allow reliable streaming communication on top of it (Transmission control protocol). Each client application has their own I2P router that finds other clients by querying against the fully distributed “network database” – an originally structured distributed hash table (DHT) rooted off the Kademlia algorithm. Each router conveys traffic for its peers which it uses as cover traffic for its own.
I2P takes on the role of the middleware only this time it’s message related – when applications want to send some data to a cryptographic identifier, I2P takes good care making sure the message gets there securely and anonymously. I2P also puts together a simple library for streaming to allow I2P’s anonymous optimum-effort messages to be transferred reliably in-order streams, transparently offering a transmission control protocol based congestion control method fine-tuned for the high bandwidth delay product of the network. While there have been several simple socks proxies available to tie existing applications into the network, their value has been limited as nearly every application routinely uncovers what, in an anonymous context, is subtle information. The only safe way to go is to fully audit an application to ensure proper operation and to assist in that we provide a series of application programming interfaces in various languages which can be used to make the most out of the network.
The development group of I2P is an open group, all who have interest in being part of the team are welcomed to get involved, and all of the code is open source. The core of I2P software development kit and the current router implementation is done in Java, and there is a simple application interface for accessing the network from other programming languages (with a C library available, and both Python and Perl in development). The network is still actively being developed and has not yet reached the 1.0 release as of yet. I2P is similar to Tor but their differences lie in the threat model and out-proxy design.