# WolfSSL

wolfSSL (ehemals CyaSSL oder yet another SSL, yaSSL) ist eine kleine, portable, integrierte SSL/TLS-Programmbibliothek, welche besonders für Entwickler von Embedded-Systemen geeignet ist. Es ist eine Open-Source-Implementierung von TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3, und DTLS 1.0 und 1.2), die in der Programmiersprache C erstellt wurde. Sie beinhaltet SSL/TLS Client-Bibliotheken und SSL/TLS Server-Implementierungen sowie Unterstützung multipler Programmierschnittstellen, einschließlich derer, die von SSL und TLS definiert werden. wolfSSL enthält außerdem eine OpenSSL-Kompatibilitätsschnittstelle mit den meist genutzten OpenSSL Funktionen.
Als Nachfolger von CyaSSL ist wolfSSL eine C++ basierte SSL-Bibliothek für Embedded-Umgebungen und Echtzeitbetriebssysteme mit beschränkten Ressourcen.

## Plattformen

Der Quelltext von wolfSSL ist portabel, wodurch es für eine Vielzahl von Plattformen verfügbar ist. Intel empfahl 2015, mit Intel Galileo wolfSSL zu nutzen, um in der Arduino-Umgebung eine sichere Kommunikationsmethode verfügbar zu haben.

## Geschichte

Der Ursprung von yaSSL, oder yet another SSL (was soviel bedeutet wie: noch ein anderes SSL), liegt im Jahr 2004. OpenSSL war zu dieser Zeit verfügbar und war doppelt lizenziert unter der OpenSSL Lizenz und der SSLeay Lizenz. yaSSL, als Alternative, wurde ebenfalls entwickelt und doppelt lizenziert – mit einer gewerblichen Lizenz und der GPL. yaSSL bot eine modernere API, kommerziellen Entwicklersupport und wurde von OpenSSL-Kompatibilität abgerundet. Der erste große Nutzer von wolfSSL /CyaSSL /yaSSL war MySQL. Durch Bündelung mit MySQL erreichte yaSSL extrem hohe Verteilungszahlen in Millionenhöhe.
Heute wird wolfSSL sowohl im Open-Source-Bereich, als auch für kommerzielle Projekte genutzt. wolfSSL ist in vielen Arten von Netzwerkgeräten enthalten, wie etwa Smart Devices in Autos, IP-Telefone, Mobiltelefone, Router, Drucker und Kreditkartenscanner.

## Protokolle

Die leichtgewichtige SSL-Bibliothek wolfSSL implementiert die folgenden Protokolle:
* SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
* DTLS 1.0, DTLS 1.2
Notizen:
SSL 2.0 – wolfSSL unterstützt SSL 2.0 nicht, aufgrund von Sicherheitsbedenken
SSL 3.0 – wolfSSL hat SSL 3.0 während der Kompilierung seit wolfSSL 3.6.6 deaktiviert; es kann jedoch noch immer aktiviert werden.
wolfSSL nutzt die folgenden Kryptographie-Bibliotheken:

### wolfCrypt

wolfSSL nutzt standardmäßig die kryptographischen Dienste von wolfCrypt. wolfCrypt bietet RSA, ECC, DSS, Diffie-Hellman, EDH, NTRU, DES, Triple DES, AES (CBC, CTR, CCM, GCM), Camellia, IDEA, ARC4, HC-128, ChaCha20, MD2, MD4, MD5, SHA-1, SHA-2, BLAKE2, RIPEMD-160, Poly1305, Zufallszahlengenerator, weitreichende Integer-Unterstützung und Base64-Codierung.
wolfCrypt beinhaltet außerdem Unterstützung für die neuen Algorithmen Curve25519 und Ed25519.
wolfCrypt agiert als Backend für einige beliebte Softwarepakete und -bibliotheken, unter anderem MIT Kerberos.
wolfCrypt wurde 2015 vom National Institute of Standards and Technology der USA als Verschlüsselungssoftware entsprechend dem FIPS 140-2 Standard validiert. Im März 2019 erfolgte eine Revalidierung der Version 4.0.0.

### NTRU

CyaSSL+ enthält die NTRUEncrypt Public-Key-Verschlüsselung. Das Hinzufügen von NTRU zu CyaSSL+ entstand durch eine Kooperation zwischen yaSSL und Security Innovation. NTRU ist besonders für mobile und Embedded-Umgebungen geeignet, da es nur eine reduzierte Bitgröße benötigt, um die gleiche Sicherheit wie andere Public-Key-Systeme zu gewährleisten. Außerdem ist nicht bekannt, dass es anfällig für Angriffe von Quantencomputern wäre. Einige Cipher Suites, die NTRU verwenden, sind mit CyaSSL+ verfügbar, dazu gehören AES-256, RC4 und HC-128.

## Lizenzierung

wolfSSL ist ein Open-Source-Programm, welches unter der GNU General Public License GPLv2 (alternativ unter einer kommerziellen Lizenz) lizenziert ist.