{% extends "_layout_de.html" %} {% block title %}jbigi{% endblock %} {% block content %}

Die Webseite wird gerade überholt und dieses Dokument kann alte Informationen enthalten

Mit JNI (Java Native Interface), ein wenig C Quelltext (Danke ugha!), ein wenig manueller Arbeit und etwas Kaugummi ist es möglich, die "public key" Kryptography ein ganzes Stück schneller zu machen.

Anforderungen

Dieses funktioniert unter Linux, mit ein paar Anpassungen in build.sh möglicherweise auch auf anderen Plattformen. Es wurde berichtet, das es auch auf FreeBSD funktioniert. Mit Kaffee als JVM sind die Verbesserungen sehr gering, da es schon intern die BigInteger Bibliothek benutzt. Blackdown Java produziert komische Fehler. Da du etwas kompilieren wirst, brauchst Du ein JDK, ein JRE wird nicht funktionieren.

Der nötige Quelltext ist in der Monotone Datenbank und in dem aktuellsten Quelltext TAR Archive vorhanden.

Die GNU MP Bignum Bibliothek (libgmp) muss installiert werden, wenn diese nicht schon in deinem System vorhanden ist. Sie kann von http://gmplib.org/#DOWNLOAD geholt werden.Selbst wenn sie schon als Binärdatei installiert hast, ist es noch ein Versuch wert, GMP selber zu kompilieren, damit diese die speziellen Instruktionen DEINES Prozessors nutzen kann. es ist auch möglich, die aktuelle Version 4.2.2 von GMP anstelle der 4.1.4 zu nutzen. Aber die Version 4.2.2 braucht noch etwas mehr Testen, damit sie als Standard gesetzt werden kann zum Bauen der jbigi.jar Datei.

Schritt-für-Schritt Anleitung

  1. Schaue auf dein Wrapper logs, an den Punkt, bei dem I2P das erste mal startet. Da sollte eine von zwei Nachrichten stehen - entweder INFO: Locally optimized native BigInteger loaded from the library path oder INFO: Native BigInteger library jbigi not loaded - using pure java. Wenn die native BigInteger Bibliothek NICHT geladen wurde, musst Du diese definitiv selber kompilieren. Gewisse Plattformen, wie z.B. OS X, OpenSolaris und 64-bit Systeme, erfordern generell, das du die Bibliothek selber kompilierst. Falls die BigInteger Bibliothek geladen wurde, schaue zumindest mit dem letzten Schritt nach, wie deine Performance ist.
  2. 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. Der Durchschnitt im I2P Netzwerk ist etwa 20ms. Wenn deine Zeiten geringer als 50ms für einen recht neuen Prozessor oder geringer als 100ms für einen älteren Prozessor sind, sollten diese Werte OK sein.
  3. Besorge dir den aktuellen Quelltext von I2P auf der Download Seite, oder besorge dir den Quelltext aus der Monotone Datenbank auf mtn.i2p2.de
  4. Im Quelltextbaum betrete das core/c/jbigi Verzeichnis
  5. Lese das README. Du musst GMP Version 4.2.2 von http://gmplib.org/#DOWNLOAD holen, speichere es als gmp-4.2.2.tar.bz2.
  6. Schaue dir die build.sh Datei an, falls deine JAVA_HOME Umgebungsvariable gesetzt ist und du Linux nutzt, sollte es funktionieren. Andernfalls ändere die Einstellungen.
  7. Führe build.sh aus
    Möglicherweise gibt es beim Bauen ein paar Fehler, da die jni.h and jni_md.h Dateien fehlen. Die einfahc Lösung ist, diese Dateien aus deiner Java Installation ins core/c/jbigi/jbigi/include Verzeichnis zu kopieren.
    Falls Du die build.sh Datei aus dem core/c/ Verzeichnis aufrufst, wird eine jbigi.jar mit allen möglichen CPU Varianten gebaut.
    Eine Datei mit dem Namen libjbigi.so sollte in deinem aktuellem Verzeichnis oder im lib Verzeichnis erstellt worden sein. Falls nicht, gib uns das bitte bekannt mit den Fehlermeldungen.
  8. Folge den Anweisungen in core/c/README um die Bibliothek zu installieren und starte den Test der neuen jbigi. Lese die letzten Zeilen der Ausgabe vom Test für einige zusätzlichen Infos, es ist etwa sowas hier:
    native run time:  5842ms ( 57ms each)
    java run time:   41072ms (406ms each)
    native = 14.223802103622907% of pure java time
    
    Wenn die nativen Werte etwa 5-7x (oder mehr) schneller sind, ist alles OK. Falls nicht, gebe uns das bitte bekannt.
  9. Kopiere die libjbigi.so in dein i2p Verzeichnis
  10. Restarte deinen I2P Router.
  11. Auf http://localhost:7657/stats.jsp sollten crypto.elGamal.decrypt und crypto.elGamal.encrypt erheblich schneller sein.

Rückmeldungen sind sehr gerne gesehen!

{% endblock %}