Vydanie kryptografickej knižnice OpenSSL 3.0.0

Po troch rokoch vývoja a 19 testovacích vydaniach bola vydaná knižnica OpenSSL 3.0.0 s implementáciou protokolov SSL/TLS a rôznych šifrovacích algoritmov. Nová vetva obsahuje zmeny, ktoré narúšajú spätnú kompatibilitu na úrovni API a ABI, ale zmeny neovplyvnia fungovanie väčšiny aplikácií, ktoré vyžadujú prebudovanie na migráciu z OpenSSL 1.1.1. Predchádzajúca vetva OpenSSL 1.1.1 bude podporovaná do septembra 2023.

Výrazná zmena v čísle verzie je spôsobená prechodom na tradičné číslovanie “Major.Minor.Patch”. Odteraz sa prvá číslica (hlavná) v čísle verzie zmení iba vtedy, ak je narušená kompatibilita na úrovni API/ABI, a druhá (vedľajšia) sa zmení, keď sa zvýši funkčnosť bez zmeny API/ABI. Opravné aktualizácie budú doručené so zmenou na tretiu číslicu (Patch). Číslo 3.0.0 bezprostredne za 1.1.1 bolo zvolené, aby sa predišlo prekrývaniu s aktuálne vyvíjaným modulom FIPS pre OpenSSL, pre ktorý bolo použité číslovanie 2.x.

Druhou dôležitou zmenou pre projekt bol prechod z duálnej licencie (OpenSSL a SSLeay) na licenciu Apache 2.0. Predchádzajúca proprietárna licencia OpenSSL bola založená na texte staršej licencie Apache 1.0 a vyžadovala výslovnú zmienku o OpenSSL v marketingových materiáloch pri používaní knižníc OpenSSL, ako aj osobitné upozornenie, ak bolo OpenSSL poskytované ako súčasť produktu. Tieto požiadavky spôsobili, že stará licencia nie je kompatibilná s GPL, čo sťažuje používanie OpenSSL v projektoch s licenciou GPL. Na obídenie tejto nekompatibility boli projekty GPL nútené používať špecifické licenčné zmluvy, v ktorých bol hlavný text GPL doplnený o klauzulu, ktorá výslovne umožňovala prepojenie aplikácie s knižnicou OpenSSL a uvádzala, že požiadavky GPL neumožňujú použiť na prepojenie s OpenSSL.

V porovnaní s vetvou OpenSSL 1.1.1, OpenSSL 3.0.0 pridalo viac ako 7500 350 zmien od 3.0.0 vývojárov. Hlavné inovácie OpenSSL XNUMX:

  • Bol navrhnutý nový modul FIPS vrátane implementácie kryptografických algoritmov, ktoré sú v súlade s bezpečnostným štandardom FIPS 140-2 (proces certifikácie modulu sa má začať tento mesiac a certifikácia FIPS 140-2 sa očakáva budúci rok). Nový modul sa používa oveľa jednoduchšie a jeho pripojenie k mnohým aplikáciám nebude o nič zložitejšie ako zmena konfiguračného súboru. V predvolenom nastavení je modul FIPS zakázaný a vyžaduje, aby bola povolená možnosť enable-fips.
  • libcrypto implementuje koncept pluggable providerov, ktorý nahradil koncept motorov (ENGINE API bolo zastarané). S pomocou poskytovateľov môžete pridať svoje vlastné implementácie algoritmov pre také operácie, ako je šifrovanie, dešifrovanie, generovanie kľúčov, výpočet MAC, vytváranie a overovanie digitálnych podpisov. Je možné pripájať nové a vytvárať alternatívne implementácie už podporovaných algoritmov (štandardne sa teraz pre každý algoritmus používa poskytovateľ zabudovaný do OpenSSL).
  • Pridaná podpora pre protokol správy certifikátov (RFC 4210), ktorý možno použiť na vyžiadanie certifikátov od servera CA, aktualizáciu certifikátov a zrušenie certifikátov. Práca s CMP prebieha pomocou novej utility openssl-cmp, ktorá podporuje aj formát CRMF (RFC 4211) a odosielanie požiadaviek cez HTTP/HTTPS (RFC 6712).
  • Bol implementovaný plnohodnotný klient pre protokoly HTTP a HTTPS podporujúci metódy GET a POST, presmerovanie požiadaviek, prácu cez proxy, kódovanie ASN.1 a spracovanie timeoutu.
  • Bolo pridané nové EVP_MAC (Message Authentication Code API), aby sa uľahčilo pridávanie nových implementácií falošných vložiek.
  • Navrhuje sa nové softvérové ​​rozhranie na generovanie kľúčov – EVP_KDF (Key Derivation Function API), ktoré zjednodušuje pridávanie nových implementácií KDF a PRF. Staré API EVP_PKEY, cez ktoré boli dostupné algoritmy scrypt, TLS1 PRF a HKDF, bolo prepracované vo forme vrstvy implementovanej nad rozhrania API EVP_KDF a EVP_MAC.
  • Implementácia protokolu TLS poskytuje možnosť používať klienta a server TLS zabudovaný v jadre Linuxu na urýchlenie operácií. Ak chcete povoliť implementáciu TLS poskytovanú jadrom Linuxu, musíte povoliť možnosť „SSL_OP_ENABLE_KTLS“ alebo nastavenie „enable-ktls“.
  • Pridaná podpora pre nové algoritmy:
    • Algoritmy generovania kľúčov (KDF) sú „SINGLE STEP“ a „SSH“.
    • Algoritmy simulovaného vkladania (MAC) sú „GMAC“ a „KMAC“.
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Šifrovací algoritmus "AES-SIV" (RFC-8452).
    • Pridané volania do EVP API s podporou inverzných šifier pomocou algoritmu AES na šifrovanie kľúčov (Key Wrap): „AES-128-WRAP-INV“, „AES-192-WRAP-INV“, „AES-256-WRAP- INV“, „AES-128-WRAP-PAD-INV“, „AES-192-WRAP-PAD-INV“ a „AES-256-WRAP-PAD-INV“.
    • Do rozhrania EVP API bola pridaná podpora pre algoritmy vypožičiavania šifrovaného textu (CTS): „AES-128-CBC-CTS“, „AES-192-CBC-CTS“, „AES-256-CBC-CTS“, „CAMELLIA-128-CBC -CTS“, „CAMELLIA-192-CBC-CTS“ a „CAMELLIA-256-CBC-CTS“.
    • Pridaná podpora digitálnych podpisov CAdES-BES (RFC 5126).
    • AES_GCM implementuje parameter AuthEnvelopedData (RFC 5083), aby umožnil šifrovanie a dešifrovanie správ overených a zašifrovaných pomocou režimu AES GCM.
  • Do verejného rozhrania API boli pridané funkcie PKCS7_get_octet_string a PKCS7_type_is_other.
  • Rozhranie API PKCS#12 nahrádza predvolené algoritmy používané vo funkcii PKCS12_create() algoritmami PBKDF2 a AES a na výpočet MAC používa algoritmus SHA-256. Ak chcete obnoviť predchádzajúce správanie, je k dispozícii možnosť „-legacy“. Pridané veľké množstvo nových rozšírených volaní do PKCS12_*_ex, PKCS5_*_ex a PKCS8_*_ex, ako napríklad PKCS12_add_key_ex().PKCS12_create_ex() a PKCS12_decrypt_skey_ex().
  • Pre platformu Windows bola pridaná podpora pre synchronizáciu vlákien pomocou mechanizmu SRWLock.
  • Pridané nové rozhranie API na sledovanie, povolené prostredníctvom parametra enable-trace.
  • Rozsah kľúčov podporovaných vo funkciách EVP_PKEY_public_check() a EVP_PKEY_param_check() bol rozšírený: RSA, DSA, ED25519, X25519, ED448 a X448.
  • Subsystém RAND_DRBG bol odstránený a nahradený rozhraním API EVP_RAND. Funkcie FIPS_mode() a FIPS_mode_set() boli odstránené.
  • Významná časť API sa stala zastaranou – používanie zastaraných volaní v kóde projektu bude mať za následok varovania počas kompilácie. Vrátane nízkoúrovňových rozhraní API viazaných na určité implementácie algoritmov (napríklad AES_set_encrypt_key a AES_encrypt) bolo oficiálne vyhlásené za zastarané. Oficiálna podpora v OpenSSL 3.0.0 je teraz poskytovaná len pre vysokoúrovňové EVP API, ktoré sú abstrahované od jednotlivých typov algoritmov (toto API zahŕňa napríklad funkcie EVP_EncryptInit_ex, EVP_EncryptUpdate a EVP_EncryptFinal). Zastarané rozhrania API budú odstránené v jednom z ďalších hlavných vydaní. Implementácie starších algoritmov, ako sú MD2 a DES, dostupné cez EVP API, boli presunuté do samostatného „staršieho“ modulu, ktorý je predvolene vypnutý.
  • Dokumentácia a testovací balík boli výrazne rozšírené. V porovnaní s vetvou 1.1.1 sa objem dokumentácie zvýšil o 94 % a veľkosť kódu testovacej sady o 54 %.

Zdroj: opennet.ru

Pridať komentár