Udgivelsen af kryptografisk bibliotek OpenSSL 3.0.0

Efter tre års udvikling og 19 testudgivelser er OpenSSL 3.0.0 blevet frigivet med implementering af SSL/TLS-protokoller og forskellige krypteringsalgoritmer. Den nye version inkluderer ændringer, der bryder bagudkompatibilitet på API- og ABI-niveau, men ændringerne vil ikke påvirke driften af de fleste applikationer, som kun kræver en genkompilering fra OpenSSL 1.1.1. Supporten for den tidligere OpenSSL 1.1.1-version vil fortsætte indtil september 2023.

Ændringen af versionsnummeret er betydelig, da det overgår til den traditionelle nummerering "Major.Minor.Patch". Den første ciffer (Major) i versionsnummeret vil nu kun ændre sig ved brud på API/ABI-kompatibilitet, mens den anden ciffer (Minor) ændres ved udvidelse af funktionaliteten uden at ændre API/ABI. Korrigerende opdateringer vil blive leveret ved ændring af den tredje ciffer (Patch). Nummeret 3.0.0 blev valgt straks efter 1.1.1 for at undgå overlap med den FIPS-modul, der er under udvikling til OpenSSL, hvor nummerering 2.x blev anvendt.

Et andet vigtigt ændring for projektet er overgangen fra dobbellicens (OpenSSL og SSLeay) til Apache 2.0-licensen. Den tidligere anvendte OpenSSL-licens var baseret på teksten fra den forældede Apache 1.0-licens og krævede eksplicit nævnelse af OpenSSL i reklamematerialer ved brug af OpenSSL-biblioteker, samt tilføjelse af en særlig bemærkning, hvis OpenSSL blev leveret som en del af et produkt. Sådanne krav gjorde den gamle licens inkompatibel med GPL, hvilket skabte udfordringer ved brug af OpenSSL i GPL-licensprojekter. For at omgå denne inkompatibilitet var GPL-projekter nødt til at anvende specifikke licensaftaler, hvor hovedteksten i GPL blev suppleret med en sektion, der eksplicit tillod binding af applikationen med OpenSSL-biblioteket og nævnte, at GPL-kravene ikke gælder for bindingen med OpenSSL.

Sammenlignet med OpenSSL 1.1.1 er der i OpenSSL 3.0.0 tilføjet over 7500 ændringer, forberedt af 350 udviklere. De vigtigste nyheder i OpenSSL 3.0.0:

  • En ny FIPS-modul er blevet foreslået, som inkluderer implementeringen af kryptografiske algoritmer, der overholder FIPS 140-2 sikkerhedsstandarden (certificeringsprocessen for modulet forventes at starte denne måned, og opnåelse af FIPS 140-2 certifikatet forventes næste år). Den nye modul er betydeligt lettere at bruge, og tilslutningen til mange applikationer vil ikke være mere kompliceret end at ændre konfigurationsfilen. Som standard er FIPS-modulet deaktiveret og kræver angivelse af enable-fips-optionen for aktivering.
  • I libcrypto er konceptet med tilsluttede leverandører blevet implementeret, som afløser motor-konceptet (ENGINE API er blevet erklæret forældet). Ved hjælp af leverandører kan man tilføje egne implementeringer af algoritmer til operationer såsom kryptering, dekryptering, nøglegenerering, beregning af MAC, oprettelse og verifikation af digitale signaturer. Både nye og alternative implementeringer af allerede understøttede algoritmer kan tilsluttes (som standard bruges nu den indbyggede leverandør fra OpenSSL for hver algoritme).
  • Understøttelse af Certificate Management Protocol (CMP, RFC 4210) er blevet tilføjet, som kan bruges til at anmode om certifikater fra server certificeringsmyndigheden, opdatere certifikater og tilbagekalde certifikater. Arbejde med CMP overvåges ved hjælp af det nye værktøj openssl-cmp, som også inkluderer understøttelse af CRMF-formatet (RFC 4211) og overførsel af forespørgsler via HTTP/HTTPS (RFC 6712).
  • En fuld klient til HTTP- og HTTPS-protokoller er blevet implementeret, som understøtter GET- og POST-metoder, anmodningsomdirigering, proxy-interaktion, ASN.1 kodning og håndtering af timeout.
  • En ny API EVP_MAC (Message Authentication Code API) er blevet tilføjet, hvilket forenkler tilføjelsen af nye implementeringer af messagedigester.
  • Et nyt programmeringsinterface til nøglegenerering — EVP_KDF (Key Derivation Function API) — er blevet foreslået, hvilket forenkler tilføjelsen af nye implementeringer af KDF og PRF. Den gamle API EVP_PKEY, der gav adgang til algoritmerne scrypt, TLS1 PRF og HKDF, er blevet revideret i form af et lag, der er implementeret oven på API EVP_KDF og EVP_MAC.
  • I implementeringen af TLS-protokollen er det blevet muligt at bruge de indbyggede TLS-klient- og serverparametre fra Linux-kernen for at accelerere operationer. For at aktivere den TLS-implementering, der leveres af Linux-kernen, kræves det, at man aktiverer optionen «SSL_OP_ENABLE_KTLS» eller indstillingen «enable-ktls».
  • Understøttelse af nye algoritmer er blevet tilføjet:
    • Nøglegenereringsalgoritmer (KDF) – „SINGLE STEP“ og „SSH“.
    • MAC-algoritmer – „GMAC“ og „KMAC“.
    • RSA-nøgleindkapslingsalgoritmen (KEM) „RSASVE“.
    • Krypteringsalgoritmen „AES-SIV“ (RFC-8452).
    • API EVP har fået tilføjet kald med support for inverterende krypteringer, der bruger AES-algoritmen til nøglekryptering (Key Wrap): „AES-128-WRAP-INV“, „AES-192-WRAP-INV“, „AES-256-WRAP-INV“, „AES-128-WRAP-PAD-INV“, „AES-192-WRAP-PAD-INV“ og „AES-256-WRAP-PAD-INV.“
    • API EVP har fået tilføjet support for algoritmer til tekstindlånning (CTS): „AES-128-CBC-CTS“, „AES-192-CBC-CTS“, „AES-256-CBC-CTS“, „CAMELLIA-128-CBC-CTS“, „CAMELLIA-192-CBC-CTS“ og „CAMELLIA-256-CBC-CTS“.
    • Support for digitale signaturer CAdES-BES (RFC 5126) er blevet tilføjet.
    • I AES_GCM er parameteren AuthEnvelopedData (RFC 5083) implementeret, hvilket muliggør kryptering og dekryptering af beskeder, der er autentificerede og krypterede ved hjælp af AES GCM-tilstand.
  • Funktionerne PKCS7_get_octet_string og PKCS7_type_is_other er blevet flyttet til den offentlige API.
  • I API PKCS#12 er de algoritmer, der anvendes som standard i funktionen PKCS12_create(), blevet erstattet med PBKDF2 og AES, og SHA-256-algoritmen anvendes til beregning af MAC. En mulighed for at genskabe den tidligere adfærd er tilgængelig med indstillingen „-legacy“. Et stort antal nye udvidede kald PKCS12_*_ex, PKCS5_*_ex og PKCS8_*_ex er blevet tilføjet, såsom PKCS12_add_key_ex(), PKCS12_create_ex() og PKCS12_decrypt_skey_ex().
  • På Windows-platformen er der tilføjet support til tråd-synkronisering ved hjælp af SRWLock-mekanismen.
  • Der er tilføjet et nyt API til sporing, der aktiveres via parameteren enable-trace.
  • Spektret af nøgler, der understøttes i funktionerne EVP_PKEY_public_check() og EVP_PKEY_param_check(), er udvidet: RSA, DSA, ED25519, X25519, ED448 og X448.
  • RAND_DRBG-subsystemet er blevet fjernet, og API EVP_RAND er blevet foreslået i stedet. Funktionerne FIPS_mode() og FIPS_mode_set() er blevet fjernet.
  • En betydelig del af API'et er blevet klassificeret som forældet - brugen af forældede kald i projekternes kode vil medføre advarsler under kompilering. Blandt de forældede er officiel erklæret lave niveau API'er, der er knyttet til specifikke algoritmeimplementeringer (for eksempel AES_set_encrypt_key og AES_encrypt). Den officielle støtte i OpenSSL 3.0.0 gives nu kun til højniveau API'er EVP, som er abstraheret fra specifikke algoritmetyper (eksempler på funktioner, der hører til dette API, inkluderer EVP_EncryptInit_ex, EVP_EncryptUpdate og EVP_EncryptFinal). I en af de kommende betydelige udgivelser vil understøttelsen af de forældede API'er blive fjernet. Implementeringer af forældede algoritmer som MD2 og DES, tilgængelige gennem EVP API'et, er blevet flyttet til en separat 'legacy' modul, som er deaktiveret som standard.
  • Dokumentation og test-sæt er blevet væsentligt udvidet. I forhold til version 1.1.1 er mængden af dokumentation steget med 94%, og størrelsen af testkodens sæt er steget med 54%.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster