OpenSSL 3.0.0 Cryptographic Library -julkaisu

Kolmen vuoden kehitystyön ja 19 testijulkaisun jälkeen OpenSSL 3.0.0 -kirjasto julkaistiin SSL/TLS-protokollien ja erilaisten salausalgoritmien toteutuksella. Uusi haara sisältää muutoksia, jotka rikkovat taaksepäin yhteensopivuuden API- ja ABI-tasolla, mutta muutokset eivät vaikuta useimpien sovellusten toimintaan, jotka vaativat uudelleenmuodostuksen siirtyäkseen OpenSSL 1.1.1 -versiosta. OpenSSL 1.1.1:n aiempaa haaraa tuetaan syyskuuhun 2023 saakka.

Merkittävä muutos versionumerossa johtuu siirtymisestä perinteiseen "Major.Minor.Patch" -numerointiin. Tästä eteenpäin versionumeron ensimmäinen numero (Major) muuttuu vain, jos yhteensopivuus on rikki API/ABI-tasolla, ja toinen (Minor) muuttuu, kun toimintoja lisätään API/ABI:ta muuttamatta. Korjaavat päivitykset toimitetaan muutoksella kolmanteen numeroon (Patch). Numero 3.0.0 välittömästi 1.1.1:n jälkeen valittiin päällekkäisyyksien välttämiseksi parhaillaan kehitteillä olevan OpenSSL:n FIPS-moduulin kanssa, jossa käytettiin 2.x-numerointia.

Toinen tärkeä muutos projektille oli siirtyminen kaksoislisenssistä (OpenSSL ja SSLeay) Apache 2.0 -lisenssiin. Edellinen patentoitu OpenSSL-lisenssi perustui vanhan Apache 1.0 -lisenssin tekstiin ja vaati OpenSSL:n nimenomaisen mainitsemisen markkinointimateriaaleissa OpenSSL-kirjastoja käytettäessä sekä erityistä huomautusta, jos OpenSSL toimitettiin osana tuotetta. Nämä vaatimukset tekivät vanhasta lisenssistä yhteensopimattoman GPL:n kanssa, mikä vaikeutti OpenSSL:n käyttöä GPL-lisensoiduissa projekteissa. Tämän yhteensopimattomuuden kiertämiseksi GPL-projektit pakotettiin käyttämään erityisiä lisenssisopimuksia, joissa GPL:n päätekstiä täydennettiin lausekkeella, joka nimenomaisesti salli sovelluksen linkittämisen OpenSSL-kirjastoon ja mainitsi, että GPL:n vaatimukset eivät sovelletaan linkittämiseen OpenSSL:n kanssa.

Verrattuna OpenSSL 1.1.1 -haaraan, OpenSSL 3.0.0 lisäsi yli 7500 350 muutosta 3.0.0 kehittäjän toimittamana. OpenSSL XNUMX:n tärkeimmät innovaatiot:

  • Uutta FIPS-moduulia on ehdotettu, mukaan lukien FIPS 140-2 -turvastandardin mukaisten salausalgoritmien käyttöönotto (moduulin sertifiointiprosessi on määrä alkaa tässä kuussa, ja FIPS 140-2 -sertifiointia odotetaan ensi vuonna). Uutta moduulia on paljon helpompi käyttää, ja sen yhdistäminen moniin sovelluksiin ei ole sen vaikeampaa kuin asetustiedoston vaihtaminen. Oletusarvoisesti FIPS-moduuli on poistettu käytöstä ja edellyttää, että enable-fips-vaihtoehto on otettava käyttöön.
  • libcrypto toteuttaa liitettävien palveluntarjoajien käsitteen, joka korvasi moottoreiden käsitteen (ENGINE API on vanhentunut). Palveluntarjoajien avulla voit lisätä omia algoritmien toteutuksia esimerkiksi salaukseen, salauksen purkamiseen, avainten luomiseen, MAC-laskentaan, digitaalisten allekirjoitusten luomiseen ja todentamiseen. On mahdollista sekä yhdistää uusia että luoda vaihtoehtoisia toteutuksia jo tuetuista algoritmeista (oletusarvoisesti jokaisessa algoritmissa käytetään OpenSSL:ään sisäänrakennettua palveluntarjoajaa).
  • Lisätty tuki varmenteiden hallintaprotokollalle (RFC 4210), jolla voidaan pyytää varmenteita CA-palvelimelta, päivittää varmenteita ja peruuttaa varmenteita. Työskentely CMP:n kanssa tapahtuu uudella openssl-cmp-apuohjelmalla, joka tukee myös CRMF-muotoa (RFC 4211) ja pyyntöjen lähettämistä HTTP/HTTPS:n kautta (RFC 6712).
  • HTTP- ja HTTPS-protokollia varten on toteutettu täysimittainen asiakas, joka tukee GET- ja POST-menetelmiä, pyyntöjen uudelleenohjausta, välityspalvelinta, ASN.1-koodausta ja aikakatkaisukäsittelyä.
  • Uusi EVP_MAC (Message Authentication Code API) on lisätty helpottamaan uusien valelisäysten lisäämistä.
  • Avainten luomiseen ehdotetaan uutta ohjelmistorajapintaa - EVP_KDF (Key Derivation Function API), joka yksinkertaistaa uusien KDF- ja PRF-toteutusten lisäämistä. Vanha EVP_PKEY API, jonka kautta scrypt-, TLS1 PRF- ja HKDF-algoritmit olivat saatavilla, on suunniteltu uudelleen EVP_KDF- ja EVP_MAC-sovellusliittymien päälle toteutettuna kerroksena.
  • TLS-protokollan toteutus tarjoaa mahdollisuuden käyttää Linux-ytimeen sisäänrakennettua TLS-asiakasta ja -palvelinta toimintojen nopeuttamiseksi. Ota Linux-ytimen tarjoama TLS-toteutus käyttöön ottamalla käyttöön "SSL_OP_ENABLE_KTLS"-vaihtoehto tai "enable-ktls"-asetus.
  • Lisätty tuki uusille algoritmeille:
    • Avainten luontialgoritmit (KDF) ovat "SINGLE STEP" ja "SSH".
    • Simuloidut lisäysalgoritmit (MAC) ovat "GMAC" ja "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Salausalgoritmi "AES-SIV" (RFC-8452).
    • Lisätty kutsut EVP API:lle, jotka tukevat käänteisiä salauksia käyttämällä AES-algoritmia avainten salaamiseen (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV" ”, "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" ja "AES-256-WRAP-PAD-INV".
    • Lisätty tuki salatekstin lainausalgoritmeille (CTS) EVP API:lle: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC". -CTS", "CAMELLIA-192-CBC-CTS" ja "CAMELLIA-256-CBC-CTS".
    • Lisätty tuki CAdES-BES-digitaalisille allekirjoituksille (RFC 5126).
    • AES_GCM toteuttaa AuthEnvelopedData (RFC 5083) -parametrin, joka mahdollistaa AES GCM -moodilla todennettujen ja salattujen viestien salauksen ja salauksen purkamisen.
  • Funktiot PKCS7_get_octet_string ja PKCS7_type_is_other on lisätty julkiseen sovellusliittymään.
  • PKCS#12 API korvaa PKCS12_create()-funktiossa käytetyt oletusalgoritmit PBKDF2:lla ja AES:llä ja käyttää SHA-256-algoritmia MAC:n laskemiseen. Voit palauttaa aiemman toiminnan käyttämällä "-legacy"-vaihtoehtoa. Lisätty suuri määrä uusia laajennettuja kutsuja PKCS12_*_ex, PKCS5_*_ex ja PKCS8_*_ex, kuten PKCS12_add_key_ex().PKCS12_create_ex() ja PKCS12_decrypt_skey_ex().
  • Windows-alustalle on lisätty tuki säikeiden synkronointiin SRWLock-mekanismin avulla.
  • Lisätty uusi jäljityssovellusliittymä, joka otetaan käyttöön enable-trace-parametrin kautta.
  • EVP_PKEY_public_check()- ja EVP_PKEY_param_check()-toimintojen tukemien avainten valikoimaa on laajennettu: RSA, DSA, ED25519, X25519, ED448 ja X448.
  • RAND_DRBG-alijärjestelmä on poistettu ja korvattu EVP_RAND API:lla. FIPS_mode()- ja FIPS_mode_set()-funktiot on poistettu.
  • Merkittävä osa API:sta on vanhentunut - vanhentuneiden kutsujen käyttö projektikoodissa johtaa varoitukseen kääntämisen aikana. Tiettyihin algoritmien toteutuksiin (esimerkiksi AES_set_encrypt_key ja AES_encrypt) sidotut matalan tason API:t on virallisesti julistettu vanhentuneiksi. OpenSSL 3.0.0:n virallinen tuki tarjotaan nyt vain korkean tason EVP-sovellusliittymille, jotka on erotettu yksittäisistä algoritmityypeistä (tämä API sisältää esimerkiksi funktiot EVP_EncryptInit_ex, EVP_EncryptUpdate ja EVP_EncryptFinal). Vanhentuneet sovellusliittymät poistetaan jossain seuraavista tärkeistä julkaisuista. EVP API:n kautta saatavilla olevien vanhojen algoritmien, kuten MD2 ja DES, toteutukset on siirretty erilliseen "vanhaan" moduuliin, joka on oletuksena pois käytöstä.
  • Dokumentaatiota ja testipakettia on laajennettu merkittävästi. Verrattuna haaraan 1.1.1, dokumentaation määrä on kasvanut 94 % ja testiohjelmiston koodin koko on kasvanut 54 %.

Lähde: opennet.ru

Lisää kommentti