GnuTLS
# GnuTLS

GnuTLS (GNU Transport Layer Security Library) ist eine freie Implementierung von SSL-, TLS- und DTLS-Protokollen zum Aufbau von verschlüsselten Netzwerkverbindungen.

GnuTLS bietet einen ähnlichen Funktionsumfang wie OpenSSL, ist aber unter GPL bzw. LGPLv2 lizenziert und kann damit im Gegensatz zu OpenSSL auch auf Systemen, bei denen OpenSSL nicht zum normalen Distributionsumfang gehört, ohne weiteres in GPL-lizenzierte Software wie Gnome, Exim, Lynx u. ä. eingebunden werden.

Zusätzlich zu den meisten in OpenSSL implementierten Funktionen unterstützt GnuTLS TLSv1.1, TLSv1.2, zlib-Kompression, Authentifizierung über Secure Remote Protocol (SRP), X.509- und OpenPGP-Schlüssel. Mit GnuTLS wird die Konsolenanwendung gnutls-cli, das Dienstprogramm gnutls-serv und zur Fehlerbeseitigung der TLS/SSL-Verbindungen das Anwendungsprogramm gnutls-cli-debug eingerichtet.

## Kontroverse

Obwohl ursprünglich als GNU-Projekt begonnen, löste im Dezember 2012 der Hauptentwickler Nikos Mavrogiannopoulos GNU TLS vom GNU-Projekt los. Grund waren Kontroversen mit der Free Software Foundation über Policies. Ein Widerspruch von Richard Stallman, welcher Forking empfahl, blieb wirkungslos. Im selben Monat folgte der GNU-Sed-Maintainer Paolo Bonzini und legte seine Funktionen nieder.

## Massive Sicherheitslücke zwischen 2018 und 2020

Bei GnuTLS 3.6.4, welches am 24. September 2018 veröffentlicht wurde, hatte eine Regression die Implementierung des TLS-Protokolls beschädigt (CVE-2020-13777). Aufgrund dieses Fehlers erstellte der TLS-Server keinen sicheren Schlüssel für das Sitzungsticket und nutzte für Ver- und Entschlüsselung bis zur ersten Schlüsselrotation ausschließlich Nullen. In der Protokollversion TLS 1.3 können Angreifer die Authentifizierung umgehen und fremde Sitzungen übernehmen. Bei TLS 1.2 ist es sogar möglich, gespeicherte Aufzeichnungen früherer Sitzungen nachträglich zu entschlüsseln. Behoben wurde der Fehler am 3. Juni 2020 in GnuTLS 3.6.14.

