Wydanie bibliotek kryptograficznych OpenSSL 3.4, LibreSSL 4.0, Botan 3.6 i Rustls 0.23.15

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ń. Wydanie bibliotek kryptograficznych OpenSSL 3.4, LibreSSL 4.0, Botan 3.6 i Rustls 0.23.15 Wydanie bibliotek kryptograficznych OpenSSL 3.4, LibreSSL 4.0, Botan 3.6 i Rustls 0.23.15

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster