Rilaxx tal-librerija kriptografika OpenSSL 3.0.0

Wara tliet snin ta 'żvilupp u 19-il rilaxx tat-test, il-librerija OpenSSL 3.0.0 ġiet rilaxxata bl-implimentazzjoni tal-protokolli SSL/TLS u diversi algoritmi ta' encryption. Il-fergħa l-ġdida tinkludi bidliet li jkissru l-kompatibilità b'lura fil-livell tal-API u tal-ABI, iżda l-bidliet mhux se jaffettwaw l-operat tal-biċċa l-kbira tal-applikazzjonijiet li jeħtieġu bini mill-ġdid biex jemigraw minn OpenSSL 1.1.1. Il-fergħa preċedenti ta' OpenSSL 1.1.1 se tkun appoġġjata sa Settembru 2023.

Bidla sinifikanti fin-numru tal-verżjoni hija dovuta għat-tranżizzjoni għan-numerazzjoni tradizzjonali "Major.Minor.Patch". Minn issa 'l quddiem, l-ewwel ċifra (Maġġuri) fin-numru tal-verżjoni tinbidel biss jekk il-kompatibilità tinkiser fil-livell API/ABI, u t-tieni (Minuri) tinbidel meta tiżdied il-funzjonalità mingħajr ma tinbidel l-API/ABI. Aġġornamenti korrettivi se jingħataw b'bidla fit-tielet ċifra (Garża). In-numru 3.0.0 immedjatament wara 1.1.1 intgħażel biex jiġu evitati duplikazzjonijiet mal-modulu FIPS li bħalissa qed jiġi żviluppat għal OpenSSL, li għalih intużat in-numerazzjoni 2.x.

It-tieni bidla importanti għall-proġett kienet it-tranżizzjoni minn liċenzja doppja (OpenSSL u SSLeay) għal-liċenzja Apache 2.0. Il-liċenzja proprjetarja preċedenti ta' OpenSSL kienet ibbażata fuq it-test tal-liċenzja 1.0 tal-legat Apache u kienet teħtieġ semmija espliċita ta' OpenSSL fil-materjali tal-kummerċjalizzazzjoni meta jintużaw libreriji OpenSSL, kif ukoll avviż speċjali jekk OpenSSL kien ipprovdut bħala parti mill-prodott. Dawn ir-rekwiżiti għamlu l-liċenzja l-antika inkompatibbli mal-GPL, u jagħmluha diffiċli biex tuża OpenSSL fi proġetti liċenzjati mill-GPL. Biex jaqilbu din l-inkompatibbiltà, il-proġetti tal-GPL kienu sfurzati jużaw ftehimiet ta’ liċenzja speċifiċi li fihom it-test ewlieni tal-GPL kien issupplimentat bi klawżola li ppermettiet espliċitament li l-applikazzjoni tkun marbuta mal-librerija OpenSSL u semmew li r-rekwiżiti tal-GPL ma kinux japplikaw għall-konnessjoni ma' OpenSSL.

Meta mqabbel mal-fergħa OpenSSL 1.1.1, OpenSSL 3.0.0 żied aktar minn 7500 bidla kkontribwit minn 350 żviluppatur. Innovazzjonijiet ewlenin ta' OpenSSL 3.0.0:

  • Ġie propost modulu FIPS ġdid, inkluża l-implimentazzjoni ta 'algoritmi kriptografiċi li jikkonformaw mal-istandard tas-sigurtà FIPS 140-2 (il-proċess ta' ċertifikazzjoni għall-modulu huwa skedat li jibda dan ix-xahar, u ċ-ċertifikazzjoni FIPS 140-2 hija mistennija s-sena d-dieħla). Il-modulu l-ġdid huwa ħafna aktar faċli biex jintuża u l-konnessjoni ma 'ħafna applikazzjonijiet mhux se tkun aktar diffiċli milli tbiddel il-fajl tal-konfigurazzjoni. B'mod awtomatiku, il-modulu FIPS huwa diżattivat u jeħtieġ li l-għażla enable-fips tkun attivata.
  • libcrypto timplimenta l-kunċett ta' fornituri li jistgħu jiġu pplaggjati, li ssostitwixxa l-kunċett ta' magni (l-API ENGINE ġiet deprecata). Bl-għajnuna tal-fornituri, tista 'żżid l-implimentazzjonijiet tiegħek ta' algoritmi għal operazzjonijiet bħal encryption, decryption, ġenerazzjoni taċ-ċavetta, kalkolu MAC, ħolqien u verifika ta 'firem diġitali. Huwa possibbli kemm li tgħaqqad oħrajn ġodda kif ukoll toħloq implimentazzjonijiet alternattivi ta 'algoritmi diġà appoġġjati (b'mod awtomatiku, il-fornitur mibni f'OpenSSL issa jintuża għal kull algoritmu).
  • Appoġġ miżjud għall-Protokoll tal-Ġestjoni taċ-Ċertifikati (RFC 4210), li jista 'jintuża biex jitlob ċertifikati minn server CA, jaġġorna ċertifikati, u jirrevoka ċertifikati. Il-ħidma ma 'CMP titwettaq bl-użu tal-utilità l-ġdida openssl-cmp, li tappoġġja wkoll il-format CRMF (RFC 4211) u tibgħat talbiet permezz HTTP/HTTPS (RFC 6712).
  • Ġie implimentat klijent sħiħ għall-protokolli HTTP u HTTPS, li jappoġġa l-metodi GET u POST, indirizzar mill-ġdid talba, jaħdem permezz ta 'prokura, kodifikazzjoni ASN.1 u proċessar ta' timeout.
  • Ġie miżjud EVP_MAC (Message Authentication Code API) ġdid biex jagħmilha aktar faċli biex jiżdiedu implimentazzjonijiet ġodda ta 'inserzjonijiet finta.
  • Huwa propost interface tas-softwer ġdid għall-ġenerazzjoni taċ-ċwievet - EVP_KDF (Key Derivation Function API), li tissimplifika ż-żieda ta 'implimentazzjonijiet ġodda ta' KDF u PRF. L-API EVP_PKEY l-antika, li permezz tagħha l-algoritmi scrypt, TLS1 PRF u HKDF kienu disponibbli, ġiet iddisinjata mill-ġdid fil-forma ta 'saff implimentat fuq l-APIs EVP_KDF u EVP_MAC.
  • L-implimentazzjoni tal-protokoll TLS tipprovdi l-abbiltà li tuża l-klijent TLS u s-server mibnija fil-kernel tal-Linux biex tħaffef l-operazzjonijiet. Biex tippermetti l-implimentazzjoni TLS ipprovduta mill-kernel Linux, trid tattiva l-għażla "SSL_OP_ENABLE_KTLS" jew l-issettjar "enable-ktls".
  • Appoġġ miżjud għal algoritmi ġodda:
    • L-algoritmi tal-ġenerazzjoni ewlenin (KDF) huma "SINGLE STEP" u "SSH".
    • Algoritmi ta' inserzjoni simulati (MAC) huma "GMAC" u "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Algoritmu tal-kriptaġġ "AES-SIV" (RFC-8452).
    • Sejħiet miżjuda mal-API EVP li jappoġġjaw ċifraturi inversi li jużaw l-algoritmu AES biex jikkriptaw ċwievet (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV ” , "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" u "AES-256-WRAP-PAD-INV".
    • Appoġġ miżjud għal algoritmi ta' self ta' ċiphertext (CTS) għall-API EVP: “AES-128-CBC-CTS”, “AES-192-CBC-CTS”, “AES-256-CBC-CTS”, “CAMELLIA-128-CBC -CTS” ", "CAMELLIA-192-CBC-CTS" u "CAMELLIA-256-CBC-CTS".
    • Appoġġ miżjud għall-firem diġitali CAdES-BES (RFC 5126).
    • AES_GCM jimplimenta l-parametru AuthEnvelopedData (RFC 5083) biex jippermetti encryption u decryption ta 'messaġġi awtentikati u encrypted bl-użu tal-mod AES GCM.
  • Il-funzjonijiet PKCS7_get_octet_string u PKCS7_type_is_other ġew miżjuda mal-API pubbliku.
  • L-API PKCS#12 jissostitwixxi l-algoritmi default użati fil-funzjoni PKCS12_create() b'PBKDF2 u AES, u juża l-algoritmu SHA-256 biex jikkalkula l-MAC. Biex tiġi restawrata l-imġieba tal-passat, hija pprovduta l-għażla "-legacy". Żieda numru kbir ta 'sejħiet estiżi ġodda għal PKCS12_*_ex, PKCS5_*_ex u PKCS8_*_ex, bħal PKCS12_add_key_ex().PKCS12_create_ex() u PKCS12_decrypt_skey_ex().
  • Għall-pjattaforma tal-Windows, ġie miżjud appoġġ għas-sinkronizzazzjoni tal-ħajt bl-użu tal-mekkaniżmu SRWLock.
  • Żieda API ta' traċċar ġdida, attivata permezz tal-parametru enable-trace.
  • Il-firxa ta 'ċwievet appoġġjati fil-funzjonijiet EVP_PKEY_public_check() u EVP_PKEY_param_check() ġiet estiża: RSA, DSA, ED25519, X25519, ED448 u X448.
  • Is-subsistema RAND_DRBG tneħħiet, sostitwita bl-API EVP_RAND. Il-funzjonijiet FIPS_mode() u FIPS_mode_set() tneħħew.
  • Parti sinifikanti tal-API saret skaduta - l-użu ta' sejħiet skaduti fil-kodiċi tal-proġett jirriżulta fi twissijiet waqt il-kumpilazzjoni. Inklużi APIs ta' livell baxx marbuta ma' ċerti implimentazzjonijiet ta' algoritmi (pereżempju, AES_set_encrypt_key u AES_encrypt) ġew uffiċjalment iddikjarati skaduti. L-appoġġ uffiċjali f'OpenSSL 3.0.0 issa huwa pprovdut biss għal APIs EVP ta' livell għoli li huma estratti minn tipi ta' algoritmi individwali (din l-API tinkludi, pereżempju, il-funzjonijiet EVP_EncryptInit_ex, EVP_EncryptUpdate, u EVP_EncryptFinal). APIs deprecati se jitneħħew f'waħda mir-rilaxxi ewlenin li jmiss. Implimentazzjonijiet ta 'algoritmi legacy bħal MD2 u DES, disponibbli permezz tal-API EVP, ġew imċaqalqa għal modulu "legacy" separat, li huwa diżattivat awtomatikament.
  • Id-dokumentazzjoni u t-test suite ġew estiżi b'mod sinifikanti. Meta mqabbel mal-fergħa 1.1.1, il-volum tad-dokumentazzjoni żdied b'94%, u d-daqs tal-kodiċi tas-suite tat-test żdied b'54%.

Sors: opennet.ru

Żid kumment