OpenSSL 3.0.0 Liberazione di a Biblioteca Crittografica

Dopu trè anni di sviluppu è 19 versioni di teste, a libreria OpenSSL 3.0.0 hè stata liberata cù l'implementazione di i protokolli SSL / TLS è diversi algoritmi di criptografia. U novu ramu include cambiamenti chì rompenu a cumpatibilità inversa à u livellu API è ABI, ma i cambiamenti ùn affettanu micca u funziunamentu di a maiò parte di l'applicazioni chì necessitanu una ricustruzione per migrare da OpenSSL 1.1.1. U ramu precedente di OpenSSL 1.1.1 serà supportatu finu à settembre 2023.

Un cambiamentu significativu in u numeru di versione hè duvuta à a transizione à a numerazione tradiziunale "Major.Minor.Patch". Da avà, u primu cifru (Major) in u numeru di versione cambierà solu se a cumpatibilità hè rotta à u livellu API / ABI, è u sicondu (Minor) cambierà quandu a funziunalità hè aumentata senza cambià l'API / ABI. L'aghjurnamenti currettivi seranu mandati cù un cambiamentu à u terzu cifru (Patch). U numeru 3.0.0 immediatamente dopu à 1.1.1 hè statu sceltu per evità sovrapposizioni cù u modulu FIPS attualmente in sviluppu per OpenSSL, per quale hè stata utilizata a numerazione 2.x.

U sicondu cambiamentu impurtante per u prughjettu era a transizione da una licenza duale (OpenSSL è SSLeay) à a licenza Apache 2.0. A licenza OpenSSL patentata precedente hè stata basata nantu à u testu di a licenza Apache 1.0 legata è esigeva una menzione esplicita di OpenSSL in materiali di marketing quandu usanu librerie OpenSSL, è ancu un avvisu speciale se OpenSSL hè statu furnitu cum'è parte di u pruduttu. Queste esigenze facenu a vechja licenza incompatibile cù a GPL, rendendu difficiuli di utilizà OpenSSL in i prughjetti di licenza GPL. Per aggirari sta incompatibilità, i prughjetti di GPL sò stati custretti à utilizà accordi di licenza specifichi in quale u testu principale di a GPL hè stata supplementata cù una clausula chì permette esplicitamente l'applicazione per esse ligata cù a libreria OpenSSL è hà dettu chì i requisiti di a GPL ùn anu micca. applicà à u ligame cù OpenSSL.

Comparatu à a filiera OpenSSL 1.1.1, OpenSSL 3.0.0 hà aghjustatu più di 7500 350 cambiamenti cuntribuiti da 3.0.0 sviluppatori. Principali innovazioni di OpenSSL XNUMX:

  • Un novu modulu FIPS hè statu prupostu, cumprese l'implementazione di algoritmi criptografici chì cumplenu cù u standard di sicurezza FIPS 140-2 (u prucessu di certificazione per u modulu hè previstu per inizià stu mese, è a certificazione FIPS 140-2 hè prevista l'annu prossimu). U novu modulu hè assai più faciule d'utilizà è cunnetta cù parechje applicazioni ùn serà più difficiule di cambià u schedariu di cunfigurazione. Per automaticamente, u modulu FIPS hè disattivatu è richiede l'opzione enable-fips per esse attivata.
  • libcrypto implementa u cuncettu di fornitori pluggable, chì rimpiazzà u cuncettu di mutori (l'API ENGINE hè stata deprecata). Cù l'aiutu di i fornituri, pudete aghjunghje e vostre propiu implementazioni di algoritmi per operazioni cum'è criptografia, decifrazione, generazione di chjave, calculu MAC, creazione è verificazione di signature digitale. Hè pussibule sia cunnetta novi è creà implementazioni alternative di algoritmi digià supportati (per difettu, u fornitore integratu in OpenSSL hè avà utilizatu per ogni algoritmu).
  • Aghjunghje supportu per u Protocolu di Gestione di Certificati (RFC 4210), chì pò esse usatu per dumandà certificati da un servitore CA, aghjurnà i certificati è revoca certificati. U travagliu cù CMP hè realizatu cù a nova utilità openssl-cmp, chì sustene ancu u formatu CRMF (RFC 4211) è l'inviu di richieste via HTTP / HTTPS (RFC 6712).
  • Un cliente cumpletu per i protokolli HTTP è HTTPS hè statu implementatu, sustene i metudi GET è POST, dumandate a redirezzione, travagliendu per un proxy, codificazione ASN.1 è processazione di timeout.
  • Un novu EVP_MAC (Message Authentication Code API) hè statu aghjuntu per fà più faciule per aghjunghje novi implementazioni di inserti simulati.
  • Una nova interfaccia di software per a generazione di chjave hè pruposta - EVP_KDF (Key Derivation Function API), chì simplifica l'aghjunzione di novi implementazioni di KDF è PRF. L'antica API EVP_PKEY, attraversu quale l'algoritmi scrypt, TLS1 PRF è HKDF eranu dispunibuli, hè stata riprogettata in forma di una capa implementata nantu à l'API EVP_KDF è EVP_MAC.
  • L'implementazione di u protocolu TLS furnisce a capacità di utilizà u cliente TLS è u servitore integratu in u kernel Linux per accelerà l'operazioni. Per attivà l'implementazione TLS furnita da u kernel Linux, deve attivà l'opzione "SSL_OP_ENABLE_KTLS" o l'opzione "enable-ktls".
  • Aghjunghje supportu per novi algoritmi:
    • L'algoritmi di generazione chjave (KDF) sò "SINGLE STEP" è "SSH".
    • L'algoritmi d'inserzione simulati (MAC) sò "GMAC" è "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Algoritmu di criptografia "AES-SIV" (RFC-8452).
    • Chjamate aghjunte à l'API EVP chì supportanu i cifri inversi chì utilizanu l'algoritmu AES per criptà e chjave (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV". ", "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" è "AES-256-WRAP-PAD-INV".
    • Aggiuntu supportu per l'algoritmi di prestitu di testu cifratu (CTS) à l'API EVP: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC". -CTS" ", "CAMELLIA-192-CBC-CTS" è "CAMELLIA-256-CBC-CTS".
    • Aggiuntu supportu per e firme digitali CAdES-BES (RFC 5126).
    • AES_GCM implementa u paràmetru AuthEnvelopedData (RFC 5083) per attivà a criptografia è a decifrazione di i missaghji autenticati è criptati cù u modu AES GCM.
  • E funzioni PKCS7_get_octet_string è PKCS7_type_is_other sò state aghjunte à l'API publica.
  • L'API PKCS#12 rimpiazza l'algoritmi predeterminati utilizati in a funzione PKCS12_create() cù PBKDF2 è AES, è usa l'algoritmu SHA-256 per calculà MAC. Per restaurà u cumpurtamentu passatu, l'opzione "-legacy" hè furnita. Aggiuntu un gran numaru di novi chjamati estesi à PKCS12_*_ex, PKCS5_*_ex è PKCS8_*_ex, cum'è PKCS12_add_key_ex().PKCS12_create_ex() è PKCS12_decrypt_skey_ex ().
  • Per a piattaforma Windows, u supportu per a sincronizazione di filu cù u mecanismu SRWLock hè statu aghjuntu.
  • Aggiunta una nova API di traccia, attivata via u paràmetru enable-trace.
  • A gamma di chjavi supportati in e funzioni EVP_PKEY_public_check() è EVP_PKEY_param_check() hè stata allargata: RSA, DSA, ED25519, X25519, ED448 è X448.
  • U subsistema RAND_DRBG hè statu eliminatu, rimpiazzatu da l'API EVP_RAND. E funzioni FIPS_mode() è FIPS_mode_set() sò state eliminate.
  • Una parte significativa di l'API hè stata resa obsoleta - l'usu di chjamati obsoleti in u codice di u prughjettu darà avvirtimenti durante a compilazione. Includendu l'API di livellu bassu ligati à certe implementazioni di algoritmi (per esempiu, AES_set_encrypt_key è AES_encrypt) sò stati ufficialmente dichjarati obsoleti. U supportu ufficiale in OpenSSL 3.0.0 hè avà furnitu solu per l'API EVP d'altu livellu chì sò astratti da i tipi di algoritmi individuali (questa API include, per esempiu, e funzioni EVP_EncryptInit_ex, EVP_EncryptUpdate è EVP_EncryptFinal). L'API obsolete seranu eliminate in una di e prossime versioni maiò. Implementazioni di l'algoritmi legacy cum'è MD2 è DES, dispunibili attraversu l'API EVP, sò stati spustati in un modulu "legacy" separatu, chì hè disattivatu per difettu.
  • A documentazione è a suite di teste sò state significativamente ampliate. Paragunatu à a branche 1.1.1, u voluminu di ducumentazione hè aumentatu da 94%, è a dimensione di u codice suite di teste hè aumentata da 54%.

Source: opennet.ru

Add a comment