Opublikowane zostały kilka nowych wersji bibliotek kryptograficznych:
Wydanie biblioteki OpenSSL 3.4.0 z implementacją protokołów SSL/TLS oraz różnych algorytmów szyfrowania. Wsparcie dla OpenSSL 3.4 będzie realizowane do października 2025 roku. Wsparcie dla wcześniejszych wersji OpenSSL 3.3, 3.2, 3.1 i 3.0 LTS potrwa do kwietnia 2026 roku, listopada 2025 roku, marca 2025 roku i września 2026 roku odpowiednio. Kod projektu jest udostępniany na licencji Apache 2.0. Główne nowości:
- Dodano wsparcie dla zestawu szyfrów TLSv1.3, ograniczonego funkcjami weryfikacji integralności danych (RFC 9150) i obejmującego algorytmy TLS_SHA256_SHA256 oraz TLS_SHA384_SHA384.
- Dodano opcjonalną możliwość używania dodatkowego źródła entropii opartego na jitterze w generatorze liczb pseudolosowych, zaimplementowanego przy użyciu biblioteki jitterentropy. Generowanie entropii odbywa się poprzez pomiar różnic w czasie ponownego wykonywania określonego zestawu instrukcji na CPU, zależnego od wielu czynników wewnętrznych i nieprzewidywalnego bez fizycznej kontroli nad CPU.
- Dodano wstępne wsparcie dla certyfikatów atrybutów (AC — Attribute Certificate, RFC 5755), które zawierają informacje o uprawnieniach, kompetencjach oraz atrybutach posiadacza certyfikatu, potwierdzających możliwość dokonania określonych działań. Na przykład, certyfikat AC może określać prawo do podłączenia się do jakiejś usługi.
- Dodano wsparcie dla rozszerzeń X.509v3 związanych z certyfikatami atrybutów.
- W dostawcy FIPS zaimplementowano wsparcie dla API wskaźnika FIPS 140-3, umożliwiającego określenie, czy dana operacja była realizowana w zatwierdzonym serwisie.
- W API BIO (Basic Input/Output) poprawiono przetwarzanie danych wejściowych w formacie Base64.
- Dodano wsparcie dla budowy narzędzia openssl w trybie PIE (Position Independent Executable), umożliwiającym wykorzystanie randomizacji przestrzeni adresowej (ASLR).
- Dodano wsparcie dla bezpośrednio wydobywalnych, kombinowanych algorytmów podpisu cyfrowego, takich jak RSA-SHA2-256.
- W PKCS#12 dodano wsparcie dla PBMAC 1 (Password-Based Message Authentication Code 1, RFC 9579).
- Do narzędzia openssl dodano opcje ‘-not_before’ i ‘-not_after’ do wyraźnego określenia daty rozpoczęcia i zakończenia ważności certyfikatu.
- Dodano możliwość korzystania z wcześniej obliczonych wartości przy inicjowaniu algorytmów kryptograficznych opartych na krzywych eliptycznych P-256.
- Funkcje TS_VERIFY_CTX_set_* zostały oznaczone jako przestarzałe, a w ich miejsce wprowadzono funkcje TS_VERIFY_CTX_set0_* z ulepszoną semantyką.
- Funkcje SSL_SESSION_get_time(), SSL_SESSION_set_time() i SSL_CTX_flush_sessions() zostały uznane za przestarzałe, zamiast nich należy używać SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() i SSL_CTX_flush_sessions_ex(), które nie mają problemu z rokiem 2038.
- Oczekiwana w OpenSSL 3.4 obsługa protokołu QIUC po stronie serwera została opóźniona do następnej wersji.
Wydanie projektu LibreSSL 4.0.0, rozwijającego fork OpenSSL, mającego na celu zapewnienie wyższego poziomu bezpieczeństwa i lepszej obsługi protokołów SSL/TLS poprzez usunięcie zbędnej funkcjonalności, dodanie dodatkowych środków ochrony oraz przeprowadzenie znacznej czyszczenia i przearanżowania bazy kodu. Znaczna zmiana numeru wersji jest związana z użyciem numeracji dziesiętnej (po 3.9 następuje wersja 4.0). Najbardziej zauważalne zmiany:
- Dodano wstępną obsługę kompilacji z użyciem Emscripten, kompilatora z C/C++ do WebAssembly.
- W poleceniu «openssl cms» dodano opcję CRLfile do wskazywania dodatkowych list odwołanych certyfikatów (CRL), które będą wykorzystywane podczas weryfikacji.
- Wsparcie dla platformy mips32 zostało zakończone.
- Zakończono udostępnianie funkcji napisanych w języku asemblera przez publiczne API (podobne funkcje są teraz dostępne tylko przez funkcje-wrappery w języku C). Usunięto asemblerowe implementacje przestarzałych szyfrów dla przestarzałych architektur.
- Usunięto kod do buforowania ważności certyfikatów, który stracił sens po optymalizacji wydajności.
- Ulepszono implementację rozszerzeń X.509v3, zjednolicono metody X.509v3 i przeprowadzono czyszczenie API związanych z X.509v3.
- Całkowicie przepisano implementację typu CRYPTO_EX_DATA.
- W libcrypto funkcje atoi() i strtol() zostały zastąpione przez strtonum().
- Dodano plik nagłówkowy crypto_arch.h, w którym umieszczono kod specyficzny dla architektur sprzętowych.
- Przeprojektowano i zoptymalizowano implementację algorytmu DES.
- Usunięto pliki nagłówkowe pem2.h, ssl2.h, ssl23.h i ui_compat.h.
- Usunięto wsparcie dla algorytmu haszującego Whirlpool.
- Usunięto funkcje HMAC_Init(), OPENSSL_load_builtin_modules(), X509_REQ_{get,set}_extension_nids(), X509_check_trust().
- Usunięto typy PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD oraz SSL_AEAD_CTX.
- W libssl dodano funkcje SSL_CTX_set1_cert_store() i SSL_CIPHER_get_handshake_digest().
Dostępna jest wersja biblioteki kryptograficznej Botan 3.6.0, używanej w projekcie NeoPG, forku GnuPG 2. Biblioteka oferuje dużą kolekcję gotowych prymitywów stosowanych w protokole TLS, certyfikatach X.509, szyfrach AEAD, modułach TPM, PKCS#11, haszowaniu haseł oraz kryptografii postkwantowej (podpisy oparte na haszu i uzgadnianie kluczy oparte na McEliece). Biblioteka została napisana w języku C++ i jest udostępniana na licencji BSD. W nowej wersji:
- Zintegrowano nową bibliotekę z algorytmami kryptograficznymi opartymi na krzywych eliptycznych, której operacje na bazie typowych krzywych są wykonywane 2-3 razy szybciej. Oferowany jest również nowy interfejs API do niskopoziomowej pracy z krzywymi eliptycznymi.
- Dodano wsparcie dla niedawno ustandaryzowanych w NIST algorytmów postkwantowego szyfrowania: FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) i FIPS 205 SLH-DSA (SPHINCS+).
- Dodano wsparcie dla chipów TPM2.
- Rozszerzono wykorzystanie obliczeń o stałym czasie wykonania operacji dla ochrony przed atakami z boku.
- Dodano generowanie dodatkowej entropii za pomocą biblioteki jitterentropy.
- Zwiększono wydajność przetwarzania danych w formacie szesnastkowym i kodowaniu base64.
- Dodano wsparcie dla rozszerzeń procesora AVX2-VAES i GFNI-AVX2.
- Dodano wykrywanie możliwości CPU armv7, aarch64 i ppc64 na platformie OpenBSD.
- Dodano opcję kompilacji do wyłączenia wszystkich złączek inline assemblera.
Wydanie projektu Rustls 0.23.15, rozwijającego implementację klienta i serwera protokołów TLS1.2 i TLS1.3 dla projektów w języku Rust. Rustls nie dostarcza własnej implementacji prymitywów kryptograficznych, lecz korzysta z zewnętrznych dostawców funkcji kryptograficznych (wsparcie dla algorytmów ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM oraz AES256-GCM). Domyślnie Rustls korzysta z dostawcy kryptograficznego opartego na bibliotece aws-lc-rs, rozwijanej przez Amazon i bazującej na kodzie C++ z AWS-LC, bazującym na projekcie BoringSSL (forkowanym przez Google OpenSSL). Jako dostawca kryptograficzny może być również używana biblioteka ring, częściowo oparta na BoringSSL, łącząca kod w assemblerze, C++ i Rust.
Nowa wersja charakteryzuje się istotnymi optymalizacjami wydajności. Twierdzi się, że używając kryptoprymitywów, biblioteka aws-lc-rs w Rustls obecnie przewyższa biblioteki OpenSSL i BoringSSL w testach mierzących przepustowość oraz szybkość negocjacji/odnowienia połączeń.

Źródło: opennet.ru
