Es wurden mehrere neue Versionen von Kryptografiebibliotheken veröffentlicht:
Die Veröffentlichung der Bibliothek OpenSSL 3.4.0 mit der Implementierung der SSL/TLS-Protokolle und verschiedener Verschlüsselungsalgorithmen. Der Support für OpenSSL 3.4 wird bis Oktober 2025 bereitgestellt. Der Support für frühere Versionen OpenSSL 3.3, 3.2, 3.1 und 3.0 LTS dauert bis April 2026, November 2025, März 2025 und September 2026. Der Code des Projekts wird unter der Apache 2.0-Lizenz verbreitet. Die wichtigsten Neuerungen:
- Unterstützung des Cipher-Suites für TLSv1.3, begrenzt durch die Datenintegritätsprüffunktionen (RFC 9150) und einschließlich der Algorithmen TLS_SHA256_SHA256 und TLS_SHA384_SHA384.
- Eine optionale Möglichkeit zur Nutzung einer zusätzlichen Entropiequelle für den Pseudorandomzahlengenerator basierend auf Jitter wurde implementiert, die durch die Bibliothek jitterentropy realisiert wird. Die Entropie wird erzeugt, indem die Unterschiede in der Wiederholungszeiten für einen bestimmten Satz von Anweisungen auf der CPU gemessen werden, die von vielen internen Faktoren abhängt und ohne physikalische Kontrolle über die CPU unvorhersehbar ist.
- Anfängliche Unterstützung für Attributzertifikate (AC – Attribute Certificate, RFC 5755), die Informationen über Zugriffsrechte, Berechtigungen und Attribute des Zertifikatsinhabers enthalten, wurde hinzugefügt und bescheinigt die Möglichkeit, bestimmte Aktionen durchzuführen. Beispielsweise kann ein AC-Zertifikat das Recht definieren, sich mit einem bestimmten Dienst zu verbinden.
- Die Unterstützung von X.509v3-Erweiterungen, die mit Attributzertifikaten verbunden sind, wurde hinzugefügt.
- Im FIPS-Provider wurde die Unterstützung der FIPS 140-3 Indicator API implementiert, die es ermöglicht festzustellen, ob eine bestimmte Operation in einem genehmigten Dienst verwendet wurde oder nicht.
- Im API BIO (Basic Input/Output) wurde die Verarbeitung von Eingaben im Base64-Format verbessert.
- Die Unterstützung für den Bau des openssl-Tools im PIE-Modus (Position Independent Executable), der die Adressraumrandomisierung (ASLR) ermöglicht, wurde hinzugefügt.
- Unterstützung für direkt extrahierbare kombinierte Algorithmen zur digitalen Signatur, wie RSA-SHA2-256, wurde hinzugefügt.
- Im PKCS#12 wurde die Unterstützung für PBMAC 1 (Password-Based Message Authentication Code 1, RFC 9579) hinzugefügt.
- Im openssl-Tool wurden die Optionen ‘-not_before’ und ‘-not_after’ hinzugefügt, um den Beginn und das Ende der Gültigkeitsdauer des Zertifikats explizit anzugeben.
- Die Möglichkeit, vorausberechnete Werte bei der Initialisierung von kryptografischen Algorithmen auf Basis der elliptischen Kurven P-256 zu verwenden, wurde bereitgestellt.
- Die Funktionen TS_VERIFY_CTX_set_* wurden als veraltet erklärt, ersetzt durch die Funktionen TS_VERIFY_CTX_set0_*, die eine verbesserte Semantik bieten.
- Die Funktionen SSL_SESSION_get_time(), SSL_SESSION_set_time() und SSL_CTX_flush_sessions() wurden als veraltet erklärt, stattdessen sollten SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() und SSL_CTX_flush_sessions_ex() verwendet werden, die das Problem des Jahres 2038 beseitigen.
- Die erwartete Unterstützung des QIUC-Protokolls in OpenSSL 3.4 ist Server auf die nächste Veröffentlichung verschoben worden.
Die Veröffentlichung des LibreSSL-Projekts 4.0.0, eines Forks von OpenSSL, der darauf abzielt, ein höheres Sicherheitsniveau und qualitativ hochwertige Unterstützung für die Protokolle SSL/TLS durch die Beseitigung überflüssiger Funktionalitäten, die Hinzufügung zusätzlicher Sicherheitsmaßnahmen und eine umfangreiche Bereinigung und Überarbeitung des Codes zu bieten. Die signifikante Versionsänderung resultiert aus der Verwendung einer Dezimalnummerierung (nach 3.9 folgt Version 4.0). Die bemerkenswertesten Änderungen sind:
- Erste Unterstützung für den Bau mit Emscripten, einem Compiler von C/C++ nach WebAssembly, hinzugefügt.
- Die Option CRLfile wurde zum Befehl 'openssl cms' hinzugefügt, um zusätzliche Listen widerrufener Zertifikate (CRL) anzugeben, die bei der Verifizierung verwendet werden.
- Die Unterstützung der mips32-Plattform wurde eingestellt.
- Der Zugriff auf Funktionen, die in Assembler geschrieben sind, über die öffentliche API wurde beendet (solche Funktionen werden jetzt nur noch über C-Wrapper-Funktionen bereitgestellt). Assembler-Implementierungen veralteter Ciphers für veraltete Architekturen wurden entfernt.
- Der Code zum Caching der Gültigkeit von Zertifikaten wurde entfernt, da dieser nach der Leistungsoptimierung keinen Sinn mehr hatte.
- Die Implementierung der X.509v3-Erweiterungen wurde verbessert, die Methoden für X.509v3 wurden vereinheitlicht und die zugehörige API gereinigt.
- Die Implementierung des Typs CRYPTO_EX_DATA wurde vollständig neu geschrieben.
- In libcrypto wurden die Funktionen atoi() und strtol() durch strtonum() ersetzt.
- Eine Header-Datei crypto_arch.h wurde hinzugefügt, in der architekturspezifischer Code ausgelagert wurde.
- Die Implementierung des DES-Algorithmus wurde überarbeitet und optimiert.
- Die Header-Dateien pem2.h, ssl2.h, ssl23.h und ui_compat.h wurden entfernt.
- Die Unterstützung des Hash-Algorithmus Whirlpool wurde entfernt.
- Die Funktionen HMAC_Init(), OPENSSL_load_builtin_modules(), X509_REQ_{get,set}_extension_nids(), X509_check_trust() wurden entfernt.
- Die Typen PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD und SSL_AEAD_CTX wurden entfernt.
- In libssl wurden die Funktionen SSL_CTX_set1_cert_store() und SSL_CIPHER_get_handshake_digest() hinzugefügt.
Die Version 3.6.0 der Kryptografiebibliothek Botan ist verfügbar, die im Projekt NeoPG, einem Fork von GnuPG 2, verwendet wird. Diese Bibliothek bietet eine große Sammlung von bereitgestellten Primitiven, die in den Protokollen TLS, X.509-Zertifikaten, AEAD-Verschlüsselungsverfahren, TPM-Modulen, PKCS#11, Passwort-Hashing und post-quanten Kryptographie verwendet werden (Hash-basierte Signaturen und Schlüsselaustausch basierend auf McEliece). Die Bibliothek ist in C++ geschrieben und unter der BSD-Lizenz verfügbar. In der neuen Version:
- Eine neue Bibliothek mit kryptografischen Algorithmen basierend auf elliptischen Kurven wurde integriert, deren Operationen auf Basis von Standardkurven 2-3 Mal schneller ausgeführt werden. Außerdem wurde eine neue API für die Low-Level-Arbeit mit elliptischen Kurven angeboten.
- Unterstützung für die kürzlich bei NIST standardisierten post-quanten Verschlüsselungsalgorithmen wurde hinzugefügt: FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) und FIPS 205 SLH-DSA (SPHINCS+).
- Die Unterstützung für TPM2-Chips wurde ergänzt.
- Die Nutzung von Berechnungen mit konstanter Ausführungszeit zur Absicherung gegen Seitenkanalangriffe wurde erweitert.
- Die Generierung zusätzlicher Entropie mithilfe der Bibliothek jitterentropy wurde hinzugefügt.
- Die Leistung der Verarbeitung von Daten im hexadezimalen Format und in Base64-Kodierung wurde verbessert.
- Die Unterstützung für die Prozessorerweiterungen AVX2-VAES und GFNI-AVX2 wurde hinzugefügt.
- Die Fähigkeitserkennung für die CPU-Architekturen armv7, aarch64 und ppc64 auf der OpenBSD-Plattform wurde hinzugefügt.
- Eine Build-Option zum Deaktivieren aller Inline-Assembly-Insertions wurde hinzugefügt.
Die Version 0.23.15 des Projekts Rustls, das eine Client- und Serverimplementation der Protokolle TLS1.2 und TLS1.3 für Rust-Projekte entwickelt, ist erschienen. Rustls bietet keine eigene Implementierung kryptografischer Primitiven, sondern nutzt externe Anbieter für kryptografische Funktionen (unterstützte Algorithmen sind ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM und AES256-GCM). Standardmäßig verwendet Rustls einen auf aws-lc-rs basierenden Kryptoprovider, der von Amazon entwickelt wird und auf dem C++-Code von AWS-LC basiert, der von BoringSSL (einem Fork von OpenSSL, der von Google betreut wird) abgeleitet ist. Auch die Bibliothek ring, die teilweise auf BoringSSL basiert und Code in Assembler, C++ und Rust kombiniert, kann als Kryptoprovider verwendet werden.
Die neue Version zeichnet sich durch erhebliche Leistungsoptimierungen aus. Es wird behauptet, dass die Rustls-Bibliothek nun gegenüber den Bibliotheken OpenSSL und BoringSSL in Tests, die die Bandbreite und die Geschwindigkeit der Aushandlung/Wiederherstellung von Verbindungen messen, überlegen ist, wenn kryptographische Primitive aus aws-lc-rs verwendet werden.

Quelle: opennet.ru
