OpenSSL 3.0.0 Cryptographic Library Release

Etter tre år med utvikling og 19 testutgivelser ble OpenSSL 3.0.0-biblioteket utgitt med implementering av SSL/TLS-protokollene og ulike krypteringsalgoritmer. Den nye grenen inkluderer endringer som bryter bakoverkompatibilitet på API- og ABI-nivå, men endringene vil ikke påvirke driften av de fleste applikasjoner som krever en ombygging for å migrere fra OpenSSL 1.1.1. Den forrige grenen av OpenSSL 1.1.1 vil bli støttet frem til september 2023.

En betydelig endring i versjonsnummeret skyldes overgangen til den tradisjonelle "Major.Minor.Patch"-nummereringen. Fra nå av vil det første sifferet (Major) i versjonsnummeret endres bare hvis kompatibiliteten brytes på API/ABI-nivå, og det andre (Minor) vil endres når funksjonaliteten økes uten å endre API/ABI. Korrigerende oppdateringer vil bli levert med en endring til det tredje sifferet (patch). Tallet 3.0.0 rett etter 1.1.1 ble valgt for å unngå overlapping med FIPS-modulen for OpenSSL under utvikling, hvor 2.x-nummereringen ble brukt.

Den andre viktige endringen for prosjektet var overgangen fra en dobbel lisens (OpenSSL og SSLeay) til Apache 2.0-lisensen. Den tidligere proprietære OpenSSL-lisensen var basert på teksten til den eldre Apache 1.0-lisensen og krevde eksplisitt omtale av OpenSSL i markedsføringsmateriell ved bruk av OpenSSL-biblioteker, samt en spesiell melding om OpenSSL ble levert som en del av produktet. Disse kravene gjorde den gamle lisensen inkompatibel med GPL, noe som gjorde det vanskelig å bruke OpenSSL i GPL-lisensierte prosjekter. For å omgå denne inkompatibiliteten, ble GPL-prosjekter tvunget til å bruke spesifikke lisensavtaler der hovedteksten til GPL ble supplert med en klausul som eksplisitt tillot applikasjonen å kobles til OpenSSL-biblioteket og nevnte at kravene til GPL ikke gjelder for kobling med OpenSSL.

Sammenlignet med OpenSSL 1.1.1-grenen, la OpenSSL 3.0.0 til mer enn 7500 endringer bidratt av 350 utviklere. Hovedinnovasjoner av OpenSSL 3.0.0:

  • En ny FIPS-modul er foreslått, inkludert implementering av kryptografiske algoritmer som overholder FIPS 140-2-sikkerhetsstandarden (sertifiseringsprosessen for modulen er planlagt å starte denne måneden, og FIPS 140-2-sertifisering forventes neste år). Den nye modulen er mye enklere å bruke og å koble den til mange applikasjoner vil ikke være vanskeligere enn å endre konfigurasjonsfilen. Som standard er FIPS-modulen deaktivert og krever at enable-fips-alternativet er aktivert.
  • libcrypto implementerer konseptet med pluggbare leverandører, som erstattet konseptet med motorer (ENGINE API har blitt avviklet). Ved hjelp av leverandører kan du legge til dine egne implementeringer av algoritmer for slike operasjoner som kryptering, dekryptering, nøkkelgenerering, MAC-beregning, opprettelse og verifisering av digitale signaturer. Det er mulig å både koble til nye og lage alternative implementeringer av allerede støttede algoritmer (som standard brukes nå leverandøren innebygd i OpenSSL for hver algoritme).
  • Lagt til støtte for Certificate Management Protocol (RFC 4210), som kan brukes til å be om sertifikater fra en CA-server, oppdatere sertifikater og tilbakekalle sertifikater. Arbeid med CMP utføres ved hjelp av det nye openssl-cmp-verktøyet, som også støtter CRMF-formatet (RFC 4211) og sending av forespørsler via HTTP/HTTPS (RFC 6712).
  • En fullverdig klient for HTTP- og HTTPS-protokollene er implementert, som støtter GET- og POST-metodene, forespørsel om omdirigering, arbeider gjennom en proxy, ASN.1-koding og tidsavbruddsbehandling.
  • En ny EVP_MAC (Message Authentication Code API) er lagt til for å gjøre det enklere å legge til nye implementeringer av mock-innlegg.
  • Et nytt programvaregrensesnitt for generering av nøkler er foreslått - EVP_KDF (Key Derivation Function API), som forenkler tillegg av nye implementeringer av KDF og PRF. Den gamle EVP_PKEY API, som scrypt, TLS1 PRF og HKDF algoritmene var tilgjengelige gjennom, har blitt redesignet i form av et lag implementert på toppen av EVP_KDF og EVP_MAC APIene.
  • Implementeringen av TLS-protokollen gir muligheten til å bruke TLS-klienten og serveren innebygd i Linux-kjernen for å øke hastigheten på driften. For å aktivere TLS-implementeringen levert av Linux-kjernen, må du aktivere "SSL_OP_ENABLE_KTLS"-alternativet eller "enable-ktls"-innstillingen.
  • Lagt til støtte for nye algoritmer:
    • Nøkkelgenereringsalgoritmer (KDF) er "SINGLE STEP" og "SSH".
    • Simulerte innsettingsalgoritmer (MAC) er "GMAC" og "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Krypteringsalgoritme "AES-SIV" (RFC-8452).
    • Lagt til kall til EVP API med støtte for inverse chiffer ved bruk av AES-algoritmen for å kryptere nøkler (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".
    • Lagt til støtte for chiffertekstlån (CTS) algoritmer til EVP API: "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".
    • Lagt til støtte for CAdES-BES digitale signaturer (RFC 5126).
    • AES_GCM implementerer parameteren AuthEnvelopedData (RFC 5083) for å aktivere kryptering og dekryptering av meldinger som er autentisert og kryptert med AES GCM-modus.
  • Funksjonene PKCS7_get_octet_string og PKCS7_type_is_other er lagt til den offentlige APIen.
  • PKCS#12 API erstatter standardalgoritmene som brukes i PKCS12_create()-funksjonen med PBKDF2 og AES, og bruker SHA-256-algoritmen til å beregne MAC. For å gjenopprette tidligere atferd, er alternativet "-legacy" gitt. Lagt til et stort antall nye utvidede anrop til PKCS12_*_ex, PKCS5_*_ex og PKCS8_*_ex, for eksempel PKCS12_add_key_ex().PKCS12_create_ex() og PKCS12_decrypt_skey_ex().
  • For Windows-plattformen er støtte for trådsynkronisering ved hjelp av SRWLock-mekanismen lagt til.
  • Lagt til et nytt sporings-API, aktivert via enable-trace-parameteren.
  • Utvalget av nøkler som støttes i funksjonene EVP_PKEY_public_check() og EVP_PKEY_param_check() har blitt utvidet: RSA, DSA, ED25519, X25519, ED448 og X448.
  • RAND_DRBG-undersystemet er fjernet, erstattet av EVP_RAND API. FIPS_mode()- og FIPS_mode_set()-funksjonene er fjernet.
  • En betydelig del av API-en har blitt gjort foreldet - bruk av foreldede kall i prosjektkode vil resultere i advarsler under kompilering. Inkludert lavnivå-API-er knyttet til visse implementeringer av algoritmer (for eksempel AES_set_encrypt_key og AES_encrypt) er offisielt erklært foreldet. Offisiell støtte i OpenSSL 3.0.0 er nå bare gitt for EVP APIer på høyt nivå som er abstrahert fra individuelle algoritmetyper (dette API inkluderer for eksempel funksjonene EVP_EncryptInit_ex, EVP_EncryptUpdate og EVP_EncryptFinal). Utdaterte APIer vil bli fjernet i en av de neste store utgivelsene. Implementeringer av eldre algoritmer som MD2 og DES, tilgjengelig gjennom EVP API, har blitt flyttet til en egen "legacy" modul, som er deaktivert som standard.
  • Dokumentasjonen og testpakken har blitt betydelig utvidet. Sammenlignet med gren 1.1.1 har dokumentasjonsvolumet økt med 94 %, og størrelsen på testpakkekoden har økt med 54 %.

Kilde: opennet.ru

Legg til en kommentar