Izdanje OpenSSL 3.0.0 kriptografske biblioteke

Nakon tri godine razvoja i 19 testnih izdanja, OpenSSL 3.0.0 biblioteka je puštena u prodaju sa implementacijom SSL/TLS protokola i različitih algoritama za šifrovanje. Nova grana uključuje promjene koje narušavaju kompatibilnost unatrag na API i ABI nivou, ali promjene neće utjecati na rad većine aplikacija koje zahtijevaju ponovnu izgradnju da bi migrirali sa OpenSSL 1.1.1. Prethodna grana OpenSSL 1.1.1 će biti podržana do septembra 2023.

Značajna promjena u broju verzije je zbog prelaska na tradicionalno numeriranje “Major.Minor.Patch”. Od sada, prva cifra (Major) u broju verzije će se promijeniti samo ako je kompatibilnost narušena na API/ABI razini, a druga (Major) će se promijeniti kada se funkcionalnost poveća bez promjene API/ABI. Ispravna ažuriranja će biti isporučena s promjenom treće cifre (zakrpa). Broj 3.0.0 odmah nakon 1.1.1 je izabran kako bi se izbjegla preklapanja sa trenutno u razvoju FIPS modul za OpenSSL, za koji je korištena 2.x numeracija.

Druga važna promjena za projekat je prelazak sa dvostruke licence (OpenSSL i SSLeay) na Apache 2.0 licencu. Prethodna vlasnička OpenSSL licenca je bila zasnovana na tekstu stare Apache 1.0 licence i zahtevala je eksplicitno pominjanje OpenSSL-a u marketinškim materijalima kada se koriste OpenSSL biblioteke, kao i posebno obaveštenje ako je OpenSSL obezbeđen kao deo proizvoda. Ovi zahtjevi su učinili staru licencu nekompatibilnom sa GPL-om, što je otežavalo korištenje OpenSSL-a u projektima licenciranim GPL-om. Da bi se zaobišla ova nekompatibilnost, GPL projekti su bili primorani da koriste posebne ugovore o licenci u kojima je glavni tekst GPL-a dopunjen klauzulom koja je eksplicitno dozvoljavala povezivanje aplikacije sa OpenSSL bibliotekom i spominjala da zahtjevi GPL-a ne ispunjavaju primijeniti na povezivanje sa OpenSSL-om.

U poređenju sa OpenSSL 1.1.1 granom, OpenSSL 3.0.0 je dodao više od 7500 izmena koje je doprinelo 350 programera. Glavne inovacije OpenSSL 3.0.0:

  • Predložen je novi FIPS modul, uključujući implementaciju kriptografskih algoritama koji su u skladu sa sigurnosnim standardom FIPS 140-2 (proces certifikacije za modul bi trebao početi ovog mjeseca, a certifikacija FIPS 140-2 se očekuje sljedeće godine). Novi modul je mnogo lakši za korištenje i povezivanje s mnogim aplikacijama neće biti teže od promjene konfiguracijske datoteke. Prema zadanim postavkama, FIPS modul je onemogućen i zahtijeva da se omogući opcija enable-fips.
  • libcrypto implementira koncept pluggable provajdera, koji je zamijenio koncept motora (API ENGINE je zastario). Uz pomoć provajdera, možete dodati vlastite implementacije algoritama za takve operacije kao što su šifriranje, dešifriranje, generiranje ključeva, izračunavanje MAC-a, kreiranje i provjera digitalnih potpisa. Moguće je i povezati nove i kreirati alternativne implementacije već podržanih algoritama (podrazumevano, provajder ugrađen u OpenSSL sada se koristi za svaki algoritam).
  • Dodata podrška za protokol upravljanja certifikatima (RFC 4210), koji se može koristiti za traženje certifikata od CA servera, ažuriranje certifikata i opoziv certifikata. Rad sa CMP-om se obavlja pomoću novog openssl-cmp uslužnog programa, koji takođe podržava CRMF format (RFC 4211) i slanje zahteva putem HTTP/HTTPS-a (RFC 6712).
  • Implementiran je punopravni klijent za HTTP i HTTPS protokole, koji podržava GET i POST metode, preusmjeravanje zahtjeva, rad preko proxyja, ASN.1 kodiranje i obradu isteka vremena.
  • Dodan je novi EVP_MAC (Message Authentication Code API) kako bi se olakšalo dodavanje novih implementacija lažnih umetanja.
  • Predložen je novi softverski interfejs za generisanje ključeva - EVP_KDF (Key Derivation Function API), koji pojednostavljuje dodavanje novih implementacija KDF i PRF. Stari EVP_PKEY API, preko kojeg su bili dostupni algoritmi scrypt, TLS1 PRF i HKDF, redizajniran je u obliku sloja implementiranog na vrhu EVP_KDF i EVP_MAC API-ja.
  • Implementacija TLS protokola pruža mogućnost korištenja TLS klijenta i poslužitelja ugrađenih u Linux kernel radi ubrzanja operacija. Da biste omogućili TLS implementaciju koju pruža Linux kernel, morate omogućiti opciju "SSL_OP_ENABLE_KTLS" ili postavku "enable-ktls".
  • Dodata podrška za nove algoritme:
    • Algoritmi za generiranje ključeva (KDF) su “SINGLE STEP” i “SSH”.
    • Simulirani algoritmi umetanja (MAC) su “GMAC” i “KMAC”.
    • Algoritam za enkapsulaciju RSA ključeva (KEM) "RSASVE".
    • Algoritam šifriranja "AES-SIV" (RFC-8452).
    • Dodati pozivi EVP API-ju s podrškom za inverzne šifre koristeći AES algoritam 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".
    • Dodata podrška za algoritme pozajmljivanja šifrovanog teksta (CTS) za EVP API: “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”.
    • Dodata podrška za CAdES-BES digitalne potpise (RFC 5126).
    • AES_GCM implementira parametar AuthEnvelopedData (RFC 5083) kako bi omogućio šifriranje i dešifriranje poruka autentificiranih i šifriranih korištenjem AES GCM načina rada.
  • Funkcije PKCS7_get_octet_string i PKCS7_type_is_other dodane su javnom API-ju.
  • PKCS#12 API zamjenjuje zadane algoritme korištene u funkciji PKCS12_create() sa PBKDF2 i AES, i koristi SHA-256 algoritam za izračunavanje MAC-a. Za vraćanje prethodnog ponašanja, omogućena je opcija "-legacy". Dodan je veliki broj novih proširenih poziva za 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, dodata je podrška za sinhronizaciju niti pomoću mehanizma SRWLock.
  • Dodan je novi API za praćenje, omogućen preko parametra enable-trace.
  • Raspon ključeva podržanih u funkcijama EVP_PKEY_public_check() i EVP_PKEY_param_check() je proširen: RSA, DSA, ED25519, X25519, ED448 i X448.
  • RAND_DRBG podsistem je uklonjen, zamijenjen EVP_RAND API-jem. Funkcije FIPS_mode() i FIPS_mode_set() su uklonjene.
  • Značajan dio API-ja je zastario - korištenje zastarjelih poziva u kodu projekta će rezultirati upozorenjima tokom kompilacije. Uključujući API-je niskog nivoa koji su vezani za određene implementacije algoritama (na primjer, AES_set_encrypt_key i AES_encrypt) službeno su proglašeni zastarjelima. Zvanična podrška u OpenSSL 3.0.0 sada je dostupna samo za EVP API-je visokog nivoa koji su apstrahovani od pojedinačnih tipova algoritama (ovaj API uključuje, na primjer, funkcije EVP_EncryptInit_ex, EVP_EncryptUpdate i EVP_EncryptFinal). Zastarjeli API-ji će biti uklonjeni u jednom od sljedećih velikih izdanja. Implementacije zastarjelih algoritama kao što su MD2 i DES, dostupni preko EVP API-ja, premještene su u poseban "naslijeđeni" modul, koji je po defaultu onemogućen.
  • Dokumentacija i testni paket su značajno prošireni. U poređenju sa granom 1.1.1, obim dokumentacije je povećan za 94%, a veličina koda testnog paketa je povećana za 54%.

izvor: opennet.ru

Dodajte komentar