2004-07-06 21:38:20 +00:00
|
|
|
<h3>What is I2P?</h3>
|
2004-07-12 02:11:35 +00:00
|
|
|
<p>
|
|
|
|
I2P is a generic anonymous and secure peer to peer communication layer. It is
|
|
|
|
a network that sits on top of another network (in this case, it sits on top of
|
|
|
|
the internet). It is responsible for delivering a message anonymously and
|
2004-08-09 17:46:23 +00:00
|
|
|
securely to another location. We have both a more detailed
|
2004-10-08 23:30:06 +00:00
|
|
|
<a href="home">summary</a> and more in depth <a href="how">tech info</a>
|
2004-08-09 17:46:23 +00:00
|
|
|
available.
|
2004-07-12 02:11:35 +00:00
|
|
|
</p>
|
2004-07-06 20:39:18 +00:00
|
|
|
|
2004-10-18 18:28:05 +00:00
|
|
|
<h3>How can I access the web console from my other machines or password protect it?</h3>
|
2004-09-03 22:42:22 +00:00
|
|
|
<p>For security purposes, the router's admin console by default only listens for
|
|
|
|
connections on the local interface. However, with a little hacking, you can make
|
|
|
|
it reachable remotely:</p><ol>
|
|
|
|
<li>Open up clients.config and replace<br />
|
|
|
|
<code>clientApp.0.args=7657 127.0.0.1 ./webapps/</code><br />
|
|
|
|
with <br />
|
|
|
|
<code>clientApp.0.args=7657 0.0.0.0 ./webapps/</code></li>
|
|
|
|
<li>Go to <a href="http://localhost:7657/configadvanced.jsp">http://localhost:7657/configadvanced.jsp</a>
|
|
|
|
and add a new option: <code>consolePassword=foo</code> (or whatever password you want)</li>
|
|
|
|
<li>Go to <a href="http://localhost:7657/configservice.jsp">http://localhost:7657/configservice.jsp</a>
|
|
|
|
and hit "Hard restart", which restarts the JVM and reloads the client applications</li>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
<p>After that fires up, you should now be able to reach your console remotely. You
|
|
|
|
will be prompted for a username and password though - the username is "admin" and the
|
|
|
|
password is whatever you specified in step 2 above.</p>
|
|
|
|
|
2004-08-09 17:46:23 +00:00
|
|
|
<h3>How does it scale?</h3>
|
2004-07-06 20:39:18 +00:00
|
|
|
|
2004-08-09 17:46:23 +00:00
|
|
|
For now, we'll answer that question in three parts:
|
|
|
|
<ul>
|
|
|
|
<li>End to end communication consumes O(1) resources (bandwidth, CPU, etc).
|
|
|
|
More specifically, the load on the network (bytes transferred) is
|
|
|
|
<code>Bm*(Hi+Ho+1)</code>. Note that the size of the network (N) does
|
|
|
|
not come into play at any time.<ul>
|
|
|
|
<li><i>Bm</i>: number of bytes in a message</li>
|
|
|
|
<li><i>Hi</i>: number of hops in the target's inbound tunnel</li>
|
|
|
|
<li><i>Ho</i>: number of hops in the source's outbound tunnel</li>
|
|
|
|
</ul></li>
|
|
|
|
<li>Network database operation and maintenance consumes O(log(N)) resources
|
|
|
|
(where N = number of peers in the network). This is derived from the
|
|
|
|
<a href="http://citeseer.ist.psu.edu/529075.html">Kademlia</a> base.</li>
|
|
|
|
<li>For engineering reasons, the I2P implementation is not yet able to handle
|
|
|
|
operation in a large network. This is bound at the moment by threading
|
|
|
|
issues associated with our current TCP transport. The
|
|
|
|
<a href="roadmap">0.4.2 and 0.4.3</a> releases should address this.</li>
|
|
|
|
</ul>
|
2004-07-06 20:39:18 +00:00
|
|
|
|
|
|
|
<h3>Whats an "eepsite"?</h3>
|
2004-07-12 02:11:35 +00:00
|
|
|
<p>
|
|
|
|
An eepsite is a website that is hosted anonymously - you can access it by
|
|
|
|
setting your web browser's HTTP proxy to use the web proxy (typically it
|
|
|
|
listens on localhost port 4444), and browsing to the site.
|
|
|
|
</p>
|
2004-07-06 20:39:18 +00:00
|
|
|
|
2004-12-03 00:55:57 +00:00
|
|
|
<h3>What do the Active x/y numbers mean in the router console?</h3>
|
2004-07-12 02:11:35 +00:00
|
|
|
<p>
|
2004-12-03 00:55:57 +00:00
|
|
|
x is the number of peers you've sent or received a message from
|
|
|
|
successfully in the last minute, y is the number of peers seen in the last
|
|
|
|
hour or so.
|
2004-10-08 23:21:03 +00:00
|
|
|
</p>
|
|
|
|
|
2004-10-14 19:48:45 +00:00
|
|
|
<h3><a name="ports">What ports does I2P use?</a></h3>
|
2004-10-14 19:47:26 +00:00
|
|
|
<p>
|
|
|
|
Ok, here's a rundown of the default ports (everything is configurable
|
|
|
|
through various settings, of course):
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
<li><b>TCP port 8887 inbound</b><br />
|
|
|
|
This is used for interrouter communication, and must be reachable
|
|
|
|
from the outside world. Everything will fail if this isn't -
|
|
|
|
you'll have "Active: 0/x".</li>
|
|
|
|
<li><b>Outbound TCP on any port</b><br />
|
|
|
|
Since anyone can change their router to listen on any port,
|
|
|
|
you need to be able to contact them</li>
|
|
|
|
<li><b>Outbound UDP on port 123, allowing replies</b><br />
|
|
|
|
This is necessary for I2P's internal time sync (via SNTP -
|
|
|
|
querying a random SNTP host in pool.ntp.org or another
|
|
|
|
server you specify)</li>
|
|
|
|
<li><b>Local I2P ports: </b><ul>
|
|
|
|
<li><b>7654:</b> I2P Client Protocol port, used by client apps</li>
|
|
|
|
<li><b>7656:</b> SAM bridge, a higher level socket API for clients</li>
|
|
|
|
<li><b>7657:</b> your router console</li>
|
|
|
|
<li><b>7658:</b> your eepsite</li>
|
|
|
|
<li><b>32000:</b> local control channel for the service wrapper</li></ul></li>
|
|
|
|
<li><b>Default I2PTunnel ports:</b><ul>
|
2004-10-14 19:48:45 +00:00
|
|
|
<li><b>2401:</b> cvs.i2p (disabled by default)</li>
|
|
|
|
<li><b>4444:</b> HTTP proxy</li>
|
|
|
|
<li><b>6668:</b> irc.duck.i2p</li>
|
|
|
|
<li><b>7659:</b> smtp.postman.i2p (disabled by default)</li>
|
|
|
|
<li><b>7660:</b> pop.postman.i2p (disabled by default)</li>
|
|
|
|
<li><b>7661:</b> irc.baffled.i2p (disabled by default)</li></ul></li>
|
2004-10-14 19:47:26 +00:00
|
|
|
</ul>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
The local I2P ports and the I2PTunnel ports do not need to be reachable from
|
|
|
|
remote machines, but *should* be reachable locally. You can also create
|
|
|
|
additional ports for I2PTunnel instances via http://localhost:7657/i2ptunnel/
|
|
|
|
(and in turn, would need to get your firewall to allow you local access, but
|
|
|
|
not remote access, unless desired).
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
So, to summarize, the only thing that needs to be reachable from the outside
|
|
|
|
world is your inbound I2NP port (default 8887). You will also need any
|
|
|
|
software firewall to allow local TCP access to the local ports, as well as
|
|
|
|
any LAN or WAN access to other proxies you choose to expose.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
2004-07-06 21:38:20 +00:00
|
|
|
<h3>How anonymous is I2P anyway?</h3>
|
2004-07-12 02:11:35 +00:00
|
|
|
<p>
|
|
|
|
I2P is working to support militant grade anonymity, <b>but we're not there
|
|
|
|
yet</b>. You should not use I2P if you <i>need</i> your anonymity - there are
|
|
|
|
likely bugs and perhaps other issues, and it has not gone through sufficient
|
|
|
|
peer review. However, we're confident that we'll get to the point that we can
|
|
|
|
provide anonymity strong enough even for militantly subversive political
|
|
|
|
action (so it should be fine for you to chat online with your friends)
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
An important point to note is that I2P does <b>not</b> provide anonymity or
|
|
|
|
security of content after it is transferred - you can still download and run a
|
|
|
|
virus, or even submit your full name and bank account numbers on an eepsite.
|
|
|
|
I2P only tries to provide communication security and anonymity - what you say
|
|
|
|
or do is up to you.
|
|
|
|
</p>
|
2004-07-06 20:39:18 +00:00
|
|
|
|
2004-07-06 21:38:20 +00:00
|
|
|
<h3>How does I2P protect itself from denial of service attacks?</h3>
|
2004-07-06 20:39:18 +00:00
|
|
|
<p>
|
|
|
|
For this too, there are several answers. Short summary is "the best it can".
|
2004-07-06 21:38:20 +00:00
|
|
|
Briefly, I2P attempts to defend against several forms of denial of service
|
|
|
|
attack, all without centralized coordination. For applications using I2P,
|
2004-07-06 20:39:18 +00:00
|
|
|
the computer they are located on is not exposed to the public, so the
|
|
|
|
standard denial of service attack cannot be directly mounted against them
|
|
|
|
(ala ping floods, etc). Instead, attackers are forced to go after the
|
|
|
|
gateways to that application's inbound tunnels - of which there can be many
|
|
|
|
at any given time. Each gateway also has its own limits for how many messages
|
|
|
|
and/or bytes it agrees to send down the tunnel. The application itself
|
|
|
|
periodically tests these tunnels to make sure they're still reachable and
|
|
|
|
usable, so if one of them is taken out by an IP level attack of any kind,
|
|
|
|
it will know and rebuild its leases, specifying new gateways.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
To prevent individual users from consuming excessive resources (registering
|
|
|
|
too many tunnels, sending too many messages, looking up too many entries in
|
2004-07-12 02:11:35 +00:00
|
|
|
the network database, and creating too many router and destination
|
|
|
|
identities), various messages and identities have a certificate attached to
|
|
|
|
them. Currently these certificates are blank, but down the line they will be
|
|
|
|
filled with
|
2004-07-21 09:25:12 +00:00
|
|
|
<a href="http://en.wikipedia.org/wiki/Hashcash">HashCash</a>
|
2004-07-12 02:11:35 +00:00
|
|
|
- a computationally expensive collision based on the contents of the
|
|
|
|
message or identity. They can also be filled with other certificates as
|
|
|
|
deemed necessary (e.g. a blinded certificate from an anonymous certificate
|
|
|
|
authority, a receipt for real currency payments, etc). It is also believed
|
|
|
|
that through this certificate attachment system I2P will be able to overcome
|
|
|
|
the <a href="http://citeseer.nj.nec.com/douceur02sybil.html">sybil attack</a>.
|
2004-07-06 20:39:18 +00:00
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Other denial of service attacks include creating a few thousand high quality
|
2004-07-06 21:38:20 +00:00
|
|
|
I2P routers, running them for a week, and then taking them all offline. This
|
2004-07-12 02:11:35 +00:00
|
|
|
indeed may force the creation of islands within the network, but the
|
|
|
|
underlying <a href="how_networkdatabase">Network Database</a> is built off of
|
|
|
|
a modified <a href="http://citeseer.nj.nec.com/529075.html">Kademlia</a>,
|
|
|
|
which should allow the network to recover with minimal overhead (though, of
|
|
|
|
course, if a router has literally no other peers left after the bad ones
|
|
|
|
leave, that router will need to 'reseed' - fetch a reference to another router
|
|
|
|
through some other mechanism).
|
2004-07-06 20:39:18 +00:00
|
|
|
</p>
|
|
|
|
|
2004-08-09 17:46:23 +00:00
|
|
|
<h3>What about greedy users? Won't there be a tragedy of the commons?</h3>
|
2004-08-11 15:56:06 +00:00
|
|
|
<p>Quoting a <a href="http://dev.i2p.net/pipermail/i2p/2004-August/000400.html">recent
|
|
|
|
discussion</a> on the mailing list:</p>
|
2004-08-09 17:46:23 +00:00
|
|
|
<pre>
|
|
|
|
> Now for this ultra-greedy user, it's irrational
|
|
|
|
> to allocate downstream bandwidth for anything other
|
|
|
|
> than his current huge Bittorrent download. So he
|
|
|
|
> uses 99% of his bandwidth for his own tunnels, and
|
|
|
|
> 1% of his bandwidth for everyone else's tunnels.
|
|
|
|
|
|
|
|
> It will become a practical issue because people will
|
|
|
|
> write "I2P download optimizers," which will abuse the
|
|
|
|
> network in exactly this way.
|
|
|
|
|
|
|
|
Here, I'll write the optimal download optimizer for them.
|
|
|
|
Turn
|
|
|
|
java -jar i2ptunnel.jar
|
|
|
|
into
|
|
|
|
java -Dtunnels.depthInbound=0 -jar i2ptunnel.jar
|
|
|
|
|
|
|
|
voila. The data they receive goes through no other routers,
|
|
|
|
allowing them to get obscene transfer rates (but not wire
|
|
|
|
speed, since we /do/ have some overhead :). They still do
|
|
|
|
have some level of anonymity, since no one else knows their
|
|
|
|
tunnels are 0 hops long (at least, not without statistical
|
|
|
|
analysis or some powerful traffic analysis). This is
|
|
|
|
probably (IANAL) sufficient "plausible deniability" for
|
|
|
|
many people (the RIAA/MPAA won't get the court orders to
|
|
|
|
mount the necessary traffic analysis, though the NSA
|
|
|
|
wouldn't bother)
|
|
|
|
|
|
|
|
The load on the network is negligible - while they don't add
|
|
|
|
any resources to the net, they don't take much away either.
|
|
|
|
The network routes around these users, and peers only bother
|
|
|
|
to attempt routing their tunnels through those other peers
|
|
|
|
who *do* have excess bandwidth.
|
|
|
|
|
|
|
|
There is no rational cause for someone who only needs a
|
|
|
|
basic level of anonymity (e.g. for illicit copying of bits)
|
|
|
|
but still wants high throughput to want longer tunnels.
|
|
|
|
|
|
|
|
Now, the scenario where the user needs better anonymity but
|
|
|
|
still wants higher throughput, they must be made to
|
|
|
|
understand that they simply *can't get* better anonymity
|
|
|
|
unless they route other people's traffic. Its a functional
|
|
|
|
necessity for dealing with powerful adversaries, since
|
|
|
|
otherwise their traffic sticks out like a sore thumb.
|
|
|
|
</pre>
|
|
|
|
|
2004-08-31 22:18:46 +00:00
|
|
|
<h3>How do I know that I'm talking with who I'm trying to talk with?</h3>
|
|
|
|
|
|
|
|
<p>I2P is "cryptographically addressed" - meaning when you try to talk to
|
|
|
|
someone, you are trying to talk to whomever has their cryptographic
|
|
|
|
private key. In addition, everything is end to end encrypted. No one -
|
|
|
|
not even your local router - knows the contents of what you send to
|
|
|
|
them (unless 2048bit ElGamal is broken). </p>
|
|
|
|
|
2004-09-05 22:17:33 +00:00
|
|
|
<h3>Do I have to restart my router after updating my hosts.txt?</h3>
|
2004-09-05 22:16:29 +00:00
|
|
|
|
|
|
|
<p>No, the host should just work after saving the file.</p>
|
|
|
|
|
2004-07-06 20:39:18 +00:00
|
|
|
<hr />
|
|
|
|
<h3>I have a question!</h3>
|
2004-07-12 02:11:35 +00:00
|
|
|
<p>
|
2004-08-09 17:46:23 +00:00
|
|
|
Great! Please either drop an email to the
|
|
|
|
<a href="http://dev.i2p.net/mailman/listinfo/i2p">mailing list</a>
|
|
|
|
or post to the <a href="http://forum.i2p.net/">forum</a> and we'll
|
|
|
|
post it here (with the answer, hopefully).</p>
|