OpenSSL 3.0.0 kriptografinės bibliotekos leidimas

Po trejų metų kūrimo ir 19 bandomųjų leidimų buvo išleista OpenSSL 3.0.0 biblioteka, įdiegusi SSL/TLS protokolus ir įvairius šifravimo algoritmus. Naujoje šakoje yra pakeitimų, kurie pažeidžia atgalinį suderinamumą API ir ABI lygiu, tačiau pakeitimai neturės įtakos daugumos programų, kurias reikia perdaryti, kad būtų galima perkelti iš OpenSSL 1.1.1, veikimui. Ankstesnė OpenSSL 1.1.1 atšaka bus palaikoma iki 2023 m. rugsėjo mėn.

Reikšmingas versijos numerio pasikeitimas atsirado dėl perėjimo prie tradicinės „Major.Minor.Patch“ numeracijos. Nuo šiol pirmasis versijos numerio skaitmuo (Major) keisis tik tuo atveju, jei bus pažeistas suderinamumas API/ABI lygiu, o antrasis (Minor) pasikeis, kai funkcionalumas bus padidintas nekeičiant API/ABI. Taisomieji atnaujinimai bus pateikti su trečiojo skaitmens pakeitimu (patch). Skaičius 3.0.0 iškart po 1.1.1 buvo pasirinktas siekiant išvengti persidengimo su šiuo metu kuriamu FIPS moduliu, skirtu OpenSSL, kuriam buvo naudojama 2.x numeracija.

Antras svarbus projekto pakeitimas buvo perėjimas nuo dvigubos licencijos (OpenSSL ir SSLeay) prie Apache 2.0 licencijos. Ankstesnė patentuota OpenSSL licencija buvo pagrįsta senosios „Apache 1.0“ licencijos tekstu ir, naudojant „OpenSSL“ bibliotekas, rinkodaros medžiagoje buvo būtinas aiškus OpenSSL paminėjimas, taip pat specialus įspėjimas, jei OpenSSL buvo pateikta kaip produkto dalis. Dėl šių reikalavimų senoji licencija buvo nesuderinama su GPL, todėl buvo sunku naudoti OpenSSL GPL licencijuotuose projektuose. Norėdami išvengti šio nesuderinamumo, GPL projektai buvo priversti naudoti specialias licencijų sutartis, kuriose pagrindinis GPL tekstas buvo papildytas sąlyga, kuri aiškiai leidžia susieti programą su OpenSSL biblioteka ir paminėjo, kad GPL reikalavimai neatitinka taikyti susiejant su OpenSSL.

Palyginti su „OpenSSL 1.1.1“ šaka, „OpenSSL 3.0.0“ pridėjo daugiau nei 7500 pakeitimų, kuriuos pateikė 350 kūrėjų. Pagrindinės OpenSSL 3.0.0 naujovės:

  • Pasiūlytas naujas FIPS modulis, apimantis kriptografinių algoritmų, atitinkančių FIPS 140-2 saugumo standartą, diegimą (modulio sertifikavimo procesą planuojama pradėti šį mėnesį, o FIPS 140-2 sertifikavimo tikimasi kitais metais). Naujuoju moduliu naudotis daug lengviau, o prijungti jį prie daugelio programų bus ne ką sunkiau nei pakeisti konfigūracijos failą. Pagal numatytuosius nustatymus FIPS modulis yra išjungtas ir reikia įjungti įgalinimo-fips parinktį.
  • libcrypto įgyvendina prijungiamų tiekėjų koncepciją, kuri pakeitė variklių koncepciją (ENGINE API buvo nebenaudojama). Su teikėjų pagalba galite pridėti savo algoritmų diegimus tokioms operacijoms kaip šifravimas, iššifravimas, raktų generavimas, MAC skaičiavimas, skaitmeninių parašų kūrimas ir tikrinimas. Galima ir jungti naujus, ir kurti alternatyvius jau palaikomų algoritmų įgyvendinimus (pagal numatytuosius nustatymus kiekvienam algoritmui naudojamas į OpenSSL įmontuotas tiekėjas).
  • Pridėtas sertifikatų valdymo protokolo (RFC 4210) palaikymas, kurį galima naudoti norint prašyti sertifikatų iš CA serverio, atnaujinti sertifikatus ir atšaukti sertifikatus. Darbas su CMP atliekamas naudojant naują openssl-cmp įrankį, kuris taip pat palaiko CRMF formatą (RFC 4211) ir užklausų siuntimą per HTTP/HTTPS (RFC 6712).
  • Įdiegtas visavertis HTTP ir HTTPS protokolų klientas, palaikantis GET ir POST metodus, užklausų peradresavimą, dirbantis per tarpinį serverį, ASN.1 kodavimą ir skirtojo laiko apdorojimą.
  • Pridėta nauja EVP_MAC (pranešimo autentifikavimo kodo API), kad būtų lengviau pridėti naujų netikrų įterpimų.
  • Siūloma nauja programinė sąsaja raktams generuoti – EVP_KDF (Key Derivation Function API), kuri supaprastina naujų KDF ir PRF diegimų pridėjimą. Senoji EVP_PKEY API, per kurią buvo pasiekiami šifravimo, TLS1 PRF ir HKDF algoritmai, buvo perkurta kaip sluoksnis, įdiegtas ant EVP_KDF ir EVP_MAC API.
  • TLS protokolo įgyvendinimas suteikia galimybę naudoti TLS klientą ir serverį, integruotą į Linux branduolį, kad būtų pagreitintos operacijos. Jei norite įgalinti „Linux“ branduolio teikiamą TLS diegimą, turite įjungti parinktį „SSL_OP_ENABLE_KTLS“ arba nustatymą „enable-ktls“.
  • Pridėtas naujų algoritmų palaikymas:
    • Raktų generavimo algoritmai (KDF) yra „SINGLE STEP“ ir „SSH“.
    • Imituoti įterpimo algoritmai (MAC) yra „GMAC“ ir „KMAC“.
    • RSA raktų inkapsuliavimo algoritmas (KEM) „RSASVE“.
    • Šifravimo algoritmas „AES-SIV“ (RFC-8452).
    • Pridėta iškvietimų į EVP API su atvirkštinių šifrų palaikymu, naudojant AES algoritmą raktams šifruoti (Key Wrap): „AES-128-WRAP-INV“, „AES-192-WRAP-INV“, „AES-256-WRAP-“. INV“, „AES-128-WRAP-PAD-INV“, „AES-192-WRAP-PAD-INV“ ir „AES-256-WRAP-PAD-INV“.
    • Prie EVP API pridėtas šifruoto teksto skolinimosi (CTS) algoritmų palaikymas: „AES-128-CBC-CTS“, „AES-192-CBC-CTS“, „AES-256-CBC-CTS“, „CAMELLIA-128-CBC“. -CTS“, „CAMELLIA-192-CBC-CTS“ ir „CAMELLIA-256-CBC-CTS“.
    • Pridėtas CAdES-BES skaitmeninių parašų (RFC 5126) palaikymas.
    • AES_GCM įgyvendina parametrą AuthEnvelopedData (RFC 5083), kad įgalintų pranešimų, patvirtintų ir užšifruotų naudojant AES GCM režimą, šifravimą ir iššifravimą.
  • Funkcijos PKCS7_get_octet_string ir PKCS7_type_is_other buvo įtrauktos į viešąją API.
  • PKCS#12 API numatytuosius algoritmus, naudojamus PKCS12_create() funkcijoje, pakeičia PBKDF2 ir AES, o MAC apskaičiuoti naudoja SHA-256 algoritmą. Norint atkurti ankstesnį elgesį, pateikiama parinktis „-legacy“. Pridėta daug naujų išplėstinių skambučių į PKCS12_*_ex, PKCS5_*_ex ir PKCS8_*_ex, pvz., PKCS12_add_key_ex().PKCS12_create_ex() ir PKCS12_decrypt_skey_ex().
  • „Windows“ platformoje buvo pridėtas gijų sinchronizavimo palaikymas naudojant SRWLock mechanizmą.
  • Pridėta nauja sekimo API, įgalinta naudojant įgalinimo-sekimo parametrą.
  • Funkcijose EVP_PKEY_public_check() ir EVP_PKEY_param_check() palaikomų raktų diapazonas buvo išplėstas: RSA, DSA, ED25519, X25519, ED448 ir X448.
  • RAND_DRBG posistemis buvo pašalintas, pakeistas EVP_RAND API. FIPS_mode() ir FIPS_mode_set() funkcijos buvo pašalintos.
  • Didelė API dalis buvo pasenusi – projekto kode naudojant pasenusius iškvietimus, kompiliavimo metu bus rodomi įspėjimai. Įskaitant žemo lygio API, susietas su tam tikrais algoritmų diegimais (pavyzdžiui, AES_set_encrypt_key ir AES_encrypt), buvo oficialiai paskelbta pasenusiomis. Oficialus OpenSSL 3.0.0 palaikymas dabar teikiamas tik aukšto lygio EVP API, kurios yra abstrahuotos iš atskirų algoritmų tipų (ši API apima, pavyzdžiui, EVP_EncryptInit_ex, EVP_EncryptUpdate ir EVP_EncryptFinal funkcijas). Nebenaudojamos API bus pašalintos viename iš kitų pagrindinių leidimų. Pasenusių algoritmų, pvz., MD2 ir DES, įgyvendinimas per EVP API, buvo perkeltas į atskirą „seną“ modulį, kuris pagal numatytuosius nustatymus yra išjungtas.
  • Dokumentacija ir bandymų rinkinys buvo gerokai išplėsti. Palyginti su 1.1.1 šaka, dokumentacijos apimtis padidėjo 94%, o testų komplekto kodo dydis padidėjo 54%.

Šaltinis: opennet.ru

Добавить комментарий