|
Java: Kryptographische Bibliotheken
SUN-JCE-Provider und Oracle-JCE-Provider bieten in dem meisten Fällen gerade noch das
Allernotwendigste an, in manchen Fällen nicht einmal das.
Blockchiffren wie RC2, RC4, DES sind vertreten, die eigentlich nicht mehr verwendet werden sollten,
genauso wie die Hashfunktionen MD2, MD5 und SHA1,
bei der Passwort-Verschlüsselung war lange Zeit Triple-DES die beste Option für die Blockchiffre und
PBKDF2 ist bis heute die einzige Option zur Ableitung des Schlüssels, die Schlüssellänge für RSA ist
standardmäßig 1024.
Es gibt zwar auch Algorithmen, die noch nicht als unsicher gelten: AES, Blowfish, vielleicht auch
noch Triple-DES als Blockchiffren, SHA256, SHA384 und SHA512 als Hashfunktionen, aber die Auswahl
ist doch sehr eingeschränkt. Im Grunde werden die wichtigsten NIST-Standards verspätet umgesetzt.
Das ist in den meisten Fällen nicht die schlechteste Wahl (abgesehen von PBKDF2), denn nicht alle
wollen sich damit beschäftigen, welcher Algorithmus aktuell noch als sicher gilt. Aber es ist auch
nicht gerade die beste Wahl, denn NIST-Standards sind inzwischen mit einem Fragezeichen versehen
und bei der Verwendung längst gebrochener Algorithmen wie von RC2 oder DES werden keine Warnmeldungen
ausgegeben. Wer sich nicht auf dem Gebiet der Kryptographie umschauen will, ist mit einer Vorauswahl
an Algorithmen wie Kalium besser bedient.
Für geringe Ansprüche und einfache Anwendungsgebiete ist der SUN-JCE-Provider oft ausreichend und liegt
praktischerweise meistens schon vor. Für mehr taugt er allerdings nicht.
Gut, das es noch andere Bibliotheken gibt.
Bibliotheken mit JCE-Provider (Cryptographic Service Providers) lassen sich einfach (immer gleich)
implementieren und setzen kaum kryptographische Kenntnisse voraus. Die Auswahl an Algorithmen ist meist
wesentlich größer als beim SUN-Provider.
Noch mehr Auswahl ergibt sich erst, wenn die Provider-Architektur verlassen wird. Dann gibt es kaum
kryptographische Algorithmen, nicht in Java implementiert sind.
JCE-kompatible Bibliotheken (JCE-Provider)
Manche Bibliotheken bieten eine feste Auswahl an Algorithmen an. Das hat den
Vorteil, dass die Auswahl der Algorithmen nicht den Entwickler*innen überlassen bleibt und längst als
unsicher geltende Primitive wie die Blockchiffre DES oder die Hashfunktion MD2 aussortiert werden können.
Zwecks Abwärtskompatibilität verbleiben diese Algorithmen in den anderen Bibliotheken und es wird niemand daran
gehindert oder wenigstens davor gewarnt, sie weiter zu benutzen.
Das ist sicher eine gute Initiative, um die Verwendung gebrochener Algorithmen zu verhindern.
Bibliotheken mit fester Vorauswahl an Algorithmen
Andere Bibliotheken, Toolkits oder Frameworks zeichnen sich dadurch aus, dass sie besonders einfach
zu verwenden sind. Die Provider-Architektur bietet auch zahlreiche Möglichkeiten der fehlerhaften
Implementierung, der Quellcode zur einfachen Verschlüsselung einer Datei oder eines Textes kann lang
sein. Easy-To-Use-Bibliotheken bieten meist auch keine große Auswahl an Algorithmen an, aber sie sind vor
allem sehr einfach zu implementieren.
Easy-To-Use-Bibliotheken
Neben den Allround-Bibliotheken, die möglichst jeden Bedarf abdecken wollen, gibt es auch
spezialisierte Bibliotheken, die sich auf einen bestimmten Bereich beschränken und diesen aber oft
besonders umfassend implementieren, seien es Hashfunktionen, Kryptographie über Elliptische Kurven
oder andere Bereiche.
Spezialisierte Bibliotheken
|
|