Publicació de la biblioteca criptogràfica OpenSSL 3.0.0

Després de tres anys de desenvolupament i 19 versions de prova, es va llançar la biblioteca OpenSSL 3.0.0 amb la implementació dels protocols SSL/TLS i diversos algorismes de xifratge. La nova branca inclou canvis que trenquen la compatibilitat enrere a nivell d'API i ABI, però els canvis no afectaran el funcionament de la majoria de les aplicacions que requereixen una reconstrucció per migrar des d'OpenSSL 1.1.1. La branca anterior d'OpenSSL 1.1.1 serà compatible fins al setembre de 2023.

Un canvi significatiu en el número de versió es deu a la transició a la numeració tradicional "Major.Minor.Patch". A partir d'ara, el primer dígit (Major) del número de versió canviarà només si es trenca la compatibilitat a nivell d'API/ABI, i el segon (Menor) canviarà quan s'augmenti la funcionalitat sense canviar l'API/ABI. Les actualitzacions correctives es lliuraran amb un canvi al tercer dígit (pegat). Es va triar el número 3.0.0 immediatament després de l'1.1.1 per evitar solapaments amb el mòdul FIPS actualment en desenvolupament per a OpenSSL, per al qual es va utilitzar la numeració 2.x.

El segon canvi important per al projecte va ser la transició d'una llicència dual (OpenSSL i SSLeay) a la llicència Apache 2.0. L'anterior llicència patentada OpenSSL es basava en el text de la llicència heretada d'Apache 1.0 i requeria una menció explícita d'OpenSSL als materials de màrqueting quan s'utilitzaven les biblioteques OpenSSL, així com un avís especial si OpenSSL es proporcionava com a part del producte. Aquests requisits feien que l'antiga llicència fos incompatible amb la GPL, cosa que dificultava l'ús d'OpenSSL en projectes amb llicència GPL. Per evitar aquesta incompatibilitat, els projectes GPL es van veure obligats a utilitzar acords de llicència específics en els quals el text principal de la GPL es complementava amb una clàusula que permetia explícitament que l'aplicació s'enllaçés amb la biblioteca OpenSSL i esmentava que els requisits de la GPL no aplicar per enllaçar amb OpenSSL.

En comparació amb la branca OpenSSL 1.1.1, OpenSSL 3.0.0 va afegir més de 7500 canvis aportats per 350 desenvolupadors. Principals innovacions d'OpenSSL 3.0.0:

  • S'ha proposat un nou mòdul FIPS, que inclou la implementació d'algoritmes criptogràfics que compleixen l'estàndard de seguretat FIPS 140-2 (el procés de certificació del mòdul està previst que comenci aquest mes i s'espera la certificació FIPS 140-2 l'any vinent). El nou mòdul és molt més fàcil d'utilitzar i connectar-lo a moltes aplicacions no serà més difícil que canviar el fitxer de configuració. Per defecte, el mòdul FIPS està desactivat i requereix que l'opció enable-fips estigui habilitada.
  • libcrypto implementa el concepte de proveïdors connectables, que va substituir el concepte de motors (l'API ENGINE ha quedat obsoleta). Amb l'ajuda dels proveïdors, podeu afegir les vostres pròpies implementacions d'algorismes per a operacions com ara xifratge, desxifrat, generació de claus, càlcul MAC, creació i verificació de signatures digitals. És possible connectar-ne de nous i crear implementacions alternatives d'algorismes ja admesos (per defecte, ara s'utilitza el proveïdor integrat a OpenSSL per a cada algorisme).
  • S'ha afegit suport per al protocol de gestió de certificats (RFC 4210), que es pot utilitzar per sol·licitar certificats d'un servidor CA, actualitzar certificats i revocar certificats. El treball amb CMP es realitza mitjançant la nova utilitat openssl-cmp, que també admet el format CRMF (RFC 4211) i l'enviament de sol·licituds mitjançant HTTP/HTTPS (RFC 6712).
  • S'ha implementat un client complet per als protocols HTTP i HTTPS, que admet els mètodes GET i POST, redirecció de sol·licituds, treballant mitjançant un proxy, codificació ASN.1 i processament de temps d'espera.
  • S'ha afegit un nou EVP_MAC (Message Authentication Code API) per facilitar l'addició de noves implementacions d'insercions simulades.
  • Es proposa una nova interfície de programari per generar claus - EVP_KDF (Key Derivation Function API), que simplifica l'addició de noves implementacions de KDF i PRF. L'antiga API EVP_PKEY, a través de la qual estaven disponibles els algorismes scrypt, TLS1 PRF i HKDF, s'ha redissenyat en forma d'una capa implementada a la part superior de les API EVP_KDF i EVP_MAC.
  • La implementació del protocol TLS ofereix la possibilitat d'utilitzar el client i el servidor TLS integrats al nucli de Linux per accelerar les operacions. Per habilitar la implementació de TLS proporcionada pel nucli de Linux, heu d'activar l'opció "SSL_OP_ENABLE_KTLS" o la configuració "enable-ktls".
  • S'ha afegit suport per a nous algorismes:
    • Els algorismes de generació de claus (KDF) són "SINGLE STEP" i "SSH".
    • Els algorismes d'inserció simulada (MAC) són "GMAC" i "KMAC".
    • Algoritme d'encapsulació de claus RSA (KEM) "RSASVE".
    • Algorisme de xifratge "AES-SIV" (RFC-8452).
    • S'han afegit trucades a l'API EVP que admeten xifrats inversos mitjançant l'algoritme AES per xifrar claus (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV". ”, "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" i "AES-256-WRAP-PAD-INV".
    • S'ha afegit suport per als algorismes de préstec de text xifrat (CTS) a l'API EVP: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC". -CTS” ", "CAMELLIA-192-CBC-CTS" i "CAMELLIA-256-CBC-CTS".
    • S'ha afegit suport per a signatures digitals CAdES-BES (RFC 5126).
    • AES_GCM implementa el paràmetre AuthEnvelopedData (RFC 5083) per habilitar el xifratge i el desxifrat dels missatges autenticats i xifrats mitjançant el mode AES GCM.
  • Les funcions PKCS7_get_octet_string i PKCS7_type_is_other s'han afegit a l'API pública.
  • L'API PKCS#12 substitueix els algorismes predeterminats utilitzats a la funció PKCS12_create() amb PBKDF2 i AES, i utilitza l'algoritme SHA-256 per calcular MAC. Per restaurar el comportament anterior, es proporciona l'opció "-legacy". S'han afegit un gran nombre de trucades ampliades noves a PKCS12_*_ex, PKCS5_*_ex i PKCS8_*_ex, com ara PKCS12_add_key_ex().PKCS12_create_ex() i PKCS12_decrypt_skey_ex().
  • Per a la plataforma Windows, s'ha afegit suport per a la sincronització de fils mitjançant el mecanisme SRWLock.
  • S'ha afegit una nova API de traça, habilitat mitjançant el paràmetre enable-trace.
  • S'ha ampliat el rang de claus admeses a les funcions EVP_PKEY_public_check() i EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 i X448.
  • S'ha eliminat el subsistema RAND_DRBG, substituït per l'API EVP_RAND. S'han eliminat les funcions FIPS_mode() i FIPS_mode_set().
  • Una part important de l'API s'ha tornat obsoleta: l'ús de trucades obsoletes al codi del projecte generarà advertències durant la compilació. Incloses les API de baix nivell vinculades a determinades implementacions d'algorismes (per exemple, AES_set_encrypt_key i AES_encrypt) s'han declarat oficialment obsoletes. El suport oficial d'OpenSSL 3.0.0 ara només es proporciona per a les API EVP d'alt nivell que s'abstreuen de tipus d'algorisme individuals (aquesta API inclou, per exemple, les funcions EVP_EncryptInit_ex, EVP_EncryptUpdate i EVP_EncryptFinal). Les API obsoletes s'eliminaran en una de les properes versions principals. Les implementacions d'algorismes heretats com MD2 i DES, disponibles a través de l'API EVP, s'han mogut a un mòdul "legat" separat, que està desactivat per defecte.
  • La documentació i el conjunt de proves s'han ampliat significativament. En comparació amb la branca 1.1.1, el volum de documentació ha augmentat un 94% i la mida del codi del conjunt de proves ha augmentat un 54%.

Font: opennet.ru

Afegeix comentari