Izdanje kriptografske biblioteke OpenSSL 3.0.0.

Nakon tri godine razvoja i 19 verzija za testiranje, objavljena je biblioteka OpenSSL 3.0.0 s implementacijom protokola SSL/TLS i različitih algoritmo šifriranja. Nova verzija uključuje promjene koje narušavaju unazadnu kompatibilnost na razini API-a i ABI-a, ali te promjene neće utjecati na rad većine aplikacija, za čiju je migraciju s OpenSSL 1.1.1 dovoljna ponovna kompilacija. Podrška za staru verziju OpenSSL 1.1.1 bit će osigurana do rujna 2023. godine.

Značajna promjena broja verzije povezana je s prelaskom na tradicionalnu numeraciju „Major.Minor.Patch“. Prvi broj (Major) u broju verzije će se sada mijenjati samo u slučaju kršenja kompatibilnosti na razini API/ABI, dok će se drugi broj (Minor) mijenjati s unapređenjem funkcionalnosti bez izmjene API/ABI-a. Ispravke će se isporučivati s promjenom trećeg broja (Patch). Broj 3.0.0 odmah nakon 1.1.1 odabran je kako bi se izbjeglo preklapanje s FIPS modulom koji je u razvoju za OpenSSL, za koji je korištena numeracija 2.x.

Druga značajna promjena za projekt bila je prijelaz sa dvostruke licence (OpenSSL i SSLeay) na licencu Apache 2.0. Prethodno korištena vlasnička licenca OpenSSL temeljila se na tekstu zastarjele licence Apache 1.0 i zahtijevala je izričito spominjanje OpenSSL-a u marketinškim materijalima prilikom korištenja OpenSSL biblioteka, kao i dodavanje posebne napomene u slučaju isporuke OpenSSL-a kao dijela proizvoda. Takvi su zahtjevi činili stari licencijski model nespojivim s GPL-om, što je stvaralo poteškoće pri korištenju OpenSSL-a u projektima s GPL licencom. Kako bi se zaobišla ova nespojivost, GPL projekti su bili prisiljeni koristiti specifične licencijske sporazume, u kojima je osnovni tekst GPL-a dopunjen stavkom koji izričito dopušta povezivanje aplikacije s OpenSSL bibliotekom i naglašava da se zahtjevi GPL-a ne odnose na povezivanje s OpenSSL-om.

U usporedbi s verzijom OpenSSL 1.1.1, OpenSSL 3.0.0 dodaje više od 7500 promjena, pripremljenih od strane 350 programera. Glavna novina OpenSSL 3.0.0:

  • Predložen je novi FIPS modul koji uključuje implementaciju kriptografskih algoritama koji ispunjavaju FIPS 140-2 standard sigurnosti (proces certifikacije modula započinje ovog meseca, a dobijanje FIPS 140-2 certifikata očekuje se naredne godine). Novi modul je znatno lakši za korišćenje i njegova integracija u mnoge aplikacije neće biti zahtevnija od izmene konfiguracijske datoteke. FIPS modul je po defaultu isključen i zahteva opciju enable-fips za aktivaciju.
  • U libcrypto je implementirana koncepcija priključnih provajdera, koja zamenjuje koncept motora (ENGINE API je označen kao zastareo). Pomoću provajdera možete dodavati vlastite implementacije algoritama za operacije kao što su enkripcija, dekripcija, generisanje ključeva, izračunavanje MAC-a, kreiranje i verifikacija digitalnih potpisa. Moguće je povezivanje novih kao i kreiranje alternativnih implementacija već podržanih algoritama (po defaultu se sada koristi ugrađeni provajder za svaki algoritam u OpenSSL-u).
  • Dodana podrška za protokol upravljanja sertifikatima CMP (Certificate Management Protocol, RFC 4210), koji se može koristiti za zahtev za sertifikatima od poslužitelja sertifikacijske vlasti, ažuriranje sertifikata i opoziv sertifikata. Rad sa CMP se odvija pomoću nove alatke openssl-cmp, koja takođe podržava CRMF format (RFC 4211) i slanje zahteva putem HTTP/HTTPS (RFC 6712).
  • Implementiran je potpuni klijent za HTTP i HTTPS protokole koji podržava GET i POST metode, preusmeravanje zahteva, rad preko proxy-a, ASN.1 kodiranje i upravljanje vremenskim intervalima.
  • Dodana je nova API funkcionalnost EVP_MAC (API za kôd za autentifikaciju poruka) koja olakšava dodavanje novih implementacija MAC-a.
  • Predložen je novi programski interfejs za generisanje ključeva — EVP_KDF (API za funkciju derivacije ključeva) koji olakšava dodavanje novih implementacija KDF i PRF. Stari API EVP_PKEY, putem kojeg su bili dostupni algoritmi scrypt, TLS1 PRF i HKDF, je preuređen u obliku sloja implementiranog preko API-ja EVP_KDF i EVP_MAC.
  • U implementaciji TLS protokola omogućena je upotreba ugrađenih klijenata i servera TLS u Linux jezgru za ubrzanje operacija. Da bi se aktivirala implementacija TLS-a koju pruža Linux kernel, potrebno je omogućiti opciju „SSL_OP_ENABLE_KTLS“ ili podešavanje „enable-ktls“.
  • Dodana podrška za nove algoritme:
    • Algoritmi generiranja ključeva (KDF) — «SINGLE STEP» i «SSH».
    • Algoritmi autentifikacije (MAC) — «GMAC» i «KMAC».
    • Algoritam enkapsulacije ključeva RSA (KEM) «RSASVE».
    • Algoritam šifriranja «AES-SIV» (RFC-8452).
    • U API EVP dodani su pozivi s podrškom za obrnuti šifriranje, koristeći algoritam AES za šifriranje ključeva (Key Wrap): «AES-128-WRAP-INV», «AES-192-WRAP-INV», «AES-256-WRAP-INV», «AES-128-WRAP-PAD-INV», «AES-192-WRAP-PAD-INV» i «AES-256-WRAP-PAD-INV».
    • U API EVP dodana je podrška za algoritme preuzimanja šifrovanih podataka (CTS): «AES-128-CBC-CTS», «AES-192-CBC-CTS», «AES-256-CBC-CTS», «CAMELLIA-128-CBC-CTS», «CAMELLIA-192-CBC-CTS» i «CAMELLIA-256-CBC-CTS».
    • Dodana podrška za digitalne potpise CAdES-BES (RFC 5126).
    • U AES_GCM implementiran je parametar AuthEnvelopedData (RFC 5083), koji omogućava šifriranje i dešifriranje poruka, autentifikovanih i šifrovanih koristeći AES GCM mod.
  • U javni API prebačene su funkcije PKCS7_get_octet_string i PKCS7_type_is_other.
  • U API PKCS#12 algoritmi koji se po defaultu koriste u funkciji PKCS12_create() zamijenjeni su s PBKDF2 i AES, a za izračun MAC korišten je algoritam SHA-256. Za vraćanje prethodnog ponašanja predviđena je opcija «-legacy». Dodan je veliki broj novih proširenih poziva PKCS12_*_ex, PKCS5_*_ex i PKCS8_*_ex, kao što su PKCS12_add_key_ex(), PKCS12_create_ex() i PKCS12_decrypt_skey_ex().
  • Za Windows platformu dodana je podrška za sincronizaciju niti pomoću mehanizma SRWLock.
  • Dodana je nova API funkcija za praćenje, koja se aktivira putem parametra enable-trace.
  • Proširen je spektar ključeva podržanih u funkcijama EVP_PKEY_public_check() i EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 i X448.
  • Uklonjena je podsistem RAND_DRBG, umjesto njega je predložen API EVP_RAND. Uklonjene su funkcije FIPS_mode() i FIPS_mode_set().
  • Značajan dio API-a je prebačen u stanje zastarjelog — korištenje zastarjelih poziva u kodu projekata će rezultirati upozorenjima prilikom kompilacije. Među tim API-ima su službeno proglašeni zastarjelima i nizko-nivojski API koji su vezani za određene realizacije algoritama (na primjer, AES_set_encrypt_key i AES_encrypt). Službena podrška u OpenSSL 3.0.0 sada se pruža samo za visok nivo API-ja EVP, apstraktnog od pojedinačnih tipova algoritama (među tim API-ima su i funkcije EVP_EncryptInit_ex, EVP_EncryptUpdate i EVP_EncryptFinal). U jednom od narednih značajnih izdanja zastarjeli API će biti uklonjeni. Implementacije zastarjelih algoritama, kao što su MD2 i DES, dostupne putem API-ja EVP, premještene su u poseban modul 'legacy', koji je prema zadanim postavkama isključen.
  • Dokumentacija i set testova su značajno prošireni. U usporedbi s granom 1.1.1, obim dokumentacije povećan je za 94%, dok je veličina koda testnog skupa povećana za 54%.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster