Uscita della libreria crittografica OpenSSL 3.0.0

Dopo tre anni di sviluppo e 19 versioni di prova, è stato rilasciato OpenSSL 3.0.0, che implementa i protocolli SSL/TLS e vari algoritmi di crittografia. Questa nuova versione introduce modifiche che rompono la compatibilità retroattiva a livello di API e ABI, ma tali modifiche non influenzeranno il funzionamento della maggior parte delle applicazioni, per le quali è sufficiente ricompilare dopo aver utilizzato OpenSSL 1.1.1. Il supporto per la vecchia versione OpenSSL 1.1.1 continuerà fino a settembre 2023.

Il cambiamento significativo del numero di versione è legato all'adozione della tradizionale numerazione «Maggiore.Minore.Patch». La prima cifra (Maggiore) del numero di versione cambierà d'ora in poi solo in caso di rottura della compatibilità a livello di API/ABI, mentre la seconda cifra (Minore) cambierà con l'aggiunta di funzionalità senza modificare l'API/ABI. Gli aggiornamenti correttivi verranno forniti modificando la terza cifra (Patch). Il numero 3.0.0 è stato scelto immediatamente dopo il 1.1.1 per evitare conflitti con il modulo FIPS di OpenSSL, attualmente in fase di sviluppo, per il quale veniva utilizzata la numerazione 2.x.

Una delle modifiche più significative per il progetto è stata la transizione da una licenza doppia (OpenSSL e SSLeay) alla licenza Apache 2.0. La precedente licenza proprietaria di OpenSSL si basava sul testo di una licenza Apache 1.0 obsoleta e richiedeva di menzionare esplicitamente OpenSSL nei materiali pubblicitari quando si utilizzavano le librerie OpenSSL, nonché di aggiungere una nota speciale nel caso di fornitura di OpenSSL come parte di un prodotto. Tali requisiti rendevano la vecchia licenza incompatibile con la GPL, creando difficoltà nell'utilizzo di OpenSSL in progetti con licenza GPL. Per aggirare questa incompatibilità, i progetti GPL erano costretti a utilizzare specifici accordi di licenza, in cui il testo principale della GPL era integrato con una clausola che autorizzava esplicitamente il collegamento dell'applicazione con la libreria OpenSSL e menzionava che i requisiti della GPL non si applicano al collegamento con OpenSSL.

Rispetto al ramo OpenSSL 1.1.1, in OpenSSL 3.0.0 sono stati introdotti oltre 7500 cambiamenti, preparati da 350 sviluppatori. Le principali novità di OpenSSL 3.0.0:

  • È stato proposto un nuovo modulo FIPS che include l'implementazione di algoritmi crittografici conformi allo standard di sicurezza FIPS 140-2 (il processo di certificazione del modulo inizierà questo mese, con l'ottenimento del certificato FIPS 140-2 previsto per l'anno prossimo). Il nuovo modulo è significativamente più semplice da usare e la sua integrazione con molte applicazioni non sarà più complessa rispetto alla modifica del file di configurazione. Per impostazione predefinita, il modulo FIPS è disattivato e richiede l'indicazione dell'opzione enable-fips per l'attivazione.
  • In libcrypto è stata implementata la concettualizzazione di provider plug-in, che sostituisce la vecchia concezione degli engine (l'API ENGINE è considerata obsoleta). Con i provider è possibile aggiungere implementazioni personalizzate degli algoritmi per operazioni come crittografia, decrittografia, generazione di chiavi, calcolo di MAC, creazione e verifica di firme digitali. È possibile sia collegare nuovi provider che creare implementazioni alternative di algoritmi già supportati (per impostazione predefinita, ora viene utilizzato il provider integrato in OpenSSL per ogni algoritmo).
  • È stata aggiunta la supporto per il protocollo di gestione dei certificati CMP (Certificate Management Protocol, RFC 4210), che può essere utilizzato per richiedere certificati da server un'autorità di certificazione, per l'aggiornamento dei certificati e per la revoca dei certificati. L'interazione con CMP avviene tramite il nuovo strumento openssl-cmp, che include anche il supporto per il formato CRMF (RFC 4211) e per l'invio di richieste tramite HTTP/HTTPS (RFC 6712).
  • È stato implementato un client completo per i protocolli HTTP e HTTPS, che supporta i metodi GET e POST, la redirezione delle richieste, l'utilizzo attraverso proxy, la codifica ASN.1 e la gestione dei timeout.
  • È stato aggiunto un nuovo API EVP_MAC (Message Authentication Code API), che semplifica l'aggiunta di nuove implementazioni delle firme.
  • È stato proposto un nuovo interfaccia di programmazione per la generazione di chiavi — EVP_KDF (Key Derivation Function API), che semplifica l'aggiunta di nuove implementazioni di KDF e PRF. Il vecchio API EVP_PKEY, tramite il quale erano disponibili gli algoritmi scrypt, TLS1 PRF e HKDF, è stato riprogettato in forma di un layer, implementato sopra gli API EVP_KDF e EVP_MAC.
  • Nell'implementazione del protocollo TLS è possibile utilizzare le implementazioni di TLS integrate nel kernel Linux per accelerare le operazioni. Per attivare l'implementazione TLS fornita dal kernel Linux, è necessaria l'attivazione dell'opzione «SSL_OP_ENABLE_KTLS» o delle impostazioni «enable-ktls».
  • È stata aggiunta la supporto a nuovi algoritmi:
    • Algoritmi di derivazione di chiavi (KDF) — «SINGLE STEP» e «SSH».
    • Algoritmi di codice di autenticazione (MAC) — «GMAC» e «KMAC».
    • Algoritmo di incapsulamento della chiave RSA (KEM) «RSASVE».
    • Algoritmo di crittografia «AES-SIV» (RFC-8452).
    • Nell'API EVP sono state aggiunte chiamate con supporto per crittografie inverse che utilizzano l'algoritmo AES per la crittografia delle chiavi (Key Wrap): «AES-128-WRAP-INV», «AES-192-WRAP-INV», «AES-256-WRAP-INV», «AES-128-WRAP-PAD-INV», «AES-192-WRAP-PAD-INV» e «AES-256-WRAP-PAD-INV».
    • Nell'API EVP è stata aggiunta la supporto per algoritmi di borrowing del ciphertext (CTS): «AES-128-CBC-CTS», «AES-192-CBC-CTS», «AES-256-CBC-CTS», «CAMELLIA-128-CBC-CTS», «CAMELLIA-192-CBC-CTS» e «CAMELLIA-256-CBC-CTS».
    • È stata aggiunta la supporto per le firme digitali CAdES-BES (RFC 5126).
    • In AES_GCM è stato implementato il parametro AuthEnvelopedData (RFC 5083), che consente di crittografare e decrittografare messaggi autenticati e crittografati utilizzando la modalità AES GCM.
  • Nell'API pubblica sono state messe a disposizione le funzioni PKCS7_get_octet_string e PKCS7_type_is_other.
  • Nell'API PKCS#12, gli algoritmi utilizzati di default nella funzione PKCS12_create() sono stati sostituiti da PBKDF2 e AES, e per il calcolo del MAC è stato utilizzato l'algoritmo SHA-256. Per ripristinare il comportamento precedente è prevista l'opzione "-legacy". È stata aggiunta una grande quantità di nuovi chiamate estese PKCS12_*_ex, PKCS5_*_ex e PKCS8_*_ex, come PKCS12_add_key_ex(), PKCS12_create_ex() e PKCS12_decrypt_skey_ex().
  • Per la piattaforma Windows è stata aggiunta la possibilità di sincronizzare i thread utilizzando il meccanismo SRWLock.
  • È stata aggiunta una nuova API per il tracciamento, attivabile tramite il parametro enable-trace.
  • È stata ampliata la gamma di chiavi supportate nelle funzioni EVP_PKEY_public_check() e EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 e X448.
  • È stato rimosso il sottosistema RAND_DRBG, per il quale è stata proposta l'API EVP_RAND. Sono state rimosse le funzioni FIPS_mode() e FIPS_mode_set().
  • Una parte significativa delle API è stata deprecata: l'uso di chiamate obsolete nel codice dei progetti genererà avvisi durante la compilazione. Tra queste, sono state ufficialmente dichiarate obsolete le API a basso livello legate a specifiche implementazioni di algoritmi (ad esempio, AES_set_encrypt_key e AES_encrypt). Ora, il supporto ufficiale in OpenSSL 3.0.0 è fornito solo per API di alto livello EVP, astratte da singoli tipi di algoritmi (a queste API appartengono, ad esempio, le funzioni EVP_EncryptInit_ex, EVP_EncryptUpdate e EVP_EncryptFinal). In una delle prossime versioni significative, le API obsolete saranno rimosse. Le implementazioni di algoritmi obsoleti, come MD2 e DES, disponibili tramite l'API EVP, sono state trasferite in un modulo separato "legacy", disabilitato per impostazione predefinita.
  • È stata significativamente ampliata la documentazione e l'insieme di test. Rispetto al ramo 1.1.1, il volume della documentazione è aumentato del 94% e le dimensioni del codice del set di test del 54%.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster