
OpenSSL è una delle librerie crittografiche più utilizzate al mondo, progettata per implementare protocolli di sicurezza come TLS (Transport Layer Security) e SSL (Secure Sockets Layer), fondamentali per proteggere le comunicazioni su Internet. Questo progetto originale e open source è distribuito sotto licenza Apache 2.0 dalla versione 3 e successive, che garantisce libertà di utilizzo, modifica e distribuzione. OpenSSL è multi-piattaforma, progettata per funzionare su una vasta gamma di sistemi operativi. È compatibile con ambienti Unix e GNU/Linux, macOS, Windows, e persino alcune piattaforme embedded.Grazie alla sua flessibilità, OpenSSL è adottato da un’ampia gamma di applicazioni, dai server web ai dispositivi IoT.
La versione precedente, OpenSSL 3.4, è stata rilasciata 5 mesi fa il 22 ottobre 2024. Ora, con la versione OpenSSL 3.5, il team di sviluppo introduce significativi miglioramenti che rafforzano la sicurezza e preparano la libreria alle sfide della crittografia post-quantistica.
Novità in OpenSSL 3.5
OpenSSL 3.5 porta con sé numerosi aggiornamenti crittografici e funzionalità avanzate per migliorare la sicurezza e la compatibilità con le tecnologie emergenti.
Cifrario predefinito aggiornato
Una delle modifiche più rilevanti apportate riguarda il cifrario predefinito utilizzato da tre applicazioni specifiche: req, cms e smime, che sono strumenti fondamentali per operazioni legate alla gestione delle chiavi e alla sicurezza dei dati.
- req è utilizzata per generare richieste di certificati (certificate signing requests – CSR) da inviare a una Autorità di Certificazione (CA) per ottenere certificati digitali.
- cms gestisce i dati protetti utilizzando il formato Cryptographic Message Syntax, impiegato per firmare e cifrare messaggi o documenti.
- smime supporta il protocollo Secure/Multipurpose Internet Mail Extensions (S/MIME) ed è utilizzata per cifrare e firmare email per garantire autenticità e riservatezza.
In passato, queste applicazioni utilizzavano il cifrario des-ede3-cbc come opzione predefinita, un sistema di crittografia noto anche come Triple DES (3DES) con modalità Cipher Block Chaining (CBC). Questo metodo, basato sull’algoritmo Data Encryption Standard (DES) degli anni ’70, prevedeva la cifratura dei dati in tre passaggi: prima con una chiave, poi con una seconda chiave per decifrare, e infine con una terza chiave per cifrare nuovamente. La modalità CBC aggiungeva sicurezza collegando i blocchi di dati tra loro, impedendo analisi isolate. Tuttavia, nonostante questi accorgimenti, il DES triplo si è rivelato vulnerabile nel tempo, soprattutto agli attacchi di forza bruta, a causa della lunghezza insufficiente delle sue chiavi (112 bit) e dell’evoluzione della potenza di calcolo. Di conseguenza, è stato sostituito con il cifrario aes-256-cbc, una scelta decisamente più sicura, grazie all’uso di chiavi robuste e algoritmi di crittografia avanzati. Questo cambiamento rappresenta un passo significativo verso standard moderni di sicurezza, rispondendo alle esigenze della crittografia contemporanea e offrendo una protezione più efficace contro le minacce odierne.
Preparazione alla crittografia post-quantistica (PQC)
OpenSSL 3.5 introduce algoritmi di crittografia post-quantistica (PQC), progettati per resistere agli attacchi dei futuri computer quantistici. Tra gli algoritmi inclusi troviamo:
- ML-KEM (Key Encapsulation Mechanism): utilizzato per proteggere lo scambio delle chiavi.
- ML-DSA (Digital Signature Algorithm): per firme digitali sicure.
- SLH-DSA (Stateless Hash-based Signature Algorithm): un’alternativa basata su hash per firme digitali.
Inoltre, la lista dei gruppi crittografici supportati per il protocollo TLS è stata aggiornata per includere e promuovere l’utilizzo dei gruppi KEM (Key Encapsulation Mechanism) ibridi post-quantistici, progettati per garantire una sicurezza avanzata contro eventuali minacce derivanti dall’informatica quantistica. Nel processo di aggiornamento, sono stati rimossi i gruppi crittografici meno utilizzati o ritenuti meno rilevanti, ottimizzando la configurazione per adattarsi alle necessità contemporanee della crittografia e della protezione dei dati.
Aggiornamenti alle condivisioni di chiavi TLS
Le configurazioni di scambio chiavi TLS predefinite ora includono opzioni avanzate come X25519MLKEM768 e X25519, due algoritmi di crittografia che rappresentano un importante passo avanti in termini di sicurezza. Questi algoritmi si basano su tecnologie moderne che garantiscono un livello di protezione superiore durante l’instaurazione delle connessioni sicure tramite il protocollo TLS (Transport Layer Security). In particolare, essi sono progettati per resistere ad attacchi sempre più sofisticati, fornendo maggiore robustezza nel processo di negoziazione delle chiavi crittografiche e assicurando un’elevata resilienza contro potenziali vulnerabilità. Questa evoluzione risponde alle crescenti necessità di sicurezza informatica, permettendo una protezione più efficace dei dati durante la comunicazione su reti non sicure come Internet.
Deprecazione delle funzioni BIO_meth_get_*
Nella versione attuale, le funzioni BIO_meth_get_*() sono state ufficialmente dichiarate obsolete. Questo cambiamento implica che il codice legacy che le utilizza potrebbe dover essere aggiornato per adattarsi a questa modifica. La decisione di deprecare queste funzioni rappresenta un’importante evoluzione verso l’adozione di metodologie più moderne nella gestione del livello BIO (Input/Output di base). Questo livello è fondamentale per la manipolazione dei flussi di dati in OpenSSL, e l’introduzione di approcci più avanzati punta a migliorare la sicurezza e l’efficienza nell’elaborazione delle operazioni di I/O, adeguandosi alle esigenze attuali delle applicazioni crittografiche.
Supporto server-side per QUIC
Una delle innovazioni più significative introdotte è il supporto lato server per QUIC (Connessioni Internet Veloci basate su UDP), un protocollo progettato per migliorare l’efficienza delle comunicazioni su Internet riducendo significativamente la latenza. Grazie a questa implementazione, OpenSSL 3.5 consente una gestione più veloce e affidabile delle connessioni, rendendole ideali per applicazioni che richiedono tempi di risposta rapidi. Inoltre, la versione supporta l’integrazione con QUIC di terze parti e introduce funzionalità avanzate come il 0-RTT (zero round-trip time), una tecnica che permette di eseguire handshake estremamente rapidi, riducendo ulteriormente i tempi di attesa e migliorando l’esperienza complessiva della comunicazione sicura.
Nuove opzioni di configurazione
Sono state introdotte nuove opzioni di configurazione che ampliano la possibilità di personalizzazione delle implementazioni crittografiche. La prima opzione, no-tls-deprecated-ec, disabilita il supporto per i gruppi crittografici TLS considerati obsoleti in base alla specifica RFC8422, migliorando così la sicurezza eliminando l’uso di tecniche superate. La seconda opzione, enable-fips-jitter, abilita l’uso di sorgenti di entropia JITTER per il provider FIPS, offrendo una maggiore variabilità nella generazione di valori crittografici, indispensabile per incrementare l’affidabilità della sicurezza crittografica. Queste novità forniscono agli amministratori una maggiore libertà nel configurare il sistema, consentendo di adattarlo meglio alle esigenze specifiche di sicurezza e prestazioni.
Funzionalità avanzate per grandi implementazioni
Per rispondere alle esigenze di ambienti che richiedono flussi di lavoro crittografici agili, OpenSSL 3.5 introduce alcune importanti novità. Tra queste, vi è la generazione centralizzata delle chiavi tramite il Protocollo di Gestione dei Certificati (Certificate Management Protocol – CMP), che semplifica e rende più efficiente l’amministrazione delle chiavi crittografiche. Inoltre, sono stati introdotti gli oggetti chiave simmetrici opachi (EVP_SKEY), che offrono un controllo più rigoroso e sicuro nella gestione delle chiavi, incrementando l’affidabilità complessiva del sistema.
Un ulteriore miglioramento riguarda il supporto dell’API al pipelining nei cifrari forniti che rappresenta un’importante innovazione nella gestione delle operazioni crittografiche. Normalmente, le operazioni di crittografia vengono eseguite in sequenza: un’operazione deve essere completata prima che inizi la successiva. Questo processo, sebbene funzionale, può risultare inefficiente, specialmente in applicazioni che richiedono alte prestazioni, come i server web o le reti ad alta velocità.
Grazie al pipelining, invece, è possibile sovrapporre diverse operazioni crittografiche. Questo significa che, mentre un’operazione è ancora in corso (ad esempio, il cifrare un blocco di dati), l’API può iniziare a preparare o gestire le operazioni successive. In pratica, il pipelining consente di sfruttare al massimo le risorse disponibili, come i processori multi-core o l’accelerazione hardware, riducendo i tempi di attesa e migliorando significativamente le prestazioni complessive.
Questo approccio è particolarmente utile in scenari in cui la crittografia deve gestire grandi quantità di dati o richieste simultanee, come nei sistemi di comunicazione sicura o nei server che gestiscono molteplici connessioni. Il risultato è un’elaborazione più veloce ed efficiente, senza compromettere la sicurezza delle operazioni.
Problemi noti
Un problema noto riguarda l’uso della funzione SSL_accept quando applicata agli oggetti restituiti da SSL_accept_connection, che genera un errore imprevisto anziché procedere correttamente nell’handshake TLS, il processo critico che stabilisce una connessione sicura. Questo comportamento inatteso può interrompere il normale funzionamento delle applicazioni che dipendono da questa funzione. Come soluzione temporanea, gli sviluppatori possono utilizzare la funzione alternativa SSL_do_handshake, che consente di proseguire con successo l’handshake TLS, evitando l’errore. Tale soluzione temporanea rimane valida fino al rilascio della versione corretta, OpenSSL 3.5.1, che risolverà definitivamente il problema.
Per una lista completa delle modifiche introdotte in OpenSSL 3.5, è possibile consultare il changelog (registro delle modifiche) ufficiale disponibile sul sito del progetto.
Fonte: https://github.com/openssl/openssl/blob/openssl-3.5.0/NEWS.md#openssl-35
Fonte: https://www.phoronix.com/news/OpenSSL-3.5-Released
Fonte: https://9to5linux.com/openssl-3-5-released-with-support-for-pqc-algorithms-server-side-quic
Fonte: https://linuxiac.com/openssl-3-5-brings-major-cryptographic-shifts/
Source: Read More