Au fost publicate mai multe versiuni noi ale bibliotecilor criptografice:
Lansarea bibliotecii OpenSSL 3.4.0 cu implementarea protocoalelor SSL/TLS și a diferitelor algoritmi de criptare. Suportul pentru OpenSSL 3.4 va continua până în octombrie 2025. Suportul pentru ramurile anterioare OpenSSL 3.3, 3.2, 3.1 și 3.0 LTS va dura până în aprilie 2026, noiembrie 2025, martie 2025 și septembrie 2026 respectiv. Codul proiectului este distribuit sub licența Apache 2.0. Principalele noutăți:
- A fost adăugată suportul pentru setul de cifre pentru TLSv1.3, limitat de funcțiile de verificare a integrității datelor (RFC 9150) și incluzând algoritmi TLS_SHA256_SHA256 și TLS_SHA384_SHA384.
- A fost adăugată opțiunea de a folosi o sursă suplimentară de entropie bazată pe jitter în generatorul de numere pseudo-aleatorii, implementată cu ajutorul bibliotecii jitterentropy. Generarea entropiei se face prin măsurarea diferențelor în timpul executării repetate a unui set specific de instrucțiuni pe CPU, care depind de mulți factori interni și sunt imprevizibile fără un control fizic asupra CPU-ului.
- A fost adăugată suportul inițial pentru certificatele de autorizare (AC — Attribute Certificate, RFC 5755), care includ informații despre drepturile de acces, competențele și atributele titularului certificatului, care atestă capacitatea de a efectua anumite acțiuni. De exemplu, un certificat AC poate defini dreptul de a se conecta la un anumit serviciu.
- A fost adăugată suportul pentru extensiile X.509v3 asociate cu certificatele de autorizare.
- În provider-ul FIPS a fost implementat suportul pentru API Indicator FIPS 140-3, care permite determinarea utilizării unei anumite operațiuni într-un serviciu aprobat sau nu.
- În API BIO (Basic Input/Output) a fost îmbunătățită procesarea datele de intrare în format Base64.
- A fost adăugată suportul pentru construirea utilitarului openssl în modul PIE (Position Independent Executable), care permite utilizarea randomizării spațiului de adresare (ASLR).
- A fost adăugată suportul pentru algoritmii de semnătură digitală combiniți extrabili, cum ar fi RSA-SHA2-256.
- În PKCS#12 a fost adăugată suportul pentru PBMAC 1 (Password-Based Message Authentication Code 1, RFC 9579).
- Utilitarului openssl i-au fost adăugate opțiunile ‘-not_before’ și ‘-not_after’ pentru a indica explicit timpul de început și de sfârșit al valabilității certificatului.
- A fost oferită posibilitatea de a utiliza valori pre-calculatoare la inițializarea algoritmilor criptografici pe baza curbelor eliptice P-256.
- Funcțiile TS_VERIFY_CTX_set_* au fost declarate învechite, fiind înlocuite de funcțiile TS_VERIFY_CTX_set0_* cu o semantica îmbunătățită.
- Funcțiile SSL_SESSION_get_time(), SSL_SESSION_set_time() și SSL_CTX_flush_sessions() au fost declarate învechite; în locul acestora, se recomandă utilizarea SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() și SSL_CTX_flush_sessions_ex(), care elimină problema anului 2038.
- Suportul așteptat pentru protocolul QIUC în OpenSSL 3.4 server a fost amânat până la următoarea versiune.
Lansarea proiectului LibreSSL 4.0.0, un fork al OpenSSL, destinat să ofere un nivel mai ridicat de securitate și suport de calitate pentru protocoalele SSL/TLS, eliminând funcționalitățile inutile, adăugând măsuri de protecție suplimentare și realizând o curățare semnificativă și o revizuire a bazei de cod. Schimbarea semnificativă a numărului de versiune este legată de utilizarea numerotării zecimale (după 3.9 urmează versiunea 4.0). Cele mai notabile schimbări:
- S-a adăugat suport inițial pentru compilarea folosind Emscripten, un compilator din C/C++ în WebAssembly.
- Comenzii „openssl cms” i s-a adăugat opțiunea CRLfile pentru a specifica liste suplimentare de certificate revocate (CRL) care vor fi utilizate la verificare.
- Suportul pentru platforma mips32 a fost oprit.
- Accesul la funcțiile scrise în limbaj de asamblare prin API-ul public a fost întrerupt (aceste funcții sunt acum disponibile doar prin funcții de legătură în limbajul C). Au fost eliminate implementările în asamblare ale criptării învechite pentru arhitecturi învechite.
- Codul pentru memoria cache a validității certificatelor a fost eliminat, deoarece a devenit inutil după optimizarea performanței.
- Implementarea extensiilor X.509v3 a fost îmbunătățită, metodele X.509v3 au fost unificate și API-urile asociate cu X.509v3 au fost curățate.
- Implementarea tipului CRYPTO_EX_DATA a fost complet rescrisă.
- În libcrypto, funcțiile atoi() și strtol() au fost înlocuite cu strtonum().
- A fost adăugat fișierul de antet crypto_arch.h, în care a fost mutat codul specific arhitecturilor hardware.
- Implementarea algoritmului DES a fost reproiectată și optimizată.
- Fișierele de antet pem2.h, ssl2.h, ssl23.h și ui_compat.h au fost eliminate.
- Suportul pentru algoritmul de hashing Whirlpool a fost eliminat.
- Funcțiile HMAC_Init(), OPENSSL_load_builtin_modules(), X509_REQ_{get,set}_extension_nids(), X509_check_trust() au fost eliminate.
- Tipurile PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD și SSL_AEAD_CTX au fost eliminate.
- În libssl au fost adăugate funcțiile SSL_CTX_set1_cert_store() și SSL_CIPHER_get_handshake_digest().
Este disponibilă versiunea bibliotecii criptografice Botan 3.6.0, folosită în proiectul NeoPG, un fork al GnuPG 2. Biblioteca oferă o colecție mare de primitive gata pregătite, utilizate în protocolul TLS, certificate X.509, algoritmi AEAD, module TPM, PKCS#11, hashing de parole și criptografie post-cuantică (semnături bazate pe hash și acorduri de chei bazate pe McEliece). Biblioteca este scrisă în C++ și este livrată sublicența BSD. În noua versiune:
- A fost integrată o nouă bibliotecă cu algoritmi criptografici bazată pe curbe elliptice, operațiile bazate pe curbe standardizate fiind realizate de 2-3 ori mai repede. De asemenea, a fost propus un nou API pentru lucrul la nivel de bază cu curbe elliptice.
- A fost adăugată suportul pentru algoritmii post-quantici standardizați recent în NIST: FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) și FIPS 205 SLH-DSA (SPHINCS+).
- A fost adăugat suportul pentru cipurile TPM2.
- A fost extins utilizarea calculelor cu timp constant pentru a proteja împotriva atacurilor prin canalelor laterale.
- A fost adăugată generarea de entropie suplimentară cu ajutorul bibliotecii jitterentropy.
- Performanța procesării datelor în format hexazecimal și codificare base64 a fost îmbunătățită.
- A fost adăugat suportul pentru extensiile de procesor AVX2-VAES și GFNI-AVX2.
- A fost adăugat suportul pentru identificarea capacităților CPU armv7, aarch64 și ppc64 pe platforma OpenBSD.
- A fost adăugată o opțiune de compilare pentru dezactivarea tuturor inserțiilor inline de asamblare.
Versiunea proiectului Rustls 0.23.15, care dezvoltă implementarea client/server a protocoalelor TLS1.2 și TLS1.3 pentru proiecte scrise în Rust. Rustls nu oferă o implementare proprie a primitivilor criptografici, ci folosește furnizori de funcții criptografice externe (se susțin algoritmii ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM și AES256-GCM). În mod implicit, Rustls folosește furnizorul criptografic bazat pe biblioteca aws-lc-rs, care este dezvoltată de Amazon și se bazează pe codul C++ al AWS-LC, derivat din proiectul BoringSSL (mentenat de Google fork OpenSSL). Biblioteca ring, care combină codul de asamblare, C++ și Rust, poate fi utilizată ca furnizor criptografic alternativ.
Noua versiune se remarcă prin optimizări semnificative ale performanței. Se afirmă că, utilizând criptoprimitivii, biblioteca aws-lc-rs depășește acum bibliotecile OpenSSL și BoringSSL în teste care măsoară lățimea de bandă și viteza de stabilire/reluare a conexiunii.

Sursa: opennet.ro
