Sono state pubblicate diverse nuove versioni delle librerie crittografiche:
Rilascio della libreria OpenSSL 3.4.0 con implementazione dei protocolli SSL/TLS e vari algoritmi di crittografia. Il supporto per OpenSSL 3.4 sarà disponibile fino a ottobre 2025. Il supporto per le versioni precedenti OpenSSL 3.3, 3.2, 3.1 e 3.0 LTS continuerà fino ad aprile 2026, novembre 2025, marzo 2025 e settembre 2026 rispettivamente. Il codice del progetto è distribuito con licenza Apache 2.0. Le principali novità:
- Aggiunta del supporto per il set di cifrature per TLSv1.3, limitato dalle funzionalità di verifica dell'integrità dei dati (RFC 9150) e comprensivo degli algoritmi TLS_SHA256_SHA256 e TLS_SHA384_SHA384.
- Aggiunta di un'opzione per l'uso di una sorgente aggiuntiva di entropia basata su jitter nel generatore di numeri pseudocasuali, implementata tramite la libreria jitterentropy. L'entropia è generata misurando le differenze nei tempi di riesecuzione di un certo insieme di istruzioni sulla CPU, che dipende da molti fattori interni e risulta imprevedibile senza un controllo fisico sulla CPU.
- È stata aggiunta la supporto iniziale per i certificati di autorizzazione (AC — Certificato di Attributo, RFC 5755), che includono informazioni sui diritti di accesso, sulle autorizzazioni e sugli attributi del proprietario del certificato, attestando la possibilità di compiere determinate azioni. Ad esempio, un certificato AC può definire il diritto di collegarsi a un determinato servizio.
- È stata aggiunta la supporto per le estensioni X.509v3 relative ai certificati di autorizzazione.
- Nel provider FIPS è stata implementata la supporto dell'API FIPS 140-3 Indicator, che consente di determinare se un'operazione specifica è stata effettuata in un servizio approvato o meno.
- Nell'API BIO (Basic Input/Output) è stata migliorata la gestione dell'input in formato Base64.
- È stata aggiunta la supporto per la compilazione dell'utility openssl in modalità PIE (Position Independent Executable), che consente l'uso della randomizzazione dello spazio degli indirizzi (ASLR).
- È stata aggiunta la supporto per algoritmi combinati di firma digitale estraibili direttamente, come RSA-SHA2-256.
- Nel PKCS#12 è stata aggiunta la supporto per PBMAC 1 (Password-Based Message Authentication Code 1, RFC 9579).
- Nell'utility openssl sono state aggiunte le opzioni ‘-not_before’ e ‘-not_after’ per specificare esplicitamente l'orario di inizio e di fine validità del certificato.
- È stata introdotta la possibilità di utilizzare valori pre-calcolati durante l'inizializzazione degli algoritmi crittografici basati su curve ellittiche P-256.
- Le funzioni TS_VERIFY_CTX_set_* sono state dichiarate obsolete e sono state sostituite dalle funzioni TS_VERIFY_CTX_set0_* con una semantica migliorata.
- Le funzioni SSL_SESSION_get_time(), SSL_SESSION_set_time() e SSL_CTX_flush_sessions() sono state dichiarate obsolete, in favore di SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() e SSL_CTX_flush_sessions_ex(), prive del problema del 2038.
- Il supporto atteso per il protocollo QIUC in OpenSSL 3.4 server è stato posticipato al prossimo rilascio.
È stato rilasciato il progetto LibreSSL 4.0.0, un fork di OpenSSL, focalizzato a fornire un livello di sicurezza superiore e un supporto di qualità per i protocolli SSL/TLS, eliminando funzionalità superflue, aggiungendo ulteriori misure di protezione e conducendo una significativa pulizia e ristrutturazione del codice. Il cambio significativo del numero di versione è dovuto all'adozione della numerazione decimale (dopo 3.9 si passa alla versione 4.0). Le modifiche più rilevanti includono:
- È stato aggiunto il supporto iniziale per la compilazione utilizzando Emscripten, un compilatore da C/C++ a WebAssembly.
- Nel comando «openssl cms» è stata aggiunta l'opzione CRLfile per specificare ulteriori elenchi di certificati revocati (CRL) che verranno utilizzati durante la verifica.
- È stata interrotta la supporto per la piattaforma mips32.
- È stato interrotto l'accesso alle funzioni scritte in linguaggio assembly tramite API pubbliche (funzioni simili ora vengono fornite solo tramite funzioni wrapper in C). Sono state rimosse le implementazioni assembly degli algoritmi obsoleti per architetture obsolete.
- È stato rimosso il codice per la cache di validità dei certificati, che ha perso significato dopo l'ottimizzazione delle prestazioni.
- È stata migliorata l'implementazione delle estensioni X.509v3, unificati i metodi X.509v3 e ripuliti i relativi API X.509v3.
- È stata completamente riscritta l'implementazione del tipo CRYPTO_EX_DATA.
- Nella libcrypto le funzioni atoi() e strtol() sono state sostituite da strtonum().
- È stato aggiunto il file di intestazione crypto_arch.h, nel quale è stato spostato il codice specifico per le architetture hardware.
- È stata riprogettata e ottimizzata l'implementazione dell'algoritmo DES.
- Sono stati rimossi i file di intestazione pem2.h, ssl2.h, ssl23.h e ui_compat.h.
- È stata rimossa la supporto per l'algoritmo di hashing Whirlpool.
- Sono state rimosse le funzioni HMAC_Init(), OPENSSL_load_builtin_modules(), X509_REQ_{get,set}_extension_nids(), X509_check_trust().
- I tipi PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD e SSL_AEAD_CTX sono stati rimossi.
- Sono state aggiunte le funzioni SSL_CTX_set1_cert_store() e SSL_CIPHER_get_handshake_digest() in libssl.
È disponibile il rilascio della libreria crittografica Botan 3.6.0, utilizzata nel progetto NeoPG, un fork di GnuPG 2. La libreria offre una vasta collezione di primitivi pronti all'uso, impiegati nei protocolli TLS, nei certificati X.509, negli algoritmi di crittografia AEAD, nei moduli TPM, PKCS#11, nell'hashing delle password e nella crittografia post-quantistica (firma basata su hash e accordo di chiavi basato su McEliece). La libreria è scritta in C++ e fornita con licenza BSD. Nella nuova versione:
- È stata integrata una nuova libreria con algoritmi crittografici basati su curve ellittiche, le cui operazioni basate su curve standard sono eseguite da 2 a 3 volte più velocemente. È stato inoltre proposto un nuovo API per operazioni a basso livello con curve ellittiche.
- È stata aggiunta la supporto per algoritmi di crittografia post-quantistica recentemente standardizzati da NIST: FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) e FIPS 205 SLH-DSA (SPHINCS+).
- È stato aggiunto il supporto per i chip TPM2.
- È stato ampliato l'uso di calcoli a tempo costante nelle operazioni per proteggere contro gli attacchi da canali laterali.
- Aggiunta la generazione di ulteriore entropia tramite la libreria jitterentropy.
- Migliorata la performance nell'elaborazione dei dati in formato esadecimale e codifica base64.
- Aggiunto il supporto per le estensioni della CPU AVX2-VAES e GFNI-AVX2.
- Aggiunta la definizione delle capacità della CPU armv7, aarch64 e ppc64 sulla piattaforma OpenBSD.
- Aggiunta un'opzione di compilazione per disabilitare tutti gli inserti inline in assembler.
Rilascio del progetto Rustls 0.23.15, che sviluppa l'implementazione client e server dei protocolli TLS1.2 e TLS1.3 per progetti in Rust. Rustls non fornisce la propria implementazione dei primitivi crittografici, ma utilizza provider crittografici esterni (supportati algoritmi ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM e AES256-GCM). Per impostazione predefinita, Rustls utilizza un fornitore di crittografia basato sulla libreria aws-lc-rs, sviluppata da Amazon e basata sul codice C++ di AWS-LC, derivato dal progetto BoringSSL (supportato da Google come fork di OpenSSL). Può anche essere utilizzata la libreria ring come fornitore di crittografia, in parte basata su BoringSSL e combinando codice in assembly, C++ e Rust.
La nuova versione è caratterizzata da significativi miglioramenti delle prestazioni. Si afferma che, utilizzando i crittografici aws-lc-rs, la libreria Rustls ora supera le librerie OpenSSL e BoringSSL nei test che misurano la larghezza di banda e la velocità di negoziazione/recupero della connessione.

Fonte: opennet.ru
