Bibliotheken mit fester Vorauswahl an Algorithmen
Kalium
Java-Anbindung an libsodium bzw. NaCl von D.J. Bernstein.
NaCl
ist eine Krypto-Bibliothek, die von der Technischen Universität Eindhoven, D.J. Bernstein und
anderen entwickelt wurde, um typische Implementierungsfehlern vorzubeugen. Ein typischer Schwachpunkt
anderer Bibliotheken sind die oft zahlreichen inzwischen gebrochenen oder schwachen Algorithmen, die
aus Gründen der Abwärts-Kompatibilität oder aus historischen Gründen beibehalten werden. Ergänzen ließe
sich noch - obwohl nicht ausdrücklich erwähnt - die Probleme, die sich durch die oft fragwürdigen
Empfehlungen der NIST ergeben, die für
viele einen De-facto-Standard darstellen. NaCl weicht in manchen, aber nicht allen Punkten von
den NIST-Empfehlungen ab.
Entsprechend bietet NaCl keine große Auswahl an Algorithmen an, sondern eine durch Kryptolog*innen getroffene
Auswahl nach transparenten Kriterien. Zudem zielt NaCl auf eine bessere Performance und Resistenz gegen
Seitenkanal-Angriffe ab.
NaCl bietet u.a. Salsa20 als Stromchiffre (alternativ AES-CTR), Kryptographie über elliptische Kurven (Curve25519)
zum Schlüsselaustausch, Salsa20/Poly1305 zur authentifizierten Verschlüsselung (alternativ AES-GCM),
Sha256 und SHA512 als Hashfunktionen. Es wird jeweils ein neuer und ein älterer Standard-Algorithmus
für eine Aufgabe angeboten.
Die Auswahl ist sicher nicht unumstritten, aber bestimmt eine bessere Wahl als den
Empfehlungen von Institutionen wie der NIST oder Firmen wie RSA
blind zu folgen.
Die Sodium crypto library libsodium ist ein Fork von NaCl,
mit einigen Erweiterungen. libsodium enthält auch beispielsweise
Scrypt als Passwort-Hashing-Verfahren,
d.h. die Entwickler*innen reproduzieren auch nicht bloß stumpf die NIST-Empfehlungen (in diesem Falle PBKDF2).
Kalium ist eine Anbindung an libsodium für die Programmiersprache Java. Kalium setzt das JDK6 und
Apache Maven voraus.
Webseite: Kalium bei GitHub
Daneben gibt es noch weitere Java-Anbindungen an NaCl bzw. libsodium:
Sodium-JNI, und
Kalium-JNI, beide nutzen das Java Native Interface.
Conceal Java crypto library
Facebooks Krypto-Bibliothek.
http://facebook.github.io/conceal/
Ist noch in Arbeit...
Übersicht
JCE-Provider
Easy-To-Use-Bibliotheken
Spezialisierte Bibliotheken