Zum Hauptinhalt Zur Navigation Zur Suche

Ressl: LibreSSL-Projekt erstellt nutzerfreundliches SSL-API

Das von OpenBSD-Entwicklern gestartete LibreSSL-Projekt erstellt ein komplett neues API, das von OpenSSL und dem Fork abstrahiert. Die Schnittstelle soll auf tatsächliche Anwendungsfälle beschränkt bleiben und könnte universellen Charakter für den TLS-Stack bekommen.
/ Sebastian Grüner
1 Kommentare News folgen (öffnet im neuen Fenster)
LibreSSL erarbeitet ein neues API für TLS-Verbindungen. (Bild: Bob Beck)
LibreSSL erarbeitet ein neues API für TLS-Verbindungen. Bild: Bob Beck

Bereits kurz nach der Ankündigung des OpenSSL-Fork durch das OpenBSD-Team haben laut dem Entwickler Ted Unangst viele kritisiert, dass das "OpenSSL-API so schlecht ist, dass es sich nicht lohnt, es zu erhalten". Wie Unangst nun in einer Rückschau auf die bisherige Entwicklung von LibreSSL bekanntgibt, arbeiten er und Joel Sing deshalb an einer Umsetzung eines neuen API.

Die neue Schnittstelle werde vorerst unter dem Namen ReSSL entwickelt, der in etwa für "SSL neu gedacht" stehen könnte, schreibt Unangst in der Zusammenfassung seines Vortrags(öffnet im neuen Fenster) auf der EuroBSD-Konferenz. Bisher hat das LibreSSL-Projekt die API zu OpenSSL kompatibel gehalten, um schnell und erfolgreich von anderen Projekten eingesetzt werden zu können. Darauf baut die neue Schnittstelle nun auf.

Hauptziele von ReSSL sind "Konsistenz und Einfachheit". Die Bibliothek ist als Antwort auf die Frage "Was möchte ein Nutzer machen?" geschrieben und nicht etwa als Antwort auf "Was erlaubt das TLS-Protokoll einem Nutzer?". Mit der neuen Software ist es möglich, "sichere Verbindungen mit einem Server aufzunehmen, einen sicheren Server aufzusetzen und einige Daten über diese Verbindung zu lesen und zu schreiben".

Um das zu erreichen, werden keinerlei Interna aus OpenSSL oder ReSSL, wie Typen oder Funktionen, preisgegeben. Denn Nutzer oder auch Entwickler sollten sich eigentlich so gut wie nie Gedanken über X.509(öffnet im neuen Fenster) oder ASN.1(öffnet im neuen Fenster) machen müssen. Folglich ließe sich das API auch sehr einfach in andere Sprachen einbinden. Es sei sogar so einfach, dass damit fast genauso gut der Transport über einen SSH-Tunnel beschrieben werden könne, schreibt Unangst.

Darüber hinaus erlaube die aktuelle Implementierung die Verwendung mit OpenSSL, aber auch mit anderen Projekten, die einen TLS-Stack anbieten. Denn es wird nicht einfach versucht, das OpenSSL-API nachzubauen, sondern ein so abstraktes und so gutes API bereitzustellen, dass andere dieses allgemeine API ebenfalls nutzen können. Denn der Bruch mit der Monokultur helfe dem gesamten Ökosystem.

Hostname-Verifikation und erste Client-Anwendungen

Die wohl herausragendste neue Funktion in ReSSL ist die Verifikation des Hostname. Denn neben der Überprüfung des Zertifikats muss, um die Sicherheit zu gewährleisten, auch der Hostname in dem Zertifikat mit dem der aktuellen Verbindung verglichen werden. Doch Letzteres werde oft vergessen, da OpenSSL diese Funktion nicht anbiete und sie selbst implementiert werden muss.

Zwar gebe es viele Sprachanbindungen für die Funktion, etwa in Python oder Ruby, die Umsetzung werde trotzdem oft vergessen. Zudem unterscheide sich der Code der einzelnen Implementierungen sehr häufig im Detail, da jeder diesen neu schreiben muss. Das betreffe vor allem Situationen mit Wildcard-Zertifikaten oder eingebetteten Null-Bytes. Die Überprüfung des Hostname ist in ReSSL immer aktiviert, es gebe außerdem keine Möglichkeit, die Funktion ohne die Verifikation aufzurufen.

Damit sich das neue API durchsetzt, müssen die Anwendungen umgeschrieben werden, die SSL- beziehungsweise TLS-Verbindungen verwenden. Ebenso muss die Schnittstelle in ihrer Verwendung getestet werden. Dazu synchronisiert das Team die Entwicklung von ReSSL mit den OpenBSD-eigenen FTP-Client und HTTP-Daemon, damit sich ReSSL wie gewünscht weiterentwickeln kann.

Für die Verwendung in externen Programme ist die Bibliothek wohl derzeit aber noch nicht reif genug, wie Unangst einräumt. Das dauere voraussichtlich noch einige Monate. Der Code des neuen API findet sich unter dem Namen Libressl(öffnet im neuen Fenster), der des OpenSSL-Forks wird in Libssl(öffnet im neuen Fenster) gepflegt. Die portable Version von Letzterem steht über die Server von OpenBSD(öffnet im neuen Fenster) bereit.


Relevante Themen