how_intro, jbigi, links
This commit is contained in:
@ -1,13 +1,10 @@
|
||||
{% extends "_layout.html" %}
|
||||
{% block title %}Introduction to How I2P Works{% endblock %}
|
||||
{% block content %}<i>Note: the "how" documents have not been fully updated to include several changes
|
||||
including the new
|
||||
<a href="tunnel-alt.html">tunnel
|
||||
routing and encryption</a> algorithms, addressing <a href="todo#tunnelId">several</a>
|
||||
<a href="todo#tunnelLength">issues</a> (with the groundwork for addressing
|
||||
<a href="todo#ordering">others</a>), and other changes.</i>
|
||||
{% block title %}A Gentle Introduction{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<p>I2P is an effort to build, deploy, and maintain a network to support secure and anonymous
|
||||
<h2>A Gentle Introduction to How I2P Works</h2>
|
||||
|
||||
<p>I2P is a project to build, deploy, and maintain a network supporting secure and anonymous
|
||||
communication. People using I2P are in control of the tradeoffs between anonymity, reliability,
|
||||
bandwidth usage, and latency. There is no central point in the network on which pressure can be
|
||||
exerted to compromise the integrity, security, or anonymity of the system. The network supports
|
||||
@ -27,8 +24,8 @@ or even taken over to attempt more malicious attacks.</p>
|
||||
<p>The network itself is message oriented - it is essentially a secure and anonymous IP layer,
|
||||
where messages are addressed to cryptographic keys (Destinations) and can be significantly larger
|
||||
than IP packets. Some example uses of the network include "eepsites" (webservers hosting normal web
|
||||
applications within I2P), a <a href="http://bitconjurer.org/BitTorrent/">BitTorrent</a> port ("I2PSnark"),
|
||||
or a distributed data store. With the help of mihi's <a href="i2ptunnel">I2PTunnel</a> application,
|
||||
applications within I2P), a BitTorrent client ("I2PSnark"),
|
||||
or a distributed data store. With the help of the <a href="i2ptunnel">I2PTunnel</a> application,
|
||||
we are able to stream traditional TCP/IP applications over I2P, such as SSH, IRC, a squid proxy, and
|
||||
even streaming audio. Most people will not use I2P directly, or even need to know they're using it.
|
||||
Instead their view will be of one of the I2P enabled applications, or perhaps as a little controller
|
||||
@ -60,7 +57,7 @@ messages. Client applications have their own cryptographic identifier ("Destina
|
||||
to send and receive messages. These clients can connect to any router and authorize the temporary
|
||||
allocation ("lease") of some tunnels that will be used for sending and receiving messages through the
|
||||
network. I2P has its own internal <a href="how_networkdatabase">network database</a> (using a modification of
|
||||
the Kademlia algorithm) for scalable distributing routing and contact information securely.</p>
|
||||
the Kademlia algorithm) for distributing routing and contact information securely.</p>
|
||||
|
||||
<center><div class="box"><img src="_static/images/net.png" alt="Network topology example" title="Network topology example" /></div></center><br/>
|
||||
|
||||
@ -69,7 +66,7 @@ the Kademlia algorithm) for scalable distributing routing and contact informatio
|
||||
local router. They each have a pair of 2-hop inbound tunnels per destination (labeled 1,2,3,4,5 and 6),
|
||||
and a small subset of each of those router's outbound tunnel pool is shown with 2-hop outbound tunnels.
|
||||
For simplicity, Charlie's inbound tunnels and Dave's outbound tunnels are not shown, nor are the rest of
|
||||
each router's outbound tunnel pool (typically stocked with 5-10 tunnels at a time). When Alice and Bob
|
||||
each router's outbound tunnel pool (typically stocked with a few tunnels at a time). When Alice and Bob
|
||||
talk to each other, Alice sends a message out one of her (pink) outbound tunnels targeting one of Bob's
|
||||
(green) inbound tunnels (tunnel 3 or 4). She knows to send to those tunnels on the correct router by querying the
|
||||
network database, which is constantly updated as new leases are authorized and old ones expire.</p>
|
||||
@ -123,10 +120,8 @@ The size of the network (N) bears no impact.</p>
|
||||
<p>I2P initially began in Feb 2003 as a proposed modification to
|
||||
<a href="http://freenetproject.org">Freenet</a> to allow it to use alternate transports, such as
|
||||
<a href="http://java.sun.com/products/jms/index.jsp">JMS</a>, then grew into its own as an
|
||||
'anonCommFramework' in April 2003, turning into I2P in July, with code being cut in earnest in August '03,
|
||||
reaching the 0.2 release in September, 0.3 in March '04, and 0.4 in September '04.
|
||||
Release 0.5 followed in early '05 and 0.6 in mid-'05.
|
||||
I2P is currently moving forward according to
|
||||
'anonCommFramework' in April 2003, turning into I2P in July, with code being written in earnest starting in August '03.
|
||||
I2P is currently under development, folllowing
|
||||
the <a href="roadmap">roadmap</a>.</p>
|
||||
|
||||
<h2>Who?</h2>
|
||||
@ -136,8 +131,8 @@ who would like to contribute in other ways, such as critiques, peer review, test
|
||||
applications, or documentation. The entire system is open source - the router and most of the SDK are
|
||||
outright public domain with some BSD and Cryptix licensed code, while some applications like I2PTunnel
|
||||
and I2PSnark are GPL. Almost everything is written in Java (1.5+), though some third party applications
|
||||
are being written in Python. The code works on <a href="http://java.com/en/">Sun Java SE</a>, on the current <a href="http://www.kaffe.org/">Kaffe</a>, and
|
||||
we are hoping to get it working on <a href="http://gcc.gnu.org/java/">GCJ</a> sooner rather than later.</p>
|
||||
are being written in Python and other languages. The code works on <a href="http://java.com/en/">Sun Java SE</a> and other Java Virtual Machines.
|
||||
</p>
|
||||
|
||||
<h2>Where?</h2>
|
||||
<p>Anyone interested should
|
||||
@ -146,4 +141,10 @@ There are currently no scheduled development meetings, however
|
||||
<a href="meetings">archives are available</a>.</p>
|
||||
|
||||
<p>The current source is available in <a href="monotone.html">monotone</a>.</p>
|
||||
|
||||
<h2>Additional Information</h2>
|
||||
<p>
|
||||
See <a href="how.html">the Index to Technical Documentation</a>
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
@ -1,11 +1,6 @@
|
||||
{% extends "_layout_de.html" %}
|
||||
{% block title %}Einführung in die Arbeitsweise von I2P{% endblock %}
|
||||
{% block content %}<i>Hinweis: Dieses "How" Dokument ist noch nicht vollständig aktualisiert
|
||||
und enthält noch nicht die diversen Änderungen wie di neuen <a href="tunnel-alt.html">Tunnel
|
||||
Routing und Verschlüsselungs </a>Algorhytmen, die <a href="todo#tunnelId">verschiedene</a>
|
||||
<a href="todo#tunnelLength">Probleme</a> (inclusive benötigten Grundlagen, die
|
||||
<a href="todo#ordering">andere</a>Probleme behoben) behoben haben,
|
||||
und weitere Änderungen.</i>
|
||||
{% block content %}
|
||||
|
||||
<p>I2P ist ein Projekt, welches ein Netzwerk zum sicheren und anonymen Kommunizieren planen, aufbauen
|
||||
und betreuen wird. Nutzer von I2P haben die Kontrolle über die Verteilung zwischen Anonymität,
|
||||
|
@ -132,14 +132,15 @@ defeat this attack exist, but may be prohibitively expensive (see:
|
||||
<a href="http://citeseer.ist.psu.edu/freedman02tarzan.html">Tarzan</a>'s mimics
|
||||
or constant rate traffic). Most users are not concerned with this attack, as
|
||||
the cost of mounting it are extreme (and often require illegal activity).
|
||||
However, the attack is still possible, and those who want to defend against it
|
||||
would want to make appropriate countermeasures, such as not communicating with
|
||||
unknown destinations, not publishing one's current leaseSet in the network
|
||||
database, actively rerouting the associated tunnels 'mid stream', throttling the
|
||||
inbound tunnels themselves, and/or using restricted routes with trusted links
|
||||
to secure the local connection.
|
||||
However, the attack is still possible, for example by an observer at
|
||||
a large ISP or an Internet exchange point.
|
||||
Those who want to defend against it
|
||||
would want to take appropriate countermeasures, such as
|
||||
setting low bandwidth limits, and using unpublished or encrypted leasesets for eepsites.
|
||||
Other countermeasures, such as nontrivial delays and restricted routes, are
|
||||
not currently implemented.
|
||||
</p><p>
|
||||
As a partial defense against routers trying to route all the network's traffic,
|
||||
As a partial defense against a single router or group of routers trying to route all the network's traffic,
|
||||
routers contain limits as to how many tunnels can be routed through a single peer.
|
||||
As the network grows, these limits are subject to further adjustment.
|
||||
Other mechanisms for peer rating, selection and avoidance
|
||||
|
@ -1,10 +1,41 @@
|
||||
{% extends "_layout.html" %}
|
||||
{% block title %}jbigi{% endblock %}
|
||||
{% block content %}<p>Using JNI (Java Native Interface), a bit of C code (thanks ugha!), a little
|
||||
manual work and a piece of chewing gum it is possible to make the public key
|
||||
cryptography quite a bit faster.</p>
|
||||
{% block content %}
|
||||
|
||||
<h2>Requirements</h2>
|
||||
Updated October 2010, current as of router version 0.8
|
||||
|
||||
<h2>Overview</h2>
|
||||
<p>Using JNI (Java Native Interface), a bit of C code (thanks ugha!), a little
|
||||
manual work and a piece of chewing gum we have made several
|
||||
cryptography operations quite a bit faster.</p>
|
||||
|
||||
<p>
|
||||
The speedup comes from the super-fast
|
||||
<a href="http://gmplib.org/">GNU MP Bignum library (libgmp)</a>.
|
||||
We use a single function from libgmp -
|
||||
<a href="http://gmplib.org/manual-4.3.2/Integer-Exponentiation.html#Integer-Exponentiation">mpz_powm()</a>
|
||||
as a replacement for the
|
||||
<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#modPow%28java.math.BigInteger,%20java.math.BigInteger%29">Java Math library's BigInteger modPow()</a>.
|
||||
As modPow() is a significant computational portion of many crypto operations, this is of significant benefit.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The standard I2P installation includes about 20 versions of the library for different platforms,
|
||||
each about 50KB, inside the jbigi.jar file.
|
||||
The initialization of the JBigI library, including CPU identification, selection, and extraction
|
||||
of the correct loadable module, is handled by the
|
||||
<a href="http://docs.i2p2.de/javadoc/net/i2p/util/NativeBigInteger.html">NativeBigInteger class</a>.
|
||||
If no module is available for the current platform, the standard
|
||||
<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#modPow%28java.math.BigInteger,%20java.math.BigInteger%29">Java Math library's BigInteger modPow()</a>
|
||||
is used.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Rebuilding and Testing JBigI</h2>
|
||||
Following are the instructions to build a new jbigi library for your own platform
|
||||
and testing its performance.
|
||||
|
||||
<h3>Requirements</h3>
|
||||
<p>This works on Linux, and with a few changes in build.sh probably also on
|
||||
other platforms. FreeBSD has also been reported to work too. On Kaffee the
|
||||
speedup is very small, because it already uses native BitInteger internally.
|
||||
@ -20,16 +51,16 @@ your processor. The latest GMP may also
|
||||
be used instead of GMP 4.2.2, but it hasn't been tested by us.
|
||||
</p>
|
||||
|
||||
<h2>Step-by-step instructions</h2>
|
||||
<h3>Step-by-step instructions</h3>
|
||||
<ol>
|
||||
<li>Look at <a href="http://localhost:7657/logs.jsp">your wrapper logs</a>,
|
||||
at the point where I2P first starts. There should be one of two messages - either
|
||||
<li>Look at <a href="http://localhost:7657/logs.jsp">your running environment on the logs.jsp page</a>.
|
||||
There should be one of two status messages for JBigI - either
|
||||
<tt>
|
||||
INFO: Locally optimized native BigInteger loaded from the library path
|
||||
Locally optimized native BigInteger loaded from the library path
|
||||
</tt>
|
||||
or
|
||||
<tt>
|
||||
INFO: Native BigInteger library jbigi not loaded - using pure java</tt>.
|
||||
Native BigInteger library jbigi not loaded - using pure java</tt>.
|
||||
If the native BitInteger library was NOT loaded, you definitely need to
|
||||
compile your own.
|
||||
Certain platforms, such as OS X, OpenSolaris, and 64-bit systems,
|
||||
@ -37,7 +68,7 @@ may require you to compile your own library.
|
||||
If the BigInteger library was loaded, do at least the next step to see
|
||||
what your performance is.
|
||||
</li>
|
||||
<li>Look on <a href="http://localhost:7657/oldstats.jsp">http://localhost:7657/oldstats.jsp</a>
|
||||
<li>Look on <a href="http://localhost:7657/stats.jsp">http://localhost:7657/stats.jsp</a>
|
||||
to see what the lifetime average values for <code>crypto.elGamal.decrypt</code> and
|
||||
<code>crypto.elGamal.encrypt</code> are. The numbers are times in milliseconds. Copy these somewhere so you can compare
|
||||
them later on.
|
||||
@ -82,10 +113,20 @@ report.</li>
|
||||
<li>Copy <code>libjbigi.so</code> to your i2p directory</li>
|
||||
<li>Restart your I2P programs.</li>
|
||||
<li>On
|
||||
<a href="http://localhost:7657/oldstats.jsp">http://localhost:7657/oldstats.jsp</a>
|
||||
<a href="http://localhost:7657/stats.jsp">http://localhost:7657/stats.jsp</a>
|
||||
the <code>crypto.elGamal.decrypt</code> and <code>crypto.elGamal.encrypt</code>
|
||||
should be a lot faster.</li>
|
||||
</ol>
|
||||
|
||||
<p>Feedback is appreciated</p>
|
||||
<h2>To Do</h2>
|
||||
In the official packages,
|
||||
the CPUID and JBigI code has not been updated or rebuilt in several years.
|
||||
The packages include builds for windows, freebsd, and linux x86, and OSX PPC.
|
||||
We currently have no support for Intel Macs, 64 bit, or a number of new processors.
|
||||
The bundled GMP mpz_powm() is from libgmp 4.1.4 which is several years old.
|
||||
This is primarily a compiling and testing effort.
|
||||
A detailed TODO list is on <a href="http://zzz.i2p/topics/306">zzz.i2p (internal link)</a>.
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
@ -41,7 +41,7 @@ generell, das du die Bibliothek selber kompilierst.
|
||||
Falls die BigInteger Bibliothek geladen wurde, schaue zumindest mit dem
|
||||
letzten Schritt nach, wie deine Performance ist.
|
||||
</li>
|
||||
<li>Schaue auf <a href="http://localhost:7657/oldstats.jsp">http://localhost:7657/oldstats.jsp</a>
|
||||
<li>Schaue auf <a href="http://localhost:7657/stats.jsp">http://localhost:7657/stats.jsp</a>
|
||||
um deine Durchschnittszeiten seit dem Start von I2P für <code>crypto.elGamal.decrypt</code>
|
||||
und <code>crypto.elGamal.encrypt</code> abzulesen. Diese Zahlen sind Zeiten in Millisekunden.
|
||||
Notiere dir diese Werte zum späteren Vergleich.
|
||||
@ -82,7 +82,7 @@ gebe uns das bitte bekannt.</li>
|
||||
<li>Kopiere die <code>libjbigi.so</code> in dein i2p Verzeichnis</li>
|
||||
<li>Restarte deinen I2P Router.</li>
|
||||
<li>Auf
|
||||
<a href="http://localhost:7657/oldstats.jsp">http://localhost:7657/oldstats.jsp</a>
|
||||
<a href="http://localhost:7657/stats.jsp">http://localhost:7657/stats.jsp</a>
|
||||
sollten <code>crypto.elGamal.decrypt</code> und <code>crypto.elGamal.encrypt</code>
|
||||
erheblich schneller sein.</li>
|
||||
</ol>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<ul>
|
||||
<h4>Friends of I2P</h4>
|
||||
<li><a href="http://anomos.info/">Anomos Pseudonymous Encrypted Bittorrent</a></li>
|
||||
<li><a href="http://www.eff.org/">EFF</a></li>
|
||||
<li><a href="http://www.abenteuerland.at/onioncat/">Onioncat</a></li>
|
||||
<li><a href="http://www.pegasusnk.org/">The Pegasus Project</a></li>
|
||||
<li><a href="http://telecomix.org/">Telecomix</a></li>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<ul>
|
||||
<h4>Friends of I2P</h4>
|
||||
<li><a href="http://anomos.info/">Anomos Pseudonymous Encrypted Bittorrent</a></li>
|
||||
<li><a href="http://www.eff.org/">EFF</a></li>
|
||||
<li><a href="http://www.abenteuerland.at/onioncat/">Onioncat</a></li>
|
||||
<li><a href="http://www.pegasusnk.org/">The Pegasus Project</a></li>
|
||||
<li><a href="http://telecomix.org/">Telecomix</a></li>
|
||||
|
@ -7,7 +7,8 @@
|
||||
<div class="links">
|
||||
<ul>
|
||||
<h4> I2P 友好项目</h4>
|
||||
<li><a href="http://anomos.info/">Anomos Pseudonymous Encrypted Bittorrent</a></li>
|
||||
<li><a href="http://anomos.info/">Anomos Pseudonymous Encrypted Bittorrent</a></li>
|
||||
<li><a href="http://www.eff.org/">EFF</a></li>
|
||||
<li><a href="http://www.abenteuerland.at/onioncat/">Onioncat</a></li>
|
||||
<li><a href="http://www.pegasusnk.org/">The Pegasus Project</a></li>
|
||||
<li><a href="http://telecomix.org/">Telecomix</a></li>
|
||||
|
Reference in New Issue
Block a user