Vydání kryptografické knihovny OpenSSL 3.0.0

Po třech letech vývoje a 19 testovacích verzích došlo k vydání knihovny OpenSSL 3.0.0, která implementuje protokoly SSL/TLS a různé šifrovací algoritmy. Nová větev zahrnuje změny, které narušují zpětnou kompatibilitu na úrovni API a ABI, ale tyto změny neovlivní funkci většiny aplikací, pro jejichž přechod z OpenSSL 1.1.1 stačí překompilace. Podpora předchozí verze OpenSSL 1.1.1 bude zajišťována do září 2023.

Významná změna v čísle verze je spojena s přechodem na tradiční číslování „Major.Minor.Patch“. První číslo (Major) v čísle verze se nyní změní pouze při narušení kompatibility na úrovni API/ABI, zatímco druhé číslo (Minor) při přidávání funkcionality bez změny API/ABI. Opravy budou vydávány se změnou třetího čísla (Patch). Číslo 3.0.0 bylo zvoleno hned po 1.1.1, aby se předešlo kolizím s vyvíjeným FIPS-modulem pro OpenSSL, pro který se používala číslování 2.x.

Druhou důležitou změnou pro projekt byl přechod z dvojí licence (OpenSSL a SSLeay) na licenci Apache 2.0. Dříve používaná vlastní licence OpenSSL byla založena na textu zastaralé licence Apache 1.0 a vyžadovala explicitní zmínku OpenSSL v reklamních materiálech při používání knihoven OpenSSL, jakož i doplnění zvláštního oznámení v případě dodání OpenSSL jako součásti produktu. Takové požadavky činily starou licenci nekompatibilní s GPL, což způsobovalo obtíže při používání OpenSSL v projektech s licencí GPL. Aby se předešlo této nekompatibilitě, musely projekty GPL používat specifické licenční dohody, ve kterých byl základní text GPL doplněn bodem, který jasně povoloval vazbu aplikace na knihovnu OpenSSL a uváděl, že požadavky GPL se nevztahují na vazbu na OpenSSL.

Ve srovnání s větví OpenSSL 1.1.1 bylo v OpenSSL 3.0.0 přidáno více než 7500 změn, které připravilo 350 vývojářů. Hlavní novinky OpenSSL 3.0.0:

  • Byl navržen nový modul FIPS, který zahrnuje implementaci kryptografických algoritmů splňujících bezpečnostní standard FIPS 140-2 (certifikační proces tohoto modulu se plánuje zahájit v tomto měsíci, získání certifikátu FIPS 140-2 se očekává příští rok). Nový modul je výrazně jednodušší na používání a jeho napojení na mnohé aplikace nebude složitější než změna konfiguračního souboru. Výchozí nastavení modulu FIPS je vypnuto a pro jeho aktivaci je třeba zadat volbu enable-fips.
  • V libcrypto byla zavedena koncepce plug-in providerů, která nahradila koncept engine (ENGINE API bylo považováno za zastaralé). Pomocí providerů lze přidávat vlastní implementace algoritmů pro operace jako šifrování, dešifrování, generování klíčů, výpočet MAC, generování a ověřování digitálních podpisů. Je možná jak integrace nových, tak vytváření alternativních implementací již podporovaných algoritmů (výchozí volba pro každý algoritmus nyní využívá vestavěného poskytovatele OpenSSL).
  • Byla přidána podpora pro protokol správy certifikátů CMP (Certificate Management Protocol, RFC 4210), který lze použít k žádosti o certifikáty od serveru certifikační autorita, obnovování certifikátů a odvolávání certifikátů. Práce s CMP se provádí pomocí nového nástroje openssl-cmp, který také podporuje formát CRMF (RFC 4211) a přenos žádostí přes HTTP/HTTPS (RFC 6712).
  • Byl implementován plnohodnotný klient pro protokoly HTTP a HTTPS, který podporuje metody GET a POST, přesměrování požadavků, práci přes proxy, kódování ASN.1 a zpracování časových limitů.
  • Bylo přidáno nové API EVP_MAC (API pro Message Authentication Code), které usnadňuje přidání nových implementací autentizačních kódů.
  • Bylo navrženo nové rozhraní pro generování klíčů — EVP_KDF (API pro funkce derivace klíčů), které usnadňuje přidání nových implementací KDF a PRF. Staré API EVP_PKEY, přes které byly dostupné algoritmy scrypt, TLS1 PRF a HKDF, bylo přepracováno ve formě vrstvy implementované nad API EVP_KDF a EVP_MAC.
  • V implementaci protokolu TLS byla poskytnuta možnost použití integrovaných klientských a serverových TLS v jádře Linuxu k urychlení operací. Pro využití implementace TLS poskytované jádrem Linuxu je potřeba povolit volbu 'SSL_OP_ENABLE_KTLS' nebo nastavení 'enable-ktls'.
  • Byla přidána podpora pro nové algoritmy:
    • Algoritmy generování klíčů (KDF) — „SINGLE STEP“ a „SSH“.
    • Algoritmy kódování zprávy (MAC) — „GMAC“ a „KMAC“.
    • Algoritmus inkapsulace klíčů RSA (KEM) „RSASVE“.
    • Šifrovací algoritmus „AES-SIV“ (RFC-8452).
    • Do API EVP byly přidány volání s podporou inverzních šifrování, používajících algoritmus AES k šifrování klíčů (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 API EVP byla přidána podpora algoritmů pro přebírání š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“.
    • Byla přidána podpora digitálních podpisů CAdES-BES (RFC 5126).
    • V AES_GCM byl implementován parametr AuthEnvelopedData (RFC 5083), umožňující šifrovat a dešifrovat zprávy, které jsou autentizované a zašifrované pomocí režimu AES GCM.
  • Funkce PKCS7_get_octet_string a PKCS7_type_is_other byly přesunuty do veřejného API.
  • V API PKCS#12 byly algoritmy použité ve funkci PKCS12_create() nahrazeny PBKDF2 a AES, a pro výpočet MAC byl použit algoritmus SHA-256. Pro obnovení předchozího chování je k dispozici volba „-legacy“. Bylo přidáno velké množství nových rozšířených volání PKCS12_*_ex, PKCS5_*_ex a PKCS8_*_ex, jako jsou PKCS12_add_key_ex(), PKCS12_create_ex() a PKCS12_decrypt_skey_ex().
  • Pro platformu Windows byla přidána podpora synchronizace vláken pomocí mechanismu SRWLock.
  • Bylo přidáno nové API pro sledování, které se aktivuje přes parametr enable-trace.
  • Byl rozšířen okruh klíčů podporovaných ve funkcích EVP_PKEY_public_check() a EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 a X448.
  • Byl odstraněn podsystem RAND_DRBG, místo kterého byl navržen API EVP_RAND. Funkce FIPS_mode() a FIPS_mode_set() byly odstraněny.
  • Podstatná část API byla převedena do kategorie zastaralých — používání zastaralých volání ve kódu projektů bude při kompilaci vyvolávat varování. Mezi zastaralé byly oficiálně zařazeny nízkoúrovňové API, vazby na specifické implementace algoritmů (například AES_set_encrypt_key a AES_encrypt). Oficiální podpora v OpenSSL 3.0.0 je nyní poskytována pouze pro vysoceúrovňové API EVP, které je abstrahováno od jednotlivých typů algoritmů (k tomuto API patří například funkce EVP_EncryptInit_ex, EVP_EncryptUpdate a EVP_EncryptFinal). V některé z následujících významných verzí budou zastaralé API odstraněny. Implementace zastaralých algoritmů, jako jsou MD2 a DES, dostupných přes API EVP, byly přesunuty do samostatného modulu „legacy“, který je ve výchozím nastavení vypnutý.
  • Dokumentace a sada testů byly výrazně rozšířeny. Ve srovnání s větví 1.1.1 vzrostl objem dokumentace o 94 % a velikost kódu testovací sady o 54 %.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster