diff --git a/www.i2p2/pages/how_intro.html b/www.i2p2/pages/how_intro.html index 923e564f..2118511b 100644 --- a/www.i2p2/pages/how_intro.html +++ b/www.i2p2/pages/how_intro.html @@ -1,13 +1,10 @@ {% extends "_layout.html" %} -{% block title %}Introduction to How I2P Works{% endblock %} -{% block content %}Note: the "how" documents have not been fully updated to include several changes -including the new -tunnel -routing and encryption algorithms, addressing several -issues (with the groundwork for addressing -others), and other changes. +{% block title %}A Gentle Introduction{% endblock %} +{% block content %} -

I2P is an effort to build, deploy, and maintain a network to support secure and anonymous +

A Gentle Introduction to How I2P Works

+ +

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.

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 BitTorrent port ("I2PSnark"), -or a distributed data store. With the help of mihi's I2PTunnel application, +applications within I2P), a BitTorrent client ("I2PSnark"), +or a distributed data store. With the help of the I2PTunnel 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 network database (using a modification of -the Kademlia algorithm) for scalable distributing routing and contact information securely.

+the Kademlia algorithm) for distributing routing and contact information securely.

Network topology example

@@ -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.

@@ -123,10 +120,8 @@ The size of the network (N) bears no impact.

I2P initially began in Feb 2003 as a proposed modification to Freenet to allow it to use alternate transports, such as JMS, 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 roadmap.

Who?

@@ -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 Sun Java SE, on the current Kaffe, and -we are hoping to get it working on GCJ sooner rather than later.

+are being written in Python and other languages. The code works on Sun Java SE and other Java Virtual Machines. +

Where?

Anyone interested should @@ -146,4 +141,10 @@ There are currently no scheduled development meetings, however archives are available.

The current source is available in monotone.

+ +

Additional Information

+

+See the Index to Technical Documentation +

+ {% endblock %} diff --git a/www.i2p2/pages/how_intro_de.html b/www.i2p2/pages/how_intro_de.html index 814583d0..9d1ba4c0 100644 --- a/www.i2p2/pages/how_intro_de.html +++ b/www.i2p2/pages/how_intro_de.html @@ -1,11 +1,6 @@ {% extends "_layout_de.html" %} {% block title %}Einführung in die Arbeitsweise von I2P{% endblock %} -{% block content %}Hinweis: Dieses "How" Dokument ist noch nicht vollständig aktualisiert -und enthält noch nicht die diversen Änderungen wie di neuen Tunnel -Routing und Verschlüsselungs Algorhytmen, die verschiedene -Probleme (inclusive benötigten Grundlagen, die -andereProbleme behoben) behoben haben, -und weitere Änderungen. +{% block content %}

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, diff --git a/www.i2p2/pages/how_threatmodel.html b/www.i2p2/pages/how_threatmodel.html index 91600512..cefbb3d2 100644 --- a/www.i2p2/pages/how_threatmodel.html +++ b/www.i2p2/pages/how_threatmodel.html @@ -132,14 +132,15 @@ defeat this attack exist, but may be prohibitively expensive (see: Tarzan'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.

-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 diff --git a/www.i2p2/pages/jbigi.html b/www.i2p2/pages/jbigi.html index b8eb9ce9..31621094 100644 --- a/www.i2p2/pages/jbigi.html +++ b/www.i2p2/pages/jbigi.html @@ -1,10 +1,41 @@ {% extends "_layout.html" %} {% block title %}jbigi{% endblock %} -{% block content %}

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.

+{% block content %} -

Requirements

+Updated October 2010, current as of router version 0.8 + +

Overview

+

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.

+ +

+The speedup comes from the super-fast +GNU MP Bignum library (libgmp). +We use a single function from libgmp - +mpz_powm() +as a replacement for the +Java Math library's BigInteger modPow(). +As modPow() is a significant computational portion of many crypto operations, this is of significant benefit. +

+ +

+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 +NativeBigInteger class. +If no module is available for the current platform, the standard +Java Math library's BigInteger modPow() +is used. +

+ + +

Rebuilding and Testing JBigI

+Following are the instructions to build a new jbigi library for your own platform +and testing its performance. + +

Requirements

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.

-

Step-by-step instructions

+

Step-by-step instructions

    -
  1. Look at your wrapper logs, -at the point where I2P first starts. There should be one of two messages - either +
  2. Look at your running environment on the logs.jsp page. +There should be one of two status messages for JBigI - either -INFO: Locally optimized native BigInteger loaded from the library path +Locally optimized native BigInteger loaded from the library path or -INFO: Native BigInteger library jbigi not loaded - using pure java. +Native BigInteger library jbigi not loaded - using pure java. 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.
  3. -
  4. Look on http://localhost:7657/oldstats.jsp +
  5. Look on http://localhost:7657/stats.jsp to see what the lifetime average values for crypto.elGamal.decrypt and crypto.elGamal.encrypt are. The numbers are times in milliseconds. Copy these somewhere so you can compare them later on. @@ -82,10 +113,20 @@ report.
  6. Copy libjbigi.so to your i2p directory
  7. Restart your I2P programs.
  8. On -http://localhost:7657/oldstats.jsp +http://localhost:7657/stats.jsp the crypto.elGamal.decrypt and crypto.elGamal.encrypt should be a lot faster.
-

Feedback is appreciated

+

To Do

+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 zzz.i2p (internal link). + + + {% endblock %} diff --git a/www.i2p2/pages/jbigi_de.html b/www.i2p2/pages/jbigi_de.html index 2d00ffd6..c3368582 100644 --- a/www.i2p2/pages/jbigi_de.html +++ b/www.i2p2/pages/jbigi_de.html @@ -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. -
  • Schaue auf http://localhost:7657/oldstats.jsp +
  • Schaue auf http://localhost:7657/stats.jsp um deine Durchschnittszeiten seit dem Start von I2P für crypto.elGamal.decrypt und crypto.elGamal.encrypt abzulesen. Diese Zahlen sind Zeiten in Millisekunden. Notiere dir diese Werte zum späteren Vergleich. @@ -82,7 +82,7 @@ gebe uns das bitte bekannt.
  • Kopiere die libjbigi.so in dein i2p Verzeichnis
  • Restarte deinen I2P Router.
  • Auf -http://localhost:7657/oldstats.jsp +http://localhost:7657/stats.jsp sollten crypto.elGamal.decrypt und crypto.elGamal.encrypt erheblich schneller sein.
  • diff --git a/www.i2p2/pages/links.html b/www.i2p2/pages/links.html index a55ecbd6..b10805ec 100644 --- a/www.i2p2/pages/links.html +++ b/www.i2p2/pages/links.html @@ -6,6 +6,7 @@