Lansarea bibliotecii criptografice OpenSSL 3.0.0

După trei ani de dezvoltare și 19 versiuni de test, a avut loc lansarea bibliotecii OpenSSL 3.0.0 cu implementarea protocoalelor SSL/TLS și a diferitelor algoritmi de criptare. Noua ramură include modificări care afectează compatibilitatea la nivel API și ABI, dar aceste modificări nu vor influența funcționarea majorității aplicațiilor, pentru care reconstrucția din OpenSSL 1.1.1 este suficientă. Suportul pentru vechea ramură OpenSSL 1.1.1 va fi asigurat până în septembrie 2023.

Schimbarea semnificativă a numărului versiunii este legată de trecerea la numerotarea tradițională „Major.Minor.Patch”. Prima cifră (Major) din numărul versiunii va fi schimbată de acum înainte doar în cazul încălcării compatibilității la nivel API/ABI, iar a doua (Minor) în cazul extinderii funcționalității fără modificarea API/ABI. Actualizările corective vor fi livrate prin modificarea celei de-a treia cifre (Patch). Numărul 3.0.0, imediat după 1.1.1, a fost ales pentru a evita suprapunerile cu modulul FIPS aflat în dezvoltare pentru OpenSSL, care a avut o numerotare 2.x.

A doua modificare importantă pentru proiect a fost trecerea de la o licență duală (OpenSSL și SSLeay) la licența Apache 2.0. Licența proprietary OpenSSL utilizată anterior se baza pe textul unei licențe Apache 1.0 învechite și necesita menționarea explicită a OpenSSL în materialele publicitare când se utilizau bibliotecile OpenSSL, precum și adăugarea unei notițe speciale în cazul livrării OpenSSL ca parte a unui produs. Astfel de cerințe făceau vechea licență incompatibilă cu GPL, ceea ce crea dificultăți în utilizarea OpenSSL în proiectele cu licență GPL. Pentru a ocoli această incompatibilitate, proiectele GPL erau nevoite să aplice acorduri de licențiere specifice, în care textul de bază GPL era completat cu o clauză care permitea explicit legarea aplicației la biblioteca OpenSSL și menționa că cerințele GPL nu se aplică legării cu OpenSSL.

Comparativ cu ramura OpenSSL 1.1.1, în OpenSSL 3.0.0 au fost adăugate peste 7500 de modificări, pregătite de 350 de dezvoltatori. Principalele noutăți OpenSSL 3.0.0:

  • A fost prop модифicat un nou modul FIPS, care include implementarea algoritmilor criptografici conform standardului de securitate FIPS 140-2 (în această lună se preconizează începerea procesului de certificare a modulului, obținerea certificatului FIPS 140-2 este așteptată anul viitor). Nou modul este mult mai ușor de utilizat, iar conectarea sa la numeroase aplicații nu va fi mai complicată decât modificarea fișierului de configurare. Modul FIPS este dezactivat din start și necesită specificarea opțiunii enable-fips pentru activare.
  • În libcrypto a fost implementată conceptul de furnizori plug-in, care înlocuiesc conceptul de motoare (API-ul ENGINE a fost declarat învechit). Prin intermediul furnizorilor, este posibil să adăugați propriile implementări ale algoritmilor pentru operații precum criptarea, decriptarea, generarea cheilor, calcularea MAC, crearea și verificarea semnăturilor digitale. Se poate realiza atât conectarea de noi implementări, cât și crearea unor implementări alternative ale algoritmilor deja susținuți (din start, pentru fiecare algoritm este folosit acum furnizorul încorporat în OpenSSL).
  • A fost adăugat suport pentru protocolul de gestionare a certificatelor CMP (Certificate Management Protocol, RFC 4210), care poate fi utilizat pentru a solicita certificate de la server o autoritate de certificare, actualizarea certificatelor și revocarea certificatelor. Lucrul cu CMP se efectuează prin intermediul unei noi utilitare openssl-cmp, care include, de asemenea, suport pentru formatul CRMF (RFC 4211) și transmiterea solicitărilor prin HTTP/HTTPS (RFC 6712).
  • A fost implementat un client complet pentru protocoalele HTTP și HTTPS, care suportă metodele GET și POST, redirecționarea solicitărilor, funcționarea prin proxy, codificarea ASN.1 și gestionarea timeout-urilor.
  • A fost adăugat un nou API EVP_MAC (Message Authentication Code API), care simplifică adăugarea de noi implementări de inserții mac.
  • A fost propus o nouă interfață de programare pentru generarea cheilor — EVP_KDF (Key Derivation Function API), care simplifică adăugarea de noi implementări KDF și PRF. Vechea API EVP_PKEY, prin care erau disponibile algoritmii scrypt, TLS1 PRF și HKDF, a fost reproiectată sub formă de strat, implementat deasupra API-urilor EVP_KDF și EVP_MAC.
  • În implementarea protocolului TLS a fost oferită opțiunea de a utiliza TLS integrat în nucleul Linux pentru clienți și servere, pentru accelerarea operațiunilor. Pentru a activa implementarea TLS oferită de nucleul Linux, este necesară activarea opțiunii «SSL_OP_ENABLE_KTLS» sau a setării «enable-ktls».
  • A fost adăugat suport pentru noi algoritmi:
    • Algoritmii de formare a cheilor (KDF) — «SINGLE STEP» și «SSH».
    • Algoritmii de autentificare (MAC) — «GMAC» și «KMAC».
    • Algoritmul de încapsulare a cheilor RSA (KEM) «RSASVE».
    • Algoritmul de criptare «AES-SIV» (RFC-8452).
    • În API EVP au fost adăugate apeluri cu suport pentru algoritmul invers de criptare AES pentru criptarea cheilor (Key Wrap): «AES-128-WRAP-INV», «AES-192-WRAP-INV», «AES-256-WRAP-INV», «AES-128-WRAP-PAD-INV», «AES-192-WRAP-PAD-INV» și «AES-256-WRAP-PAD-INV».
    • În API EVP a fost adăugată suport pentru algoritmii de împrumut al textului criptat (CTS): «AES-128-CBC-CTS», «AES-192-CBC-CTS», «AES-256-CBC-CTS», «CAMELLIA-128-CBC-CTS», «CAMELLIA-192-CBC-CTS» și «CAMELLIA-256-CBC-CTS».
    • A fost adăugat suport pentru semnăturile digitale CAdES-BES (RFC 5126).
    • În AES_GCM a fost implementat parametru AuthEnvelopedData (RFC 5083), care permite criptarea și decriptarea mesajelor, autentificate și criptate folosind modul AES GCM.
  • În API-ul public au fost extrase funcțiile PKCS7_get_octet_string și PKCS7_type_is_other.
  • În API PKCS#12, algoritmii aplicați implicit în funcția PKCS12_create() au fost înlocuiți cu PBKDF2 și AES, iar pentru calcularea MAC-ului a fost folosit algoritmul SHA-256. Pentru a restaura comportamentul anterior, a fost prevăzută opțiunea «-legacy». S-au adăugat un număr mare de apeluri extinse PKCS12_*_ex, PKCS5_*_ex și PKCS8_*_ex, cum ar fi PKCS12_add_key_ex(), PKCS12_create_ex() și PKCS12_decrypt_skey_ex().
  • Pentru platforma Windows a fost adăugat suport pentru sincronizarea firelor prin mecanismul SRWLock.
  • A fost adăugat un nou API pentru trasare, activat prin parametrul enable-trace.
  • S-a extins gama de chei suportate în funcțiile EVP_PKEY_public_check() și EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 și X448.
  • Subsystema RAND_DRBG a fost eliminată și înlocuită cu API-ul EVP_RAND. Funcțiile FIPS_mode() și FIPS_mode_set() au fost eliminate.
  • O parte semnificativă a API-ului a fost clasificată ca învechită - utilizarea apelurilor învechite în codul proiectelor va genera avertismente la compilare. Printre acestea, API-urile de nivel scăzut, legate de implementări specifice ale algoritmilor (de exemplu, AES_set_encrypt_key și AES_encrypt), au fost oficial declarate învechite. Suportul oficial în OpenSSL 3.0.0 este acum oferit doar pentru API-urile de nivel înalt EVP, care sunt abstractizate de tipuri specifice de algoritmi (aceste API-uri includ, de exemplu, funcțiile EVP_EncryptInit_ex, EVP_EncryptUpdate și EVP_EncryptFinal). În una dintre următoarele versiuni semnificative, API-urile învechite vor fi eliminate. Implementările algoritmilor învechiți, cum ar fi MD2 și DES, disponibile prin API-ul EVP, au fost mutate într-un modul separat „legacy”, care este dezactivat în mod implicit.
  • Documentația și setul de teste au fost semnificativ extinse. Comparativ cu rama 1.1.1, volumul documentației a crescut cu 94%, iar dimensiunea codului setului de teste a crescut cu 54%.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster