OpenSSL 3.0.0 Cryptographic Library Release

Efter tre års udvikling og 19 testudgivelser blev OpenSSL 3.0.0-biblioteket frigivet med implementering af SSL/TLS-protokollerne og forskellige krypteringsalgoritmer. Den nye gren inkluderer ændringer, der bryder bagudkompatibiliteten på API- og ABI-niveau, men ændringerne vil ikke påvirke driften af ​​de fleste applikationer, der kræver en genopbygning for at migrere fra OpenSSL 1.1.1. Den tidligere gren af ​​OpenSSL 1.1.1 vil blive understøttet indtil september 2023.

En væsentlig ændring i versionsnummeret skyldes overgangen til den traditionelle "Major.Minor.Patch"-nummerering. Fra nu af vil det første ciffer (Major) i versionsnummeret kun ændre sig, hvis kompatibiliteten er brudt på API/ABI-niveau, og det andet (Minor) vil ændre sig, når funktionaliteten øges uden at ændre API/ABI. Korrigerende opdateringer vil blive leveret med en ændring til det tredje ciffer (patch). Tallet 3.0.0 umiddelbart efter 1.1.1 blev valgt for at undgå overlapninger med det aktuelt under udvikling FIPS-modul til OpenSSL, hvor 2.x-nummereringen blev brugt.

Den anden vigtige ændring for projektet var overgangen fra en dobbeltlicens (OpenSSL og SSLeay) til Apache 2.0-licensen. Den tidligere proprietære OpenSSL-licens var baseret på teksten i den ældre Apache 1.0-licens og krævede eksplicit omtale af OpenSSL i markedsføringsmateriale ved brug af OpenSSL-biblioteker, samt en særlig meddelelse, hvis OpenSSL blev leveret som en del af produktet. Disse krav gjorde den gamle licens inkompatibel med GPL, hvilket gjorde det vanskeligt at bruge OpenSSL i GPL-licenserede projekter. For at omgå denne inkompatibilitet blev GPL-projekter tvunget til at bruge specifikke licensaftaler, hvor hovedteksten i GPL blev suppleret med en klausul, der eksplicit tillod applikationen at blive linket til OpenSSL-biblioteket og nævnte, at kravene i GPL ikke gælder for at linke til OpenSSL.

Sammenlignet med OpenSSL 1.1.1-grenen tilføjede OpenSSL 3.0.0 mere end 7500 ændringer bidraget af 350 udviklere. Vigtigste innovationer i OpenSSL 3.0.0:

  • Et nyt FIPS-modul er blevet foreslået, herunder implementering af kryptografiske algoritmer, der overholder FIPS 140-2-sikkerhedsstandarden (certificeringsprocessen for modulet er planlagt til at begynde i denne måned, og FIPS 140-2-certificering forventes næste år). Det nye modul er meget nemmere at bruge, og at forbinde det med mange applikationer vil ikke være sværere end at ændre konfigurationsfilen. Som standard er FIPS-modulet deaktiveret og kræver, at enable-fips-indstillingen er aktiveret.
  • libcrypto implementerer konceptet med pluggbare udbydere, som erstattede konceptet med motorer (ENGINE API er blevet forældet). Ved hjælp af udbydere kan du tilføje dine egne implementeringer af algoritmer til operationer som kryptering, dekryptering, nøglegenerering, MAC-beregning, oprettelse og verifikation af digitale signaturer. Det er muligt både at forbinde nye og skabe alternative implementeringer af allerede understøttede algoritmer (som standard bruges udbyderen indbygget i OpenSSL nu til hver algoritme).
  • Tilføjet understøttelse af Certificate Management Protocol (RFC 4210), som kan bruges til at anmode om certifikater fra en CA-server, opdatere certifikater og tilbagekalde certifikater. Arbejdet med CMP udføres ved hjælp af det nye openssl-cmp-værktøj, som også understøtter CRMF-formatet (RFC 4211) og afsendelse af anmodninger via HTTP/HTTPS (RFC 6712).
  • En fuldgyldig klient til HTTP- og HTTPS-protokollerne er blevet implementeret, som understøtter GET- og POST-metoderne, anmoder om omdirigering, arbejder gennem en proxy, ASN.1-kodning og timeout-behandling.
  • En ny EVP_MAC (Message Authentication Code API) er blevet tilføjet for at gøre det nemmere at tilføje nye implementeringer af mock inserts.
  • En ny softwaregrænseflade til generering af nøgler foreslås - EVP_KDF (Key Derivation Function API), som forenkler tilføjelsen af ​​nye implementeringer af KDF og PRF. Den gamle EVP_PKEY API, hvorigennem scrypt, TLS1 PRF og HKDF algoritmerne var tilgængelige, er blevet redesignet i form af et lag implementeret oven på EVP_KDF og EVP_MAC API'erne.
  • Implementeringen af ​​TLS-protokollen giver mulighed for at bruge TLS-klienten og serveren indbygget i Linux-kernen for at fremskynde driften. For at aktivere TLS-implementeringen leveret af Linux-kernen, skal du aktivere "SSL_OP_ENABLE_KTLS"-indstillingen eller "enable-ktls"-indstillingen.
  • Tilføjet understøttelse af nye algoritmer:
    • Nøglegenereringsalgoritmer (KDF) er "SINGLE STEP" og "SSH".
    • Simulerede indsættelsesalgoritmer (MAC) er "GMAC" og "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Krypteringsalgoritme "AES-SIV" (RFC-8452).
    • Tilføjede kald til EVP API med understøttelse af inverse cifre ved hjælp af AES-algoritmen til at kryptere nøgler (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".
    • Tilføjet understøttelse af ciphertext låning (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".
    • Tilføjet understøttelse af CAdES-BES digitale signaturer (RFC 5126).
    • AES_GCM implementerer parameteren AuthEnvelopedData (RFC 5083) for at aktivere kryptering og dekryptering af meddelelser, der er godkendt og krypteret ved hjælp af AES GCM-tilstand.
  • Funktionerne PKCS7_get_octet_string og PKCS7_type_is_other er blevet tilføjet til den offentlige API.
  • PKCS#12 API erstatter standardalgoritmerne, der bruges i funktionen PKCS12_create() med PBKDF2 og AES, og bruger SHA-256-algoritmen til at beregne MAC. For at gendanne tidligere adfærd er "-legacy" muligheden. Tilføjet et stort antal nye udvidede opkald til PKCS12_*_ex, PKCS5_*_ex og PKCS8_*_ex, såsom PKCS12_add_key_ex().PKCS12_create_ex() og PKCS12_decrypt_skey_ex().
  • For Windows-platformen er der tilføjet understøttelse af trådsynkronisering ved hjælp af SRWLock-mekanismen.
  • Tilføjet en ny sporings-API, aktiveret via enable-trace-parameteren.
  • Udvalget af nøgler, der understøttes i funktionerne EVP_PKEY_public_check() og EVP_PKEY_param_check() er blevet udvidet: RSA, DSA, ED25519, X25519, ED448 og X448.
  • RAND_DRBG-undersystemet er blevet fjernet, erstattet af EVP_RAND API. FIPS_mode() og FIPS_mode_set() funktionerne er blevet fjernet.
  • En væsentlig del af API'en er blevet forældet - brug af forældede kald i projektkode vil resultere i advarsler under kompilering. Inklusive API'er på lavt niveau, der er knyttet til visse implementeringer af algoritmer (for eksempel AES_set_encrypt_key og AES_encrypt) er officielt erklæret for forældede. Officiel support i OpenSSL 3.0.0 ydes nu kun til EVP API'er på højt niveau, der er abstraheret fra individuelle algoritmetyper (denne API inkluderer f.eks. funktionerne EVP_EncryptInit_ex, EVP_EncryptUpdate og EVP_EncryptFinal). Forældede API'er vil blive fjernet i en af ​​de næste større udgivelser. Implementeringer af ældre algoritmer som MD2 og DES, tilgængelige via EVP API, er blevet flyttet til et separat "legacy" modul, som er deaktiveret som standard.
  • Dokumentationen og testpakken er blevet væsentligt udvidet. Sammenlignet med filial 1.1.1 er mængden af ​​dokumentation steget med 94%, og størrelsen af ​​testsuitekoden er steget med 54%.

Kilde: opennet.ru

Tilføj en kommentar