Pas tri vjetësh 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. Dega e re përmban ndryshime që shkelin prapavijën e pajtueshmërisë në nivelin API dhe ABI, por këto ndryshime nuk do të ndikojnë në funksionimin e shumicës së aplikacioneve, për të cilat kalimi nga OpenSSL 1.1.1 kërkon vetëm rindërtimin. Mbështetja për degën e kaluar OpenSSL 1.1.1 do të vazhdojë deri në shtator 2023.
Ndryshimi i ndjeshëm i numrit të versionit është i lidhur me kalimin në numërimin tradicional «Major.Minor.Patch». Numri i parë (Major) në numrin e versionit tani do të ndryshojë vetëm kur të ketë shkelje të pajtueshmërisë në nivelin API/ABI, ndërsa numri i dytë (Minor) do të ndryshohet me rritjen e funksionalitetit pa ndryshuar API/ABI. Përditësimet e korrigjimit do të ofrohen me ndryshimin e numrit të tretë (Patch). Numri 3.0.0 menjëherë pas 1.1.1 është zgjedhur për të evituar të njëjtat numra me modulin FIPS që është në zhvillim për OpenSSL, për të cilin është përdorur numërimi 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 pronarit të OpenSSL ishte bazuar në tekstin e një licence të vjetëruar Apache 1.0 dhe kërkonte përmendje të qartë të OpenSSL në materialet reklamues në rast përdorimi të bibliotekave OpenSSL, si dhe shtimin e një shënimi të veçantë në rast ofrimi të OpenSSL si pjesë e produktit. Këto kërkesa e bënë licencën e vjetër të papajtueshme me GPL, e cila krijoi vështirësi në përdorimin e OpenSSL në projekte me licencë GPL. Për të shmangur këtë papajtueshmëri, projektet GPL ishin të detyruara të përdorin marrëveshje specifike licencash, ku teksti kryesor i GPL u plotësua me një klauzolë që lejonte qartazi lidhjen e aplikacionit me bibliotekën OpenSSL dhe përmendte se kërkesat e GPL nuk zbatoheshin për lidhjen me OpenSSL.
Në krahasim me degën OpenSSL 1.1.1, në OpenSSL 3.0.0 janë shtuar më shumë se 7500 ndryshime, të përgatitura nga 350 zhvillues. Novitetet kryesore të OpenSSL 3.0.0:
- ĂshtĂ« propozuar njĂ« modul i ri FIPS, qĂ« pĂ«rfshin implementimin e algoritmeve kriptografike qĂ« i pĂ«rmbahen standardit tĂ« sigurisĂ« FIPS 140-2 (kjo muaj planifikohet tĂ« fillojĂ« procesin e certifikimit tĂ« modulit, me pritshmĂ«rinĂ« pĂ«r tĂ« marrĂ« certifikatĂ«n FIPS 140-2 vitin tjetĂ«r). Moduli i ri Ă«shtĂ« dukshĂ«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 ndĂ«rrimi i skedarit tĂ« konfigurimit. PĂ«rveç kĂ«saj, moduli FIPS Ă«shtĂ« i çaktivizuar si parazgjedhje dhe kĂ«rkon specifikimin e opsionit enable-fips pĂ«r aktivizim.
- NĂ« libcrypto Ă«shtĂ« realizuar koncepti i ofruesve tĂ« pluggable, i cili zĂ«vendĂ«son konceptin e motorĂ«ve (API i ENGINE Ă«shtĂ« shpallur i vjetĂ«ruar). PĂ«rmes ofruesve mund tĂ« shtoni implementime tĂ« veta tĂ« algoritmeve pĂ«r operacione tĂ« tilla si enkriptimi, dekryptimi, krijimi i çelsave, llogaritja e MAC, krijimi dhe verifikimi i nĂ«nshkrimeve digjitale. ĂshtĂ« e mundur si lidhja e tĂ« rejave ashtu edhe krijimi i alternativeve tĂ« implementimeve tĂ« algoritmeve tashmĂ« tĂ« mbĂ«shtetur (si parazgjedhje, tani pĂ«r çdo algoritĂ«m pĂ«rdoret ofruesi i integruar nĂ« OpenSSL).
- ĂshtĂ« shtuar mbĂ«shtetje 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 tĂ« pĂ«rditĂ«suar certifikatat dhe pĂ«r t'i revokuar ato. Puna me CMP bĂ«het me ndihmĂ«n e njĂ« utility tĂ« re openssl-cmp, nĂ« tĂ« cilĂ«n gjithashtu Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r formatin CRMF (RFC 4211) dhe pĂ«r kalimin e kĂ«rkesave pĂ«rmes HTTP/HTTPS (RFC 6712).
- ĂshtĂ« realizuar njĂ« klient i plotĂ« pĂ«r protokollet HTTP dhe HTTPS, qĂ« mbĂ«shtet metodat GET dhe POST, redirektimin e kĂ«rkesave, punĂ«n pĂ«rmes proxy, kodimin ASN.1 dhe menaxhimin e kohĂ«ve tĂ« pritjes.
- ĂshtĂ« shtuar njĂ« API i ri EVP_MAC (Message Authentication Code API), i cili e thjeshton shtimin e implementimeve tĂ« reja tĂ« kodimeve tĂ« mesazheve.
- ĂshtĂ« propozuar njĂ« interface i ri pĂ«r formimin e çelĂ«save - EVP_KDF (Key Derivation Function API), i cili e thjeshton shtimin e implementimeve tĂ« reja tĂ« KDF dhe PRF. API e vjetĂ«r EVP_PKEY, pĂ«rmes sĂ« cilĂ«s ishin tĂ« disponueshĂ«m algoritmet scrypt, TLS1 PRF dhe HKDF, Ă«shtĂ« ristrukturuar nĂ« formĂ«n e njĂ« shtrese, tĂ« implementuar mbi API EVP_KDF dhe EVP_MAC.
- Protokolli TLS ofron mundësinë për të përdorur implementimin e TLS të integruar në bërthamën Linux për të përshpejtuar operacionet. Për të aktivizuar implementimin e TLS të siguruar nga bërthama Linux, kërkohet aktivizimi i opsionit «SSL_OP_ENABLE_KTLS» ose i parametrave «enable-ktls».
- Shtuar mbështetje për algoritme të reja:
- Algoritmet e formimit tĂ« çelĂ«save (KDF) â «SINGLE STEP» dhe «SSH».
- Algoritmet e imitim-veprimit (MAC) â «GMAC» dhe «KMAC».
- Algoritmi i inkapsulimit të çelësave RSA (KEM) «RSASVE».
- Algoritmi i enkriptimit «AES-SIV» (RFC-8452).
- Në API-në EVP janë shtuar thirrje me mbështetje për enkriptim të inversiv, duke përdorur algoritmin AES për enkriptimin e çelësave (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-në EVP është shtuar mbështetje për algoritmet e huazimit të çelësave 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».
- Shtuar mbështetje për nënshkrimet digjitale CAdES-BES (RFC 5126).
- Në AES_GCM është implementuar parametri AuthEnvelopedData (RFC 5083), i cili lejon enkriptimin dhe dekriptimin e mesazheve, të autentikuara dhe të enkriptuara duke përdorur modalitetin AES GCM.
- Në API-në publike, janë nxjerrë funksionet PKCS7_get_octet_string dhe PKCS7_type_is_other.
- NĂ« API PKCS#12, algorithmet e pĂ«rdorura si standard 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. ĂshtĂ« paraparĂ« njĂ« opsion "-legacy" pĂ«r rikthimin e sjelljes sĂ« kaluar. JanĂ« shtuar njĂ« numĂ«r i madh thirrjesh tĂ« reja tĂ« zgjeruara PKCS12_*_ex, PKCS5_*_ex dhe PKCS8_*_ex, si 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 pĂ«rmes parametrave enable-trace.
- Janë zgjeruar llojet e çelësave që mbështeten në funksionet EVP_PKEY_public_check() dhe EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 dhe X448.
- ĂshtĂ« hequr nĂ«n-sistemi RAND_DRBG, pĂ«r tĂ« cilin Ă«shtĂ« propozuar API EVP_RAND. Funksionet FIPS_mode() dhe FIPS_mode_set() janĂ« hequr.
- NjĂ« pjesĂ« e dukshme e API-t Ă«shtĂ« shpallur si tĂ« vjetruar â pĂ«rdorimi i thirrjeve tĂ« vjetruara nĂ« kodin e projekteve do tĂ« çojĂ« nĂ« paraqitjen e paralajmĂ«rimeve gjatĂ« kompilimit. Midis tyre, API-tĂ« e nivelit tĂ« ulĂ«t, tĂ« lidhura me implementime tĂ« caktuara tĂ« algoritmeve (p.sh., AES_set_encrypt_key dhe AES_encrypt) janĂ« shpallur tashmĂ« si tĂ« vjetruara. MbĂ«shtetje zyrtare nĂ« OpenSSL 3.0.0 tani ofrohet vetĂ«m pĂ«r API tĂ« nivelit tĂ« lartĂ« EVP, tĂ« ndara nga llojet e veçanta tĂ« algoritmeve (p.sh., funksionet EVP_EncryptInit_ex, EVP_EncryptUpdate dhe EVP_EncryptFinal). NĂ« njĂ« nga lĂ«shimet e ardhshme tĂ« rĂ«ndĂ«sishme, API-tĂ« e vjetruara do tĂ« hiqen. Implementimet e algoritmeve tĂ« vjetruara, si MD2 dhe DES, qĂ« janĂ« tĂ« disponueshme pĂ«rmes API-sĂ« EVP, janĂ« transferuar nĂ« njĂ« modul tĂ« veçantĂ« "legacy" qĂ« Ă«shtĂ« i çaktivizuar si parazgjedhje.
- Dokumentacioni dhe grupi i testeve janë zgjeruar ndjeshëm. Krahasuar me degën 1.1.1, volumi i dokumentacionit është rritur me 94%, dhe madhësia e kodit të grupit të testeve është rritur me 54%.
Burimi: opennet.ru
