Lëshimi i bibliotekës kriptografike OpenSSL 3.0.0

Pas tri vjet zhvillimi dhe 19 lëshimeve testuese, u realizua lëshimi i bibliotekës OpenSSL 3.0.0 me implementimin e protokolleve SSL/TLS dhe algoritmeve të ndryshëm të enkriptimit. Kjo degë e re përfshin ndryshime që shkelin kompatibilitetin mbrapsht në nivelin API dhe ABI, por këto ndryshime nuk do të ndikojnë në funksionimin e shumicës së aplikacioneve, për të cilat ritransportimi nga OpenSSL 1.1.1 mjafton për rindërtim. Mbështetje për degën e mëparshme OpenSSL 1.1.1 do të ofrohet deri në shtator 2023.

Ndryshimi i konsiderueshëm i numrit të versions është i lidhur me kalimin në numeracionin tradicional "Major.Minor.Patch". Numri i parë (Major) në numrin e versionit tani do të ndryshohet vetëm me shkeljen e kompatibilitetit në nivelin API/ABI, ndërsa i dyti (Minor) me zgjerimin e funksionalitetit pa ndryshimin e API/ABI. Përditësimet korrigjuese do të dorëzohen me ndryshimin e numrit të tretë (Patch). Numri 3.0.0 menjëherë pas 1.1.1 është zgjedhur për të shmangur kryqëzimet me modulin FIPS që është në zhvillim për OpenSSL, për të cilin është aplikuar numeracioni 2.x.

Një ndryshim tjetër i rëndësishëm për projektin ishte kalimi nga licenca e dyfishtë (OpenSSL dhe SSLeay) në licencën Apache 2.0. Licenca e mëparshme e OpenSSL ishte e bazuar në tekstin e licencës së vjetruar Apache 1.0 dhe kërkonte përmendje të qartë të OpenSSL në materialet reklamuese gjatë përdorimit të bibliotekave OpenSSL, si dhe shtimin e një shënimi të veçantë në rast se OpenSSL ofrohej si pjesë e produktit. Këto kërkesa e bënë licencën e vjetër të papërshtatshme me GPL, duke krijuar vështirësi në përdorimin e OpenSSL në projekte me licencë GPL. Për të anashkaluar këtë papërshtatshmëri, projektet GPL ishin të detyruara të aplikonin marrëveshje të veçanta licencimi, ku teksti kryesor i GPL plotësohej me një klauzolë që lejonte qartë lidhjen e aplikacionit me bibliotekën OpenSSL dhe përmendte se kërkesat e GPL nuk zbatohen për lidhjen me OpenSSL.

Në krahasim me degën OpenSSL 1.1.1, OpenSSL 3.0.0 ka shtuar më shumë se 7500 ndryshime, të përgatitura nga 350 zhvillues. Risi kryesore të OpenSSL 3.0.0:

  • NjĂ« modul i ri FIPS Ă«shtĂ« propozuar, duke pĂ«rfshirĂ« zbatimin e algoritmeve kriptografikĂ« qĂ« pĂ«rmbushin standardin e sigurisĂ« FIPS 140-2 (procesi i certifikimit tĂ« modulit Ă«shtĂ« planifikuar tĂ« fillojĂ« kĂ«tĂ« muaj, ndĂ«rsa certifikata FIPS 140-2 pritet tĂ« merret vitin tjetĂ«r). Moduli i ri Ă«shtĂ« ndjeshĂ«m mĂ« i lehtĂ« pĂ«r t'u pĂ«rdorur dhe lidhja e tij me shumĂ« aplikacione do tĂ« jetĂ« po aq e thjeshtĂ« sa ndryshimi i skedarit tĂ« konfigurimit. Nga e para, moduli FIPS Ă«shtĂ« i çaktivizuar dhe kĂ«rkon opsionin enable-fips pĂ«r t'u aktivizuar.
  • Koncepti i ofruesve tĂ« integruar Ă«shtĂ« implementuar nĂ« libcrypto, duke zĂ«vendĂ«suar konceptin e motorĂ«ve (API-ja ENGINE Ă«shtĂ« shpallur e skaduar). Me ndihmĂ«n e ofruesve, mund tĂ« shtoni zbatime tĂ« veçanta tĂ« algoritmeve pĂ«r operacione si enkriptimi, dekryptimi, krijimi i çelĂ«save, llogaritja e MAC, krijimi dhe verifikimi i nĂ«nshkrimeve dixhitale. ËshtĂ« e mundur si lidhja e tĂ« rejave, ashtu edhe krijimi i zbatimeve alternative tĂ« algoritmeve tashmĂ« tĂ« mbĂ«shtetur (nĂ« mĂ«nyrĂ« domethĂ«nĂ«se, pĂ«r çdo algoritĂ«m tani pĂ«rdoret ofruesi i integruar nĂ« OpenSSL).
  • Shtimi i mbĂ«shtetjes pĂ«r protokollin e menaxhimit tĂ« certifikatave CMP (Certificate Management Protocol, RFC 4210), i cili mund tĂ« pĂ«rdoret pĂ«r tĂ« kĂ«rkuar certifikata nga serverĂ« autoriteti i certifikimit, pĂ«r ta rinovuar dhe pĂ«r ta tĂ«rhequr certifikatĂ«n. Puna me CMP bĂ«het pĂ«rmes utilitarit tĂ« ri openssl-cmp, nĂ« tĂ« cilin gjithashtu Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r formatin CRMF (RFC 4211) dhe transferimin e kĂ«rkesave pĂ«rmes HTTP/HTTPS (RFC 6712).
  • NjĂ« klient i plotĂ« pĂ«r protokollet HTTP dhe HTTPS Ă«shtĂ« implementuar, i mbĂ«shtetur nĂ« metodat GET dhe POST, ridrejtime tĂ« kĂ«rkesave, punĂ«n pĂ«rmes proxy-t, kodimin ASN.1 dhe pĂ«rpunimin e kohĂ«ve tĂ« pritjes.
  • NjĂ« API i ri EVP_MAC (API i Kodit tĂ« Autentikimit tĂ« Mesazheve) Ă«shtĂ« shtuar, duke thjeshtuar shtimin e zbatimeve tĂ« reja tĂ« imitosvĂ«ngjeve.
  • NjĂ« interface i ri programues pĂ«r krijimin e çelĂ«save — EVP_KDF (API pĂ«r Funksionin e Derivimit tĂ« ÇelĂ«save) Ă«shtĂ« propozuar, qĂ« thjeshton shtimin e zbatimeve tĂ« reja tĂ« KDF dhe PRF. API i vjetĂ«r EVP_PKEY, pĂ«rmes tĂ« cilit ishin tĂ« aksesueshme algoritmet scrypt, TLS1 PRF dhe HKDF, Ă«shtĂ« ristrukturuar nĂ« formĂ«n e njĂ« shtrese, e cila Ă«shtĂ« implementuar mbi API EVP_KDF dhe EVP_MAC.
  • NĂ« implementimin e protokollit TLS Ă«shtĂ« ofruar mundĂ«sia e pĂ«rdorimit tĂ« implementimeve tĂ« integruara nĂ« kernelin Linux tĂ« klientit dhe serverit TLS pĂ«r tĂ« pĂ«rshpejtuar operacionet. PĂ«r tĂ« aktivizuar implementimin e ofruar nga kernelin Linux tĂ« TLS, Ă«shtĂ« e nevojshme tĂ« aktivizohet opsioni "SSL_OP_ENABLE_KTLS" ose tĂ« konfigurohet "enable-ktls".
  • Shtimi i mbĂ«shtetjes pĂ«r algoritmet e reja:
    • Algoritmet e formimit tĂ« çelsave (KDF) - «SINGLE STEP» dhe «SSH».
    • Algoritmet e imitoshtesave (MAC) - «GMAC» dhe «KMAC».
    • Algoritmi i encapsulimit tĂ« çelave RSA (KEM) «RSASVE».
    • Algoritmi i enkriptimit «AES-SIV» (RFC-8452).
    • NĂ« API EVP janĂ« shtuar thirrje me mbĂ«shtetje pĂ«r enkriptim invers, qĂ« pĂ«rdorin algoritmin AES pĂ«r enkriptimin e çelave (Key Wrap): «AES-128-WRAP-INV», «AES-192-WRAP-INV», «AES-256-WRAP-INV», «AES-128-WRAP-PAD-INV», «AES-192-WRAP-PAD-INV» dhe «AES-256-WRAP-PAD-INV».
    • NĂ« API EVP Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r algoritmet e huazimit tĂ« tekstit tĂ« enkriptuar (CTS): «AES-128-CBC-CTS», «AES-192-CBC-CTS», «AES-256-CBC-CTS», «CAMELLIA-128-CBC-CTS», «CAMELLIA-192-CBC-CTS» dhe «CAMELLIA-256-CBC-CTS».
    • ËshtĂ« shtuar mbĂ«shtetje pĂ«r nĂ«nshkrimet dixhitale CAdES-BES (RFC 5126).
    • NĂ« AES_GCM Ă«shtĂ« implementuar parametri AuthEnvelopedData (RFC 5083), qĂ« lejon enkriptimin dhe dekriptimin e mesazheve, tĂ« autoktuara dhe tĂ« enkriptuara duke pĂ«rdorur modin AES GCM.
  • NĂ« API-nĂ« publike janĂ« nxjerrĂ« funksionet PKCS7_get_octet_string dhe PKCS7_type_is_other.
  • NĂ« API PKCS#12 algoritmet qĂ« pĂ«rdoren si parazgjedhje nĂ« funksionin PKCS12_create(), janĂ« zĂ«vendĂ«suar me PBKDF2 dhe AES, ndĂ«rsa pĂ«r llogaritjen e MAC Ă«shtĂ« pĂ«rdorur algoritmi SHA-256. PĂ«r tĂ« rikthyer sjelljen e kaluar Ă«shtĂ« parashikuar opsioni «-legacy». JanĂ« shtuar njĂ« numĂ«r i madh thirrjesh tĂ« reja tĂ« zgjeruara PKCS12_*_ex, PKCS5_*_ex dhe PKCS8_*_ex, siç janĂ« PKCS12_add_key_ex(), PKCS12_create_ex() dhe PKCS12_decrypt_skey_ex().
  • PĂ«r platformĂ«n Windows Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r sinkronizimin e rrjedhave pĂ«rmes mekanizmit SRWLock.
  • ËshtĂ« shtuar njĂ« API i ri pĂ«r gjurmimin, i aktivizuar nĂ«pĂ«rmjet parametrave enable-trace.
  • ËshtĂ« zgjeruar gama e çelsave tĂ« mbĂ«shtetur nĂ« funksionet EVP_PKEY_public_check() dhe EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 dhe X448.
  • ËshtĂ« hequr nĂ«nsistemi RAND_DRBG, pĂ«r tĂ« cilin Ă«shtĂ« ofruar API EVP_RAND. JanĂ« hequr funksionet FIPS_mode() dhe FIPS_mode_set().
  • NjĂ« pjesĂ« e dukshme e API-t Ă«shtĂ« shpallur e vjetruar - pĂ«rdorimi i thirrjeve tĂ« vjetra nĂ« kodin e projekteve do tĂ« shkaktojĂ« njoftime paralajmĂ«rimi gjatĂ« kompilimit. NĂ« mesin e tyre, API-t e nivelit tĂ« ulĂ«t, tĂ« lidhura me realizime tĂ« caktuara tĂ« algoritmeve (pĂ«r shembull, AES_set_encrypt_key dhe AES_encrypt), janĂ« shpallur zyrtarisht tĂ« vjetra. MbĂ«shtetje zyrtare nĂ« OpenSSL 3.0.0 tani ofrohet vetĂ«m pĂ«r API-t e nivelit tĂ« lartĂ« EVP, tĂ« abstractizuar nga llojet e veçanta tĂ« algoritmeve (pĂ«r kĂ«tĂ« API pĂ«rfshihen, pĂ«r shembull, funksionet EVP_EncryptInit_ex, EVP_EncryptUpdate dhe EVP_EncryptFinal). NĂ« njĂ« nga lĂ«shimet e ardhshme tĂ« rĂ«ndĂ«sishme, API-t e vjetra do tĂ« fshihen. Realizimet e algoritmeve tĂ« vjetra, si MD2 dhe DES, tĂ« disponueshme pĂ«rmes API-t EVP, janĂ« zhvendosur nĂ« njĂ« modul tĂ« veçantĂ« 'legacy', i cili Ă«shtĂ« i çaktivizuar nga default.
  • Dokumentacioni dhe seti i testeve kanĂ« pasur njĂ« zgjerim tĂ« konsiderueshĂ«m. Krahasuar me degĂ«n 1.1.1, volumi i dokumentacionit Ă«shtĂ« rritur me 94%, ndĂ«rsa madhĂ«sia e kodit tĂ« setit tĂ« testeve me 54%.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster