PTIM 2020 Guest Blog - I2P and Mutual Aid


This guest blog, from the Invisible Internet Project (I2P) , explains the purpose of the software development kit, Rhizome.

Resilience Through Mutual Aid

Sadie Doreen, I2P

I2P Rhizome is a Go-based Software Development Kit. Its goal is to provide a toolchain for building privacy-aware applications. While components like this already exist, a new system is needed to accomplish the widespread integration of I2P with applications that I2P can support. To do this, we will build and document this toolchain for non-Java languages, drastically simplify the I2P installation process on Windows PC’s, and build a browser that integrates with the I2P network.

The next step is to look for projects that will benefit from using the I2P network, from file-sharing tools to encrypted email replacements. Among the first we have considered is Tor. The obvious answer, having already built a browser, is to turn every browser we could into a Snowflake, so when you are using the experimental Rhizome, you are also contributing to Tor as a Snowflake. This will support distribution of Snowflake by making use of I2P’s unique circumvention and blocking resistance capabilities. We learned about instances of attacking Snowflake users by identifying Snowflakes and cutting the users off. This is similar to blocking attempts to I2P, where I2P nodes are enumerated and then users are disconnected from those nodes.

However, due to I2P’s high churn rate, this blocking technique does not appear to have any practical effect on an I2P user’s ability to join the network or access information.

We can use I2P’s peer diversity, network churn, and obfuscated transport to allow access to Tor in blocked areas and still retain Tor’s security properties, and in particular their Exit Diversity. By using a bridge rather than an outproxy as a path to Tor, and accessing that bridge over I2P, we provide greater resistance to blocking.

We will also construct an I2P-Based Pluggable Transport (PT) for acquiring a Tor bridge via one of the roughly 55,000 participating nodes inside the I2P network, making it impossible to deny service to a bridge user by disconnecting them from the bridge IP. A benefit to this is also that the I2P network stands to grow by enabling more people to use it for more kinds of applications, which will increase all of its anonymity and security properties.

We realized we had an opportunity here, to take the lead in developing a generation of privacy-aware applications motivated by mutual aid, and that we could increase the strengths of other applications in the Privacy and Peer-to-Peer ecosystem. As the I2P Rhizome grows, so do both the Snowflake and I2P networks. As I2P-enabled PT’s are implemented, Tor gains the ability to use I2P to safely connect its own users to its own network in places where other Pluggable Transports have been ineffective. As the I2P network grows, I2P-based PT’s become more effective and therefore, so does Tor. As part of a foundational privacy ecosystem, people need and trust both Tor and I2P for their different privacy workflows.

I2P should not try to create outproxies to allow people to access the Internet, since this is not its strength in its privacy design. Rather than simply reproducing functionality, it makes most sense to provide a trusted option that people already use and rely on in the proposed SDK and support its distribution resilience.