OpenSSL 4.1.0 ist erschienen. Die wichtigste Neuerung: Die Bibliothek spricht jetzt DTLS 1.3. Dazu kommen schnellere Post-Quanten-Verfahren, GREASE und ein paar Änderungen, die Du beim Upgrade im Blick haben solltest.
DTLS 1.3 mit vier bekannten Fehlern
DTLS 1.3 baut auf TLS 1.3 auf und sichert Kommunikation über Datagrammprotokolle wie UDP ab. Auch die SSL-Listener-API versteht jetzt DTLS. Einen Einstieg bietet der DTLS-1.3-Leitfaden in der OpenSSL-Dokumentation.
Ganz rund läuft die Implementierung allerdings noch nicht, das Projekt nennt vier bekannte Fehler. Ein Server kann den Handshake mit dem Alert unexpected_message abbrechen, wenn der Client Nachrichten der ersten Serverantwort bestätigt, bevor er selbst antwortet. Das passiert zum Beispiel nach einem Paketverlust. Außerdem wirft OpenSSL nach einem KeyUpdate alle anderen unbestätigten Post-Handshake-Nachrichten aus dem Puffer für Wiederholungen. Geht dann ein NewSessionTicket verloren, sendet die Bibliothek es nicht erneut. An einer Korrektur arbeitet das Projekt bereits.
Die beiden übrigen Fehler betreffen DTLS-Listener. Ein dauerhafter Empfangsfehler kann dort als SSL_ERROR_WANT_READ gemeldet werden, sodass Anwendungen einfach weiterwarten. Bei nicht blockierenden Verbindungen läuft es umgekehrt: Ein vorübergehender Schreibfehler taucht womöglich als SSL_ERROR_SYSCALL statt als SSL_ERROR_WANT_WRITE auf. Wertet eine Anwendung das als fatal, kappt sie eine Verbindung, die eigentlich noch nutzbar wäre.
GREASE, Post-Quanten und IKEv2
Neu ist GREASE nach RFC 8701. Der Mechanismus streut reservierte Platzhalterwerte in den TLS-Handshake, etwa in die Liste der angebotenen Cipher-Suites. Aushandeln lässt sich damit nichts. Die Gegenseite soll unbekannte Angebote ignorieren, statt den Handshake abzubrechen. So sollen TLS-Implementierungen nicht an künftigen Protokollerweiterungen scheitern.
Schneller geworden sind die Post-Quanten-Verfahren ML-DSA für digitale Signaturen und ML-KEM für den Schlüsselaustausch per Schlüsselkapselung. Auf ppc64le profitieren beide, auf x86_64 nur ML-DSA. Ebenfalls auf x86_64 gibt es neue AVX-512- und VAES-Optimierungen für die AES-CBC-Entschlüsselung. Dazu kommt eine Schlüsselableitungsfunktion für IKEv2, die aus dem gemeinsamen Diffie-Hellman-Geheimnis die Schlüssel des Protokolls erzeugt.
Beim Upgrade beachten
Wer mit tsget Zeitstempel abruft, braucht vor dem Update das Perl-Modul Net::Curl::Easy aus der CPAN-Distribution Net-Curl. Es löst das nicht mehr gepflegte WWW::Curl::Easy ab. Und wer OpenSSL selbst baut, muss auf die Configure-Optionen no-ecdsa und no-ecdh verzichten, die ohnehin nie wirklich etwas abgeschaltet haben. Wer elliptische Kurven komplett deaktivieren will, nimmt stattdessen no-ec. Alle Änderungen und bekannten Fehler stehen in den Release Notes zu 4.1.0.