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à fornito 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 la supporto per il set di cifrature per TLSv1.3, limitato dalle funzionalità di verifica dell'integrità dei dati (RFC 9150) e comprendente gli algoritmi TLS_SHA256_SHA256 e TLS_SHA384_SHA384.
- Aggiunta la possibilità opzionale di utilizzare un'ulteriore sorgente di entropia basata sul jitter nel generatore di numeri pseudo-casuali, realizzata tramite la libreria jitterentropy. La generazione dell'entropia avviene 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 controllo fisico sulla CPU.
- Aggiunto il supporto iniziale per i certificati di autorizzazione (AC - Attribute Certificate, RFC 5755), che includono informazioni sui diritti di accesso, le autorizzazioni e gli attributi del titolare del certificato, attestando la possibilità di eseguire determinate azioni. Ad esempio, un certificato AC può definire il diritto di accedere a un certo servizio.
- Aggiunto il supporto per le estensioni X.509v3 relative ai certificati di autorizzazione.
- Nel provider FIPS è stato implementato il supporto per l'API FIPS 140-3 Indicator, che consente di determinare se una certa operazione è stata eseguita in un servizio approvato o meno.
- Nell'API BIO (Basic Input/Output) è stato migliorato il trattamento degli input in formato Base64.
- Aggiunto il supporto per la compilazione dell'utility openssl in modalità PIE (Position Independent Executable), che consente l'uso della randomizzazione dello spazio indirizzi (ASLR).
- Aggiunto il supporto per algoritmi di firma digitale combinati estraibili direttamente, come RSA-SHA2-256.
- Nel PKCS#12 è stato aggiunto il 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'inizio e la fine della validità di un certificato.
- È stata fornita la possibilità di utilizzare valori pre-calcolati durante l'inizializzazione degli algoritmi crittografici basati sulle curve ellittiche P-256.
- Le funzioni TS_VERIFY_CTX_set_* sono state dichiarate obsolete, 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 e dovrebbero essere sostituite da SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() e SSL_CTX_flush_sessions_ex(), prive del problema del 2038.
- Il supporto atteso del protocollo QIUC in OpenSSL 3.4 server è stato rinviato al prossimo rilascio.
Il rilascio del progetto LibreSSL 4.0.0, un fork di OpenSSL mirato a fornire un livello di sicurezza più elevato e un supporto di qualità per i protocolli SSL/TLS, rimuovendo funzionalità superflue, aggiungendo ulteriori misure di protezione e effettuando una significativa pulizia e ristrutturazione della base di codice. Il cambiamento significativo del numero di versione è dovuto all'uso di una numerazione decimale (dopo 3.9 viene la versione 4.0). Le modifiche più evidenti:
- È 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 nella verifica.
- È stata interrotta la supporto per la piattaforma mips32.
- È stato interrotto l'accesso alle funzioni scritte in assembly tramite l'API pubblica (tali funzioni ora sono fornite solo tramite funzioni wrapper in C). Sono state rimosse le implementazioni in assembly di algoritmi obsoleti per architetture obsolete.
- È stato rimosso il codice per la memorizzazione della 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 effettuata la pulizia dell'API correlata a 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, in cui è stato spostato il codice specifico delle architetture hardware.
- È stata ristrutturata e ottimizzata l'implementazione dell'algoritmo DES.
- Sono stati rimossi i file di intestazione pem2.h, ssl2.h, ssl23.h e ui_compat.h.
- È stato rimosso il 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().
- Rimossi i tipi PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD e SSL_AEAD_CTX.
- In libssl sono state aggiunte le funzioni SSL_CTX_set1_cert_store() e SSL_CIPHER_get_handshake_digest().
È 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 nel protocollo TLS, nei certificati X.509, negli algoritmi AEAD, nei moduli TPM, PKCS#11, nell'hashing delle password e nella crittografia post-quantistica (firmare usando hash e accordo sui tasti basato su McEliece). La libreria è scritta in C++ e distribuita con licenza BSD. Nella nuova versione:
- Integrata una nuova libreria con algoritmi crittografici basati su curve ellittiche, le cui operazioni su curve standard vengono eseguite 2-3 volte più velocemente. È stato anche proposto un nuovo API per operare a basso livello con curve ellittiche.
- Aggiunto il supporto per gli algoritmi di crittografia post-quantistica recentemente standardizzati in NIST: FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) e FIPS 205 SLH-DSA (SPHINCS+).
- Aggiunto il supporto per i chip TPM2.
- Espanso l'uso di calcoli con tempo di esecuzione costante per proteggere contro attacchi side-channel.
- Aggiunta la generazione di ulteriore entropia tramite la libreria jitterentropy.
- Migliorata la performance nell'elaborazione di dati nel formato esadecimale e nella codifica base64.
- Aggiunto il supporto per le estensioni processore AVX2-VAES e GFNI-AVX2.
- Aggiunta la definizione delle capacità della CPU armv7, aarch64 e ppc64 su piattaforma OpenBSD.
- Aggiunta un'opzione di compilazione per disabilitare tutte le inserzioni inline in assembly.
Rilascio del progetto Rustls 0.23.15, che sviluppa un'implementazione client e server dei protocolli TLS1.2 e TLS1.3 per progetti in linguaggio Rust. Rustls non fornisce la propria implementazione di primitivi crittografici, ma utilizza fornitori di funzioni crittografiche collegabili (supportati algoritmi ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM e AES256-GCM). Per impostazione predefinita, Rustls utilizza un fornitore di criptografia basato sulla libreria aws-lc-rs, sviluppata da Amazon e basata su codice C++ di AWS-LC, fork del progetto BoringSSL (manutenuto da Google, fork di OpenSSL). Può anche essere utilizzata la libreria ring, parzialmente basata su BoringSSL e che combina codice in assembly, C++ e Rust.
La nuova versione è caratterizzata da significative ottimizzazioni delle prestazioni. Si sostiene che, utilizzando i crittografici aws-lc-rs, la libreria Rustls superi ora le librerie OpenSSL e BoringSSL nei test che misurano la larghezza di banda e la velocità di handshake/riassunzione della connessione.

Fonte: opennet.ru
