OpenSSL 3.0.0 krüptograafilise raamatukogu väljalase

Pärast kolmeaastast arendustööd ja 19 testväljaannet lasti välja OpenSSL 3.0.0 teek koos SSL/TLS protokollide ja erinevate krüpteerimisalgoritmidega. Uus haru sisaldab muudatusi, mis rikuvad tagasiühilduvust API ja ABI tasemel, kuid muudatused ei mõjuta enamiku rakenduste tööd, mis vajavad OpenSSL 1.1.1-lt migreerumiseks ümberehitust. OpenSSL 1.1.1 eelmist haru toetatakse kuni 2023. aasta septembrini.

Märkimisväärne muudatus versiooninumbris on tingitud üleminekust traditsioonilisele „Major.Minor.Patch” numeratsioonile. Edaspidi muutub versiooninumbri esimene number (Major) ainult siis, kui ühilduvus on API/ABI tasemel katkenud ja teine ​​(Minor) muutub siis, kui funktsionaalsust suurendatakse API/ABI muutmata. Korrigeerivad värskendused tarnitakse koos muudatusega kolmandale numbrile (Patch). Number 3.0.0 kohe pärast 1.1.1 valiti selleks, et vältida kattumist praegu arendamisel oleva OpenSSL-i FIPS mooduliga, mille puhul kasutati 2.x numeratsiooni.

Teine oluline muudatus projekti jaoks oli üleminek topeltlitsentsilt (OpenSSL ja SSLeay) Apache 2.0 litsentsile. Eelmine patenteeritud OpenSSL-litsents põhines pärandlitsentsi Apache 1.0 tekstil ja nõudis OpenSSL-i selgesõnalist mainimist turundusmaterjalides OpenSSL-i teekide kasutamisel, samuti eriteadet, kui toote osana pakuti OpenSSL-i. Need nõuded muutsid vana litsentsi GPL-iga ühildumatuks, muutes OpenSSL-i kasutamise GPL-litsentsiga projektides keeruliseks. Sellest kokkusobimatusest ülesaamiseks olid GPL-i projektid sunnitud kasutama spetsiaalseid litsentsilepinguid, milles GPL-i põhiteksti täiendati klausliga, mis sõnaselgelt lubas rakenduse siduda OpenSSL-i teegiga ja mainis, et GPL-i nõuded ei vasta sellele. kohaldatakse OpenSSL-iga linkimisel.

Võrreldes OpenSSL 1.1.1 haruga, lisas OpenSSL 3.0.0 rohkem kui 7500 muudatust, mille panustasid 350 arendajat. OpenSSL 3.0.0 peamised uuendused:

  • Välja on pakutud uus FIPS moodul, mis hõlmab ka FIPS 140-2 turvastandardile vastavate krüptoalgoritmide juurutamist (mooduli sertifitseerimisprotsess on kavas alustada sel kuul ja FIPS 140-2 sertifikaati on oodata järgmisel aastal). Uut moodulit on palju lihtsam kasutada ja selle ühendamine paljude rakendustega pole keerulisem kui konfiguratsioonifaili muutmine. Vaikimisi on FIPS moodul keelatud ja nõuab, et suvand enable-fips oleks lubatud.
  • libcrypto rakendab ühendatavate pakkujate kontseptsiooni, mis asendas mootorite kontseptsiooni (ENGINE API on aegunud). Pakkujate abiga saate lisada oma algoritme selliste toimingute jaoks nagu krüpteerimine, dekrüpteerimine, võtme genereerimine, MAC arvutamine, digitaalallkirjade loomine ja kontrollimine. Võimalik on nii uusi ühendada kui ka juba toetatud algoritmide alternatiivseid teostusi luua (vaikimisi kasutatakse nüüd iga algoritmi puhul OpenSSL-i sisseehitatud pakkujat).
  • Lisatud on sertifikaatide haldusprotokolli (RFC 4210) tugi, mida saab kasutada CA-serverist sertifikaatide küsimiseks, sertifikaatide värskendamiseks ja sertifikaatide tühistamiseks. CMP-ga töötamine toimub uue openssl-cmp utiliidi abil, mis toetab ka CRMF-vormingut (RFC 4211) ja päringute saatmist HTTP/HTTPS (RFC 6712) kaudu.
  • Rakendatud on HTTP- ja HTTPS-protokolli täisväärtuslik klient, mis toetab GET- ja POST-meetodeid, päringute ümbersuunamist, puhverserveri tööd, ASN.1 kodeeringut ja ajalõpu töötlemist.
  • Lisatud on uus EVP_MAC (Message Authentication Code API), et hõlbustada näidislisade uute teostuste lisamist.
  • Võtmete genereerimiseks pakutakse välja uus tarkvaraliides - EVP_KDF (Key Derivation Function API), mis lihtsustab KDF ja PRF uute rakenduste lisamist. Vana EVP_PKEY API, mille kaudu olid saadaval scrypt, TLS1 PRF ja HKDF algoritmid, on ümber kujundatud kihina, mis on rakendatud EVP_KDF ja EVP_MAC API-de peale.
  • TLS-protokolli juurutamine annab võimaluse kasutada operatsioonide kiirendamiseks Linuxi kernelisse sisseehitatud TLS-klienti ja -serverit. Linuxi kerneli pakutava TLS-i juurutamise lubamiseks peate lubama suvandi "SSL_OP_ENABLE_KTLS" või sätte "enable-ktls".
  • Lisatud tugi uutele algoritmidele:
    • Võtme genereerimise algoritmid (KDF) on "SINGLE STEP" ja "SSH".
    • Simuleeritud sisestusalgoritmid (MAC) on "GMAC" ja "KMAC".
    • RSA võtmekapseldamisalgoritm (KEM) "RSASVE".
    • Krüpteerimisalgoritm "AES-SIV" (RFC-8452).
    • Lisatud kõned EVP API-le koos pöördšifrite toega, kasutades võtmete krüptimiseks AES-algoritmi (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-le on lisatud šifreeritud teksti laenamise (CTS) algoritmide tugi: "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".
    • Lisatud CAdES-BES digitaalallkirjade tugi (RFC 5126).
    • AES_GCM rakendab parameetrit AuthEnvelopedData (RFC 5083), et võimaldada AES GCM-i režiimis autentitud ja krüpteeritud sõnumite krüptimist ja dekrüpteerimist.
  • Funktsioonid PKCS7_get_octet_string ja PKCS7_type_is_other on lisatud avalikule API-le.
  • PKCS#12 API asendab funktsioonis PKCS12_create() kasutatavad vaikealgoritmid PBKDF2 ja AES-iga ning kasutab MAC arvutamiseks SHA-256 algoritmi. Varasema käitumise taastamiseks pakutakse suvand "-legacy". PKCS12_*_ex, PKCS5_*_ex ja PKCS8_*_ex lisati suur hulk uusi laiendatud kõnesid, näiteks PKCS12_add_key_ex().PKCS12_create_ex() ja PKCS12_decrypt_skey_ex().
  • Windowsi platvormi jaoks on lisatud lõime sünkroonimise tugi SRWLocki mehhanismi abil.
  • Lisati uus jälgimise API, mis on lubatud parameetri enable-trace kaudu.
  • Funktsioonides EVP_PKEY_public_check() ja EVP_PKEY_param_check() toetatud võtmete valikut on laiendatud: RSA, DSA, ED25519, X25519, ED448 ja X448.
  • Alamsüsteem RAND_DRBG on eemaldatud, asendatud EVP_RAND API-ga. Funktsioonid FIPS_mode() ja FIPS_mode_set() on eemaldatud.
  • Märkimisväärne osa API-st on vananenud – vananenud kõnede kasutamine projekti koodis toob kaasa hoiatused kompileerimise ajal. Kaasa arvatud madala taseme API-d, mis on seotud teatud algoritmide juurutustega (nt AES_set_encrypt_key ja AES_encrypt), on ametlikult kuulutatud aegunuks. OpenSSL 3.0.0 ametlik tugi on nüüd saadaval ainult kõrgetasemelistele EVP API-dele, mis on võetud üksikutest algoritmitüüpidest (see API sisaldab näiteks funktsioone EVP_EncryptInit_ex, EVP_EncryptUpdate ja EVP_EncryptFinal). Aegunud API-d eemaldatakse ühes järgmistest suurematest versioonidest. Pärandalgoritmide, nagu MD2 ja DES, rakendused, mis on saadaval EVP API kaudu, on viidud eraldi "pärand" moodulisse, mis on vaikimisi keelatud.
  • Dokumentatsiooni ja testikomplekti on oluliselt laiendatud. Võrreldes haruga 1.1.1 on dokumentatsiooni maht kasvanud 94% ja testkomplekti koodi maht 54%.

Allikas: opennet.ru

Lisa kommentaar