Pärast kolme aasta arengut ja 19 testversiooni on välja antud OpenSSL 3.0.0 teek, mis rakendab SSL/TLS protokolle ja erinevaid krüpteerimisalgoritme. Uus versioon sisaldab muudatusi, mis rikuvad API ja ABI tagasipöördumisvõimet, kuid need muudatused ei mõjuta enamikku rakendustest, millede ümberkompileerimiseks OpenSSL 1.1.1-st piisab. OpenSSL 1.1.1 varasemat versiooni toetatakse kuni 2023. aasta septembrini.
Signifeine versiooninumbril on seotud üleminek traditsioonilisele numereerimisele "Major.Minor.Patch". Esimene number (Major) versioonis muutub nüüd ainult API/ABI tasandi ühilduvuse rikkumise korral, teiseks (Minor) funktsionaalsuse suurendamisel ilma API/ABI muutmiseta. Parandusuuendused antakse välja kolmanda numbri (Patch) muutmisega. Nummer 3.0.0 valiti kohe pärast 1.1.1, et vältida kattumist arenduses oleva OpenSSL FIPS-mooduliga, millele kehtis numereerimine 2.x.
Teiseks oluliseks muudatuseks projektis on üleminek kahele litsentsile (OpenSSL ja SSLeay) litsentsile Apache 2.0. Varasemalt rakendatud OpenSSL-i litsents põhines aegunud Apache 1.0 litsentsi teksti peal ja nõudis OpenSSL-i selge mainimist reklaammaterjalides, kui OpenSSL-i teeke kasutati, samuti erinote lisamist, kui OpenSSL-i toodi toote koosseisus. Sellised nõuded muutsid vana litsentsi GPL-iga mittesobivaks, mis tekitas raskusi OpenSSL-i kasutamisel GPL-litsentsiga projektides. Selle GPL-iga mittesobivuse vältimiseks olid GPL-i projektid sunnitud kasutama spetsiifilisi litsentsilepinguid, kus GPL-i põhitõed täiendati punktiga, mis selgelt lubas rakenduse ühendamist OpenSSL-i teegiga ja mainis, et GPL-i nõuded ei kehti OpenSSL-iga ühendamise kohta.
OpenSSL 3.0.0-es on lisatud üle 7500 muudatuse võrreldes OpenSSL 1.1.1-ga, mille on ette valmistanud 350 arendajat. OpenSSL 3.0.0 peamised uuendused:
- Pakutud on uus FIPS-moodul, mis sisaldab krüptograafiliste algoritmide rakendust, mis vastab FIPS 140-2 turvastandardile (selle kuu jooksul plaanitakse alustada mooduli sertifitseerimise protsessi, FIPS 140-2 sertifikaadi saamine on oodata järgmisel aastal). Uus moodul on oluliselt lihtsam kasutada ja selle ühendamine paljude rakendustega ei ole keerulisem kui konfiguratsioonifaili muutmine. FIPS-moodul on vaikimisi välja lülitatud ja selle aktiveerimiseks on vajalik määrata võimalus enable-fips.
- Libcryptos on rakendatud pluginatavate pakkujate kontseptsioon, mis asendab varasema mootori (ENGINE API tunnistatakse aegunuks). Pakkujate abil on võimalik lisada kohandatud rakendusi, mis on mõeldud sellisteks toiminguteks nagu krüpteerimine, dekrüpteerimine, võtmete genereerimine, MAC-i arvutamine, digiallkirjade loomine ja kontrollimine. Nüüd on võimalik nii uute käsituste ühendamine kui ka alternatiivsete rakenduste loomine juba toetatud algoritmide jaoks (igale algoritmile kasutatakse vaikimisi nüüd OpenSSL-i sisseehitatud pakkujat).
- Lisatud on toetus sertifikaadi haldust protokolli CMP (Certificate Management Protocol, RFC 4210) jaoks, mida saab kasutada sertifikaatide taotlemiseks, sertifikaatide uuendamiseks ja sertifikaatide tühistamiseks. serverid Töötamine CMP-ga toimub uue utiliidi openssl-cmp kaudu, kus on samuti rakendatud CRMF formaadi (RFC 4211) ja päringute edastamise toetus HTTP/HTTPS (RFC 6712).
- Rakendatud on täisfunktsionaalne klient HTTP ja HTTPS protokollide jaoks, toetades GET ja POST meetodeid, päringute ümbersuunamist, töö läbi vahendite, ASN.1 kodeerimist ja ajaülesannete töötlemist.
- Lisatud on uus API EVP_MAC (Message Authentication Code API), mis lihtsustab uusi imitatsioonide rakendusi lisada.
- Uus rakendusliidest on ette pandud võtmete genereerimiseks — EVP_KDF (Key Derivation Function API), mis lihtsustab uute KDF ja PRF teostuste lisamist. Vanem API EVP_PKEY, mille kaudu olid saadaval scrypt, TLS1 PRF ja HKDF algoritmid, on ümber töötatud kihina, mis on rakendatud EVP_KDF ja EVP_MAC API’de peale.
- TLS-protokolli rakenduses on nüüd võimalus kasutada Linuxi tuuma sisseehitatud klientide ja serverite TLS-i operatsioonide kiirendamiseks. Linuxi tuuma TLS-i rakenduse kasutamiseks tuleb aktiveerida valik "SSL_OP_ENABLE_KTLS" või seade "enable-ktls".
- Lisatud on tugi uutele algoritmidele:
- Võtme genereerimise algoritmid (KDF) — "SINGLE STEP" ja "SSH".
- Kohandamismärkide algoritmid (MAC) — "GMAC" ja "KMAC".
- RSA võtme kapseldamise algoritm (KEM) — "RSASVE".
- Krüptimise algoritm "AES-SIV" (RFC-8452).
- EVP API-s on lisatud väljakutsed, mis toetavad pööratavaid krüpteerimismeetodeid, kasutades AES-i võtmete krüpteerimiseks (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV", "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" ja "AES-256-WRAP-PAD-INV".
- EVP API-s on lisatud tugi šifrite laenutamise algoritmidele (CTS): "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC-CTS", "CAMELLIA-192-CBC-CTS" ja "CAMELLIA-256-CBC-CTS".
- Toetatakse digitaalset allkirjastamist CAdES-BES (RFC 5126).
- AES_GCM-is on rakendatud parameeter AuthEnvelopedData (RFC 5083), mis võimaldab šifreerida ja dekodeerida sõnumeid, mis on autentitud ja šifreeritud kasutades AES GCM režiimi.
- Avalikusse API-sse on toodud funktsioonid PKCS7_get_octet_string ja PKCS7_type_is_other.
- PKCS#12 API-s on algseisundi algoritmid, mida kasutatakse PKCS12_create() funktsioonis, asendatud PBKDF2 ja AES-iga, ning MACi arvutamiseks on kasutatud SHA-256 algoritmi. Varasema käitumise taastamiseks on olemas valik "-legacy". Lisatud on palju uusi laiendatud väljakutseid PKCS12_*_ex, PKCS5_*_ex ja PKCS8_*_ex, nagu PKCS12_add_key_ex().PKCS12_create_ex() ja PKCS12_decrypt_skey_ex().
- Windowsi platvormile on lisatud toetust niitide sünkroniseerimiseks SRWLock mehhanismi abil.
- Lisatud uus API jälgimiseks, mida saab aktiveerida parameetri enable-trace kaudu.
- Laienenud võti valik, mis on toetatud EVP_PKEY_public_check() ja EVP_PKEY_param_check() funktsioonides: RSA, DSA, ED25519, X25519, ED448 ja X448.
- Subsystem RAND_DRBG on eemaldatud, selle asemel on esitatud API EVP_RAND. Funktsioonid FIPS_mode() ja FIPS_mode_set() on eemaldatud.
- Olulise osa API-st on deklareeritud vananenud — vananenud väljakutsete kasutamine projektikoodis toob kaasa hoiatuste väljastamise kompileerimise ajal. Sealhulgas on ametlikult vananenud madala taseme API-d, mis on seotud aktiveeritud algoritmide teostustega (näiteks AES_set_encrypt_key ja AES_encrypt). Ametlikku tuge OpenSSL 3.0.0-s pakutakse nüüd ainult kõrge taseme API-de EVP jaoks, mis on eristatud konkreetsest algoritmist. Selle API alla kuuluvad näiteks funktsioonid EVP_EncryptInit_ex, EVP_EncryptUpdate ja EVP_EncryptFinal. Ühes järgmistest olulistest väljalasetest eemaldatakse vananenud API-d. Vananenud algoritmide teostused, nagu MD2 ja DES, mis on saadaval EVP API kaudu, on viidud eraldi "legacy" moodulisse, mis on vaikimisi keelatud.
- Dokumentatsiooni ja testimiskomplekti maht on oluliselt laienenud. võrreldes versiooniga 1.1.1 on dokumentatsiooni maht suurenenud 94% ja testimiskomplekti koodibaas 54%.
Allikas: opennet.ru
