OpenSSL 3.0.0 Cryptographic Library Release

Efter tre års utveckling och 19 testutgåvor släpptes OpenSSL 3.0.0-biblioteket med implementering av SSL/TLS-protokollen och olika krypteringsalgoritmer. Den nya grenen inkluderar ändringar som bryter bakåtkompatibiliteten på API- och ABI-nivå, men ändringarna kommer inte att påverka driften av de flesta applikationer som kräver en ombyggnad för att migrera från OpenSSL 1.1.1. Den tidigare grenen av OpenSSL 1.1.1 kommer att stödjas fram till september 2023.

En betydande förändring i versionsnumret beror på övergången till den traditionella "Major.Minor.Patch"-numreringen. Från och med nu kommer den första siffran (Major) i versionsnumret endast att ändras om kompatibiliteten bryts på API/ABI-nivå, och den andra (Minor) kommer att ändras när funktionaliteten utökas utan att ändra API/ABI. Korrigerande uppdateringar kommer att levereras med en ändring till den tredje siffran (Patch). Siffran 3.0.0 omedelbart efter 1.1.1 valdes för att undvika överlappningar med den för närvarande under utveckling FIPS-modulen för OpenSSL, för vilken 2.x-numreringen användes.

Den andra viktiga förändringen för projektet var övergången från en dubbellicens (OpenSSL och SSLeay) till Apache 2.0-licensen. Den tidigare proprietära OpenSSL-licensen baserades på texten i den äldre Apache 1.0-licensen och krävde explicit omnämnande av OpenSSL i marknadsföringsmaterial vid användning av OpenSSL-bibliotek, samt ett särskilt meddelande om OpenSSL tillhandahålls som en del av produkten. Dessa krav gjorde den gamla licensen inkompatibel med GPL, vilket gjorde det svårt att använda OpenSSL i GPL-licensierade projekt. För att komma runt denna inkompatibilitet tvingades GPL-projekt att använda specifika licensavtal där huvudtexten i GPL kompletterades med en klausul som uttryckligen tillät applikationen att länkas till OpenSSL-biblioteket och nämnde att kraven i GPL inte gäller för länkning med OpenSSL.

Jämfört med OpenSSL 1.1.1-grenen, har OpenSSL 3.0.0 lagt till mer än 7500 350 ändringar från 3.0.0 utvecklare. De viktigaste innovationerna i OpenSSL XNUMX:

  • En ny FIPS-modul har föreslagits, inklusive implementering av kryptografiska algoritmer som följer säkerhetsstandarden FIPS 140-2 (certifieringsprocessen för modulen är planerad att påbörjas denna månad, och FIPS 140-2-certifiering förväntas nästa år). Den nya modulen är mycket enklare att använda och att ansluta den till många applikationer blir inte svårare än att ändra konfigurationsfilen. Som standard är FIPS-modulen inaktiverad och kräver att alternativet enable-fips är aktiverat.
  • libcrypto implementerar konceptet med pluggbara leverantörer, som ersatte konceptet med motorer (ENGINE API har föråldrats). Med hjälp av leverantörer kan du lägga till dina egna implementeringar av algoritmer för sådana operationer som kryptering, dekryptering, nyckelgenerering, MAC-beräkning, skapande och verifiering av digitala signaturer. Det är möjligt att både koppla ihop nya och skapa alternativa implementeringar av redan stödda algoritmer (som standard används nu leverantören inbyggd i OpenSSL för varje algoritm).
  • Lade till stöd för Certificate Management Protocol (RFC 4210), som kan användas för att begära certifikat från en CA-server, uppdatera certifikat och återkalla certifikat. Arbetet med CMP utförs med det nya openssl-cmp-verktyget, som också stöder CRMF-formatet (RFC 4211) och skicka förfrågningar via HTTP/HTTPS (RFC 6712).
  • En fullfjädrad klient för HTTP- och HTTPS-protokollen har implementerats, som stöder GET- och POST-metoderna, begäran om omdirigering, arbete genom en proxy, ASN.1-kodning och timeout-bearbetning.
  • En ny EVP_MAC (Message Authentication Code API) har lagts till för att göra det enklare att lägga till nya implementeringar av mock-inlägg.
  • Ett nytt mjukvarugränssnitt för att generera nycklar föreslås - EVP_KDF (Key Derivation Function API), vilket förenklar tillägget av nya implementeringar av KDF och PRF. Det gamla EVP_PKEY API, genom vilket algoritmerna scrypt, TLS1 PRF och HKDF var tillgängliga, har omdesignats i form av ett lager implementerat ovanpå EVP_KDF och EVP_MAC API:erna.
  • Implementeringen av TLS-protokollet ger möjlighet att använda TLS-klienten och servern som är inbyggd i Linux-kärnan för att påskynda driften. För att aktivera TLS-implementeringen som tillhandahålls av Linux-kärnan, måste du aktivera alternativet "SSL_OP_ENABLE_KTLS" eller inställningen "enable-ktls".
  • Tillagt stöd för nya algoritmer:
    • Nyckelgenereringsalgoritmer (KDF) är "SINGLE STEP" och "SSH".
    • Simulerade insättningsalgoritmer (MAC) är "GMAC" och "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Krypteringsalgoritm "AES-SIV" (RFC-8452).
    • Lade till anrop till EVP API med stöd för inversa chiffer som använder AES-algoritmen för att kryptera nycklar (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP- INV", "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" och "AES-256-WRAP-PAD-INV".
    • Lade till stöd för chiffertextlån (CTS) algoritmer till EVP API: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC -CTS", "CAMELLIA-192-CBC-CTS" och "CAMELLIA-256-CBC-CTS".
    • Tillagt stöd för CAdES-BES digitala signaturer (RFC 5126).
    • AES_GCM implementerar parametern AuthEnvelopedData (RFC 5083) för att möjliggöra kryptering och dekryptering av meddelanden som autentiserats och krypterats med AES GCM-läget.
  • Funktionerna PKCS7_get_octet_string och PKCS7_type_is_other har lagts till i det offentliga API:et.
  • PKCS#12 API ersätter standardalgoritmerna som används i funktionen PKCS12_create() med PBKDF2 och AES, och använder SHA-256-algoritmen för att beräkna MAC. För att återställa tidigare beteende tillhandahålls alternativet "-legacy". Lade till ett stort antal nya utökade anrop till PKCS12_*_ex, PKCS5_*_ex och PKCS8_*_ex, som PKCS12_add_key_ex().PKCS12_create_ex() och PKCS12_decrypt_skey_ex().
  • För Windows-plattformen har stöd för trådsynkronisering med SRWLock-mekanismen lagts till.
  • Lade till ett nytt spårnings-API, aktiverat via parametern enable-trace.
  • Omfånget av nycklar som stöds i funktionerna EVP_PKEY_public_check() och EVP_PKEY_param_check() har utökats: RSA, DSA, ED25519, X25519, ED448 och X448.
  • RAND_DRBG-undersystemet har tagits bort, ersatt av EVP_RAND API. Funktionerna FIPS_mode() och FIPS_mode_set() har tagits bort.
  • En betydande del av API:et har blivit föråldrat - att använda föråldrade anrop i projektkod kommer att resultera i varningar under kompileringen. Inklusive lågnivå-API:er kopplade till vissa implementeringar av algoritmer (till exempel AES_set_encrypt_key och AES_encrypt) har officiellt förklarats föråldrade. Officiellt stöd i OpenSSL 3.0.0 tillhandahålls nu endast för EVP-API:er på hög nivå som är abstraherade från individuella algoritmtyper (detta API inkluderar till exempel funktionerna EVP_EncryptInit_ex, EVP_EncryptUpdate och EVP_EncryptFinal). Utfasade API:er kommer att tas bort i en av de kommande större utgåvorna. Implementeringar av äldre algoritmer som MD2 och DES, tillgängliga via EVP API, har flyttats till en separat "legacy" modul, som är inaktiverad som standard.
  • Dokumentationen och testpaketet har utökats avsevärt. Jämfört med gren 1.1.1 har dokumentationsvolymen ökat med 94 % och storleken på testsvitskoden har ökat med 54 %.

Källa: opennet.ru

Lägg en kommentar