Paglabas ng OpenSSL 3.0.0 Cryptographic Library

Pagkatapos ng tatlong taon ng pag-unlad at 19 na paglabas ng pagsubok, ang OpenSSL 3.0.0 library ay inilabas sa pagpapatupad ng SSL/TLS protocol at iba't ibang encryption algorithm. Kasama sa bagong sangay ang mga pagbabago na sumisira sa backward compatibility sa API at ABI level, ngunit hindi makakaapekto ang mga pagbabago sa pagpapatakbo ng karamihan sa mga application na nangangailangan ng muling pagbuo upang lumipat mula sa OpenSSL 1.1.1. Ang nakaraang sangay ng OpenSSL 1.1.1 ay susuportahan hanggang Setyembre 2023.

Ang isang makabuluhang pagbabago sa numero ng bersyon ay dahil sa paglipat sa tradisyonal na "Major.Minor.Patch" na pagnunumero. Mula ngayon, magbabago lang ang unang digit (Major) sa numero ng bersyon kung masira ang compatibility sa antas ng API/ABI, at magbabago ang pangalawa (Minor) kapag nadagdagan ang functionality nang hindi binabago ang API/ABI. Ihahatid ang mga corrective update na may pagbabago sa ikatlong digit (Patch). Ang numerong 3.0.0 kaagad pagkatapos ng 1.1.1 ay pinili upang maiwasan ang mga magkakapatong sa kasalukuyang ginagawang FIPS module para sa OpenSSL, kung saan ginamit ang 2.x na pagnunumero.

Ang pangalawang mahalagang pagbabago para sa proyekto ay ang paglipat mula sa dalawahang lisensya (OpenSSL at SSLeay) patungo sa lisensyang Apache 2.0. Ang dating pagmamay-ari na lisensya ng OpenSSL ay batay sa teksto ng legacy na Apache 1.0 na lisensya at nangangailangan ng tahasang pagbanggit ng OpenSSL sa mga materyales sa marketing kapag gumagamit ng mga OpenSSL na library, pati na rin ang isang espesyal na paunawa kung ang OpenSSL ay ibinigay bilang bahagi ng produkto. Ang mga kinakailangang ito ay ginawang hindi tugma ang lumang lisensya sa GPL, na nagpapahirap sa paggamit ng OpenSSL sa mga proyektong lisensyado ng GPL. Upang malampasan ang hindi pagkakatugma na ito, ang mga proyekto ng GPL ay pinilit na gumamit ng mga partikular na kasunduan sa lisensya kung saan ang pangunahing teksto ng GPL ay dinagdagan ng isang sugnay na tahasang nagpapahintulot sa application na ma-link sa OpenSSL library at binanggit na ang mga kinakailangan ng GPL ay hindi ilapat sa pag-link sa OpenSSL.

Kung ikukumpara sa OpenSSL 1.1.1 branch, nagdagdag ang OpenSSL 3.0.0 ng higit sa 7500 pagbabago na iniambag ng 350 developer. Mga pangunahing inobasyon ng OpenSSL 3.0.0:

  • Isang bagong FIPS module ay iminungkahi, kabilang ang pagpapatupad ng mga cryptographic algorithm na sumusunod sa FIPS 140-2 na pamantayan ng seguridad (ang proseso ng sertipikasyon para sa module ay nakatakdang magsimula ngayong buwan, at ang FIPS 140-2 na sertipikasyon ay inaasahan sa susunod na taon). Ang bagong module ay mas madaling gamitin at ang pagkonekta nito sa maraming mga application ay hindi mas mahirap kaysa sa pagbabago ng configuration file. Bilang default, ang FIPS module ay hindi pinagana at nangangailangan ng enable-fips na opsyon na paganahin.
  • Ipinapatupad ng libcrypto ang konsepto ng mga pluggable provider, na pinalitan ang konsepto ng mga engine (ang ENGINE API ay hindi na ginagamit). Sa tulong ng mga provider, maaari kang magdagdag ng sarili mong mga pagpapatupad ng mga algorithm para sa mga operasyon tulad ng pag-encrypt, decryption, pagbuo ng key, pagkalkula ng MAC, paglikha at pag-verify ng mga digital na lagda. Posible na parehong kumonekta ng mga bago at lumikha ng mga alternatibong pagpapatupad ng mga suportadong algorithm (bilang default, ang provider na binuo sa OpenSSL ay ginagamit na ngayon para sa bawat algorithm).
  • Nagdagdag ng suporta para sa Certificate Management Protocol (RFC 4210), na maaaring magamit upang humiling ng mga certificate mula sa isang server ng CA, mag-update ng mga certificate, at bawiin ang mga certificate. Ang pakikipagtulungan sa CMP ay isinasagawa gamit ang bagong openssl-cmp utility, na sumusuporta din sa CRMF format (RFC 4211) at pagpapadala ng mga kahilingan sa pamamagitan ng HTTP/HTTPS (RFC 6712).
  • Ang isang ganap na kliyente para sa HTTP at HTTPS na mga protocol ay ipinatupad, na sumusuporta sa GET at POST na pamamaraan, humiling ng pag-redirect, nagtatrabaho sa pamamagitan ng isang proxy, ASN.1 encoding at timeout processing.
  • Isang bagong EVP_MAC (Message Authentication Code API) ang idinagdag upang gawing mas madaling magdagdag ng mga bagong pagpapatupad ng mga kunwaring pagsingit.
  • Ang isang bagong interface ng software para sa pagbuo ng mga susi ay iminungkahi - EVP_KDF (Key Derivation Function API), na pinapasimple ang pagdaragdag ng mga bagong pagpapatupad ng KDF at PRF. Ang lumang EVP_PKEY API, kung saan available ang scrypt, TLS1 PRF at HKDF algorithm, ay muling idinisenyo sa anyo ng isang layer na ipinatupad sa itaas ng EVP_KDF at EVP_MAC API.
  • Ang pagpapatupad ng TLS protocol ay nagbibigay ng kakayahang gamitin ang TLS client at server na nakapaloob sa Linux kernel para mapabilis ang mga operasyon. Upang paganahin ang pagpapatupad ng TLS na ibinigay ng Linux kernel, dapat mong paganahin ang opsyong "SSL_OP_ENABLE_KTLS" o ang setting na "enable-ktls."
  • Nagdagdag ng suporta para sa mga bagong algorithm:
    • Ang mga key generation algorithm (KDF) ay "SINGLE STEP" at "SSH".
    • Ang mga simulated insertion algorithm (MAC) ay “GMAC” at “KMAC”.
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Algoritmo ng pag-encrypt na "AES-SIV" (RFC-8452).
    • Nagdagdag ng mga tawag sa EVP API na may suporta para sa mga inverse cipher gamit ang AES algorithm para i-encrypt ang mga key (Key Wrap): “AES-128-WRAP-INV”, “AES-192-WRAP-INV”, “AES-256-WRAP- INV” , "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" at "AES-256-WRAP-PAD-INV".
    • Nagdagdag ng suporta para sa mga algorithm ng ciphertext borrowing (CTS) sa EVP API: “AES-128-CBC-CTS”, “AES-192-CBC-CTS”, “AES-256-CBC-CTS”, “CAMELLIA-128-CBC -CTS” ", "CAMELLIA-192-CBC-CTS" at "CAMELLIA-256-CBC-CTS".
    • Nagdagdag ng suporta para sa mga digital na lagda ng CAdES-BES (RFC 5126).
    • Ipinapatupad ng AES_GCM ang parameter na AuthEnvelopedData (RFC 5083) upang paganahin ang pag-encrypt at pag-decryption ng mga mensaheng na-authenticate at na-encrypt gamit ang AES GCM mode.
  • Ang PKCS7_get_octet_string at PKCS7_type_is_other function ay naidagdag sa pampublikong API.
  • Pinapalitan ng PKCS#12 API ang mga default na algorithm na ginamit sa PKCS12_create() function na may PBKDF2 at AES, at ginagamit ang SHA-256 algorithm upang kalkulahin ang MAC. Upang ibalik ang dating gawi, ang opsyong "-legacy" ay ibinigay. Nagdagdag ng malaking bilang ng mga bagong pinalawig na tawag sa PKCS12_*_ex, PKCS5_*_ex at PKCS8_*_ex, gaya ng PKCS12_add_key_ex().PKCS12_create_ex() at PKCS12_decrypt_skey_ex().
  • Para sa platform ng Windows, idinagdag ang suporta para sa pag-synchronize ng thread gamit ang mekanismo ng SRWLock.
  • Nagdagdag ng bagong tracing API, na pinagana sa pamamagitan ng enable-trace parameter.
  • Ang hanay ng mga key na sinusuportahan sa EVP_PKEY_public_check() at EVP_PKEY_param_check() function ay pinalawak: RSA, DSA, ED25519, X25519, ED448 at X448.
  • Ang RAND_DRBG subsystem ay inalis, pinalitan ng EVP_RAND API. Ang mga function na FIPS_mode() at FIPS_mode_set() ay tinanggal.
  • Ang isang mahalagang bahagi ng API ay nai-render na hindi na ginagamit - ang paggamit ng mga hindi na ginagamit na tawag sa code ng proyekto ay magreresulta sa mga babala sa panahon ng pagsasama-sama. Kabilang ang mga mababang antas na API na nauugnay sa ilang partikular na pagpapatupad ng mga algorithm (halimbawa, AES_set_encrypt_key at AES_encrypt) ay opisyal na idineklara na hindi na ginagamit. Ang opisyal na suporta sa OpenSSL 3.0.0 ay ibinibigay lamang ngayon para sa mga high-level na EVP API na nakuha mula sa mga indibidwal na uri ng algorithm (kabilang sa API na ito, halimbawa, ang EVP_EncryptInit_ex, EVP_EncryptUpdate, at EVP_EncryptFinal function). Ang mga hindi na ginagamit na API ay aalisin sa isa sa mga susunod na pangunahing release. Ang mga pagpapatupad ng mga legacy algorithm gaya ng MD2 at DES, na available sa pamamagitan ng EVP API, ay inilipat sa isang hiwalay na "legacy" na module, na hindi pinagana bilang default.
  • Ang dokumentasyon at test suite ay lubos na pinalawak. Kung ikukumpara sa branch 1.1.1, ang dami ng dokumentasyon ay tumaas ng 94%, at ang laki ng test suite code ay tumaas ng 54%.

Pinagmulan: opennet.ru

Magdagdag ng komento