OpenSSL 3.0.0 Cryptographic Library Release

Human sa tulo ka tuig nga pag-uswag ug 19 ka test releases, ang OpenSSL 3.0.0 library gipagawas uban sa pagpatuman sa SSL/TLS protocols ug lain-laing encryption algorithms. Ang bag-ong sanga naglakip sa mga pagbag-o nga nagbungkag sa paatras nga pagkaangay sa lebel sa API ug ABI, apan ang mga pagbag-o dili makaapekto sa operasyon sa kadaghanan sa mga aplikasyon nga nanginahanglan usa ka pagtukod pag-usab aron molalin gikan sa OpenSSL 1.1.1. Ang kanhing sanga sa OpenSSL 1.1.1 suportahan hangtod sa Septiyembre 2023.

Ang usa ka mahinungdanon nga pagbag-o sa numero sa bersyon tungod sa pagbalhin ngadto sa tradisyonal nga "Major.Minor.Patch" nga pag-numero. Sugod karon, ang unang digit (Major) sa numero sa bersyon mausab lang kon maguba ang compatibility sa API/ABI level, ug ang ikaduha (Minor) mausab kon madugangan ang functionality nga dili mausab ang API/ABI. Ang corrective updates ihatag uban ang kausaban sa ikatulo nga digit (Patch). Ang numero nga 3.0.0 diha-diha dayon human sa 1.1.1 gipili aron malikayan ang pagsapaw sa kasamtangan nga gipalambo nga FIPS module para sa OpenSSL, diin ang 2.x nga pag-numero gigamit.

Ang ikaduha nga importante nga pagbag-o alang sa proyekto mao ang pagbalhin gikan sa usa ka dual lisensya (OpenSSL ug SSLeay) ngadto sa Apache 2.0 nga lisensya. Ang naunang proprietary OpenSSL nga lisensya gibase sa teksto sa legacy nga Apache 1.0 nga lisensya ug gikinahanglan ang klaro nga paghisgot sa OpenSSL sa mga materyales sa pagpamaligya kung naggamit sa OpenSSL nga mga librarya, ingon man usa ka espesyal nga pahibalo kung ang OpenSSL gihatag isip bahin sa produkto. Kini nga mga kinahanglanon naghimo sa daan nga lisensya nga dili mahiuyon sa GPL, nga nagpalisud sa paggamit sa OpenSSL sa mga proyekto nga lisensyado sa GPL. Aron masulbad kini nga dili pagkaangay, ang mga proyekto sa GPL napugos sa paggamit sa piho nga mga kasabutan sa lisensya diin ang panguna nga teksto sa GPL gidugangan sa usa ka clause nga tin-aw nga nagtugot sa aplikasyon nga ma-link sa OpenSSL library ug naghisgot nga ang mga kinahanglanon sa GPL wala. magamit sa pag-link sa OpenSSL.

Kon itandi sa OpenSSL 1.1.1 nga sanga, ang OpenSSL 3.0.0 midugang ug labaw sa 7500 ka kausaban nga giamot sa 350 ka developers. Pangunang mga inobasyon sa OpenSSL 3.0.0:

  • Usa ka bag-ong FIPS module ang gisugyot, lakip ang pagpatuman sa cryptographic algorithms nga nagsunod sa FIPS 140-2 security standard (ang proseso sa sertipikasyon alang sa module gikatakda nga magsugod karong bulana, ug ang FIPS 140-2 nga sertipikasyon gilauman sa sunod tuig). Ang bag-ong module mas sayon ​​​​gamiton ug ang pagkonektar niini sa daghang mga aplikasyon dili na mas lisud kay sa pag-usab sa configuration file. Pinaagi sa default, ang module sa FIPS gi-disable ug nanginahanglan nga mahimo ang opsyon sa pag-enable-fips.
  • Ang libcrypto nagpatuman sa konsepto sa pluggable providers, nga mipuli sa konsepto sa mga makina (ang ENGINE API wala na gigamit). Sa tabang sa mga provider, mahimo nimong idugang ang imong kaugalingon nga mga pagpatuman sa mga algorithm alang sa mga operasyon sama sa pag-encrypt, decryption, yawe nga henerasyon, pagkalkula sa MAC, paghimo ug pag-verify sa mga digital nga pirma. Posible nga pareho ang pagkonektar sa mga bag-o ug paghimo og mga alternatibo nga pagpatuman sa nasuportahan na nga mga algorithm (sa default, ang provider nga gitukod sa OpenSSL gigamit na karon alang sa matag algorithm).
  • Gidugang nga suporta alang sa Certificate Management Protocol (RFC 4210), nga magamit sa paghangyo og mga sertipiko gikan sa CA server, pag-update sa mga sertipiko, ug pagbawi sa mga sertipiko. Ang pagtrabaho kauban ang CMP gihimo gamit ang bag-ong openssl-cmp utility, nga nagsuporta usab sa CRMF format (RFC 4211) ug pagpadala mga hangyo pinaagi sa HTTP/HTTPS (RFC 6712).
  • Ang usa ka hingpit nga kliyente alang sa HTTP ug HTTPS nga mga protocol gipatuman, pagsuporta sa GET ug POST nga mga pamaagi, paghangyo sa redirection, pagtrabaho pinaagi sa usa ka proxy, ASN.1 encoding ug pagproseso sa timeout.
  • Usa ka bag-ong EVP_MAC (Message Authentication Code API) ang gidugang aron mas sayon ​​ang pagdugang og mga bag-ong pagpatuman sa mga mock insert.
  • Gisugyot ang usa ka bag-ong interface sa software alang sa paghimo og mga yawe - EVP_KDF (Key Derivation Function API), nga nagpasimple sa pagdugang sa mga bag-ong pagpatuman sa KDF ug PRF. Ang daan nga EVP_PKEY API, diin ang scrypt, TLS1 PRF ug HKDF nga mga algorithm anaa, gidesinyo pag-usab sa porma sa usa ka layer nga gipatuman sa ibabaw sa EVP_KDF ug EVP_MAC API.
  • Ang pagpatuman sa TLS protocol naghatag ug abilidad sa paggamit sa TLS client ug server nga gitukod sa Linux kernel aron mapadali ang mga operasyon. Aron mahimo ang pagpatuman sa TLS nga gihatag sa Linux kernel, kinahanglan nimo nga i-enable ang opsyon nga "SSL_OP_ENABLE_KTLS" o ang setting nga "enable-ktls".
  • Gidugang nga suporta alang sa bag-ong mga algorithm:
    • Key generation algorithms (KDF) mao ang "SINGLE STEP" ug "SSH".
    • Ang simulated insertion algorithms (MAC) mao ang "GMAC" ug "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Encryption algorithm "AES-SIV" (RFC-8452).
    • Gidugang nga mga tawag sa EVP API nga nagsuporta sa inverse ciphers gamit ang AES algorithm sa pag-encrypt sa mga yawe (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV ” , "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" ug "AES-256-WRAP-PAD-INV".
    • Gidugang nga suporta alang sa ciphertext borrowing (CTS) nga mga algorithm sa EVP API: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC -CTS" ", "CAMELLIA-192-CBC-CTS" ug "CAMELLIA-256-CBC-CTS".
    • Gidugang nga suporta alang sa CAdES-BES digital signatures (RFC 5126).
    • Ang AES_GCM nagpatuman sa AuthEnvelopedData (RFC 5083) nga parametro aron makahimo sa pag-encrypt ug pag-decrypt sa mga mensahe nga gi-authenticate ug gi-encrypt gamit ang AES GCM mode.
  • Ang PKCS7_get_octet_string ug PKCS7_type_is_other nga mga gimbuhaton gidugang sa publikong API.
  • Gipulihan sa PKCS#12 API ang default algorithms nga gigamit sa PKCS12_create() function sa PBKDF2 ug AES, ug naggamit sa SHA-256 algorithm sa pagkalkulo sa MAC. Aron mapasig-uli ang nangagi nga kinaiya, ang "-legacy" nga kapilian gihatag. Gidugang ang daghang bag-ong gipalawig nga tawag sa PKCS12_*_ex, PKCS5_*_ex ug PKCS8_*_ex, sama sa PKCS12_add_key_ex().PKCS12_create_ex() ug PKCS12_decrypt_skey_ex().
  • Alang sa plataporma sa Windows, gidugang ang suporta alang sa pag-synchronize sa thread gamit ang mekanismo sa SRWLock.
  • Gidugang ang usa ka bag-ong pagsubay sa API, nga gipagana pinaagi sa pag-enable-trace parameter.
  • Ang sakup sa mga yawe nga gisuportahan sa EVP_PKEY_public_check() ug EVP_PKEY_param_check() nga mga gimbuhaton gipalapdan: RSA, DSA, ED25519, X25519, ED448 ug X448.
  • Ang RAND_DRBG subsystem gitangtang, gipulihan sa EVP_RAND API. Ang FIPS_mode() ug FIPS_mode_set() nga mga gimbuhaton gikuha na.
  • Usa ka hinungdanon nga bahin sa API ang nahimo nga dili na magamit - ang paggamit sa mga wala na magamit nga mga tawag sa code sa proyekto moresulta sa mga pasidaan sa panahon sa pag-compile. Naglakip sa ubos nga lebel nga mga API nga nahigot sa pipila nga mga pagpatuman sa mga algorithm (pananglitan, AES_set_encrypt_key ug AES_encrypt) opisyal nga gideklarar nga wala na magamit. Ang opisyal nga suporta sa OpenSSL 3.0.0 gihatag na lamang para sa mga high-level nga EVP APIs nga gikuha gikan sa indibidwal nga matang sa algorithm (kini nga API naglakip, pananglitan, ang EVP_EncryptInit_ex, EVP_EncryptUpdate, ug EVP_EncryptFinal functions). Ang mga wala na magamit nga mga API tangtangon sa usa sa mga sunod nga dagkong pagpagawas. Ang mga pagpatuman sa legacy algorithms sama sa MD2 ug DES, nga anaa pinaagi sa EVP API, gibalhin ngadto sa usa ka bulag nga "legacy" module, nga gi-disable pinaagi sa default.
  • Ang dokumentasyon ug test suite nga labi nga gipalapdan. Kung itandi sa branch 1.1.1, ang gidaghanon sa dokumentasyon misaka sa 94%, ug ang gidak-on sa test suite code misaka sa 54%.

Source: opennet.ru

Idugang sa usa ka comment