OpenSSL 3.0.0 Kriptografia Biblioteko-Eldono

Post tri jaroj da evoluo kaj 19 testaj eldonoj, la OpenSSL 3.0.0-biblioteko estis publikigita kun la efektivigo de la SSL/TLS-protokoloj kaj diversaj ĉifradaj algoritmoj. La nova branĉo inkluzivas ŝanĝojn, kiuj rompas malantaŭen kongruon ĉe la API kaj ABI-nivelo, sed la ŝanĝoj ne influos la funkciadon de plej multaj aplikaĵoj, kiuj postulas rekonstruon por migri de OpenSSL 1.1.1. La antaŭa branĉo de OpenSSL 1.1.1 estos subtenata ĝis septembro 2023.

Signifa ŝanĝo en la versio-numero ŝuldiĝas al la transiro al la tradicia numerado "Major.Minor.Patch". Ekde nun, la unua cifero (Grava) en la versio-numero ŝanĝiĝos nur se kongruo estas rompita ĉe la API/ABI-nivelo, kaj la dua (Malgranda) ŝanĝiĝos kiam funkcieco pliiĝos sen ŝanĝi la API/ABI. Korektigaj ĝisdatigoj estos liveritaj kun ŝanĝo al la tria cifero (Fikaĵo). La numero 3.0.0 tuj post 1.1.1 estis elektita por eviti interkovrojn kun la nuntempe disvolvata FIPS-modulo por OpenSSL, por kiu la numerado 2.x estis uzata.

La dua grava ŝanĝo por la projekto estis la transiro de duobla permesilo (OpenSSL kaj SSLeay) al la licenco Apache 2.0. La antaŭa proprieta OpenSSL-licenco estis bazita sur la teksto de la heredaĵo Apache 1.0-licenco kaj postulis eksplicitan mencion de OpenSSL en merkatmaterialoj dum uzado de OpenSSL-bibliotekoj, same kiel specialan avizon se OpenSSL estis disponigita kiel parto de la produkto. Tiuj postuloj igis la malnovan permesilon malkongrua kun la GPL, malfaciligante uzi OpenSSL en GPL-licencitaj projektoj. Por eviti ĉi tiun nekongruon, GPL-projektoj estis devigitaj uzi specifajn licencinterkonsentojn en kiuj la ĉefteksto de la GPL estis kompletigita per klaŭzo kiu eksplicite permesis al la aplikaĵo esti ligita kun la OpenSSL-biblioteko kaj menciis ke la postuloj de la GPL ne faris. apliki al ligado kun OpenSSL.

Kompare kun la branĉo OpenSSL 1.1.1, OpenSSL 3.0.0 aldonis pli ol 7500 ŝanĝojn kontribuitajn de 350 programistoj. Ĉefaj novigoj de OpenSSL 3.0.0:

  • Nova modulo FIPS estis proponita, inkluzive de efektivigo de kriptografiaj algoritmoj kiuj konformas al la sekurecnormo FIPS 140-2 (la atestprocezo por la modulo estas planita komenciĝi ĉi-monate, kaj atesto FIPS 140-2 estas atendita venontjare). La nova modulo estas multe pli facile uzebla kaj konekti ĝin al multaj aplikaĵoj ne estos pli malfacila ol ŝanĝi la agordan dosieron. Defaŭlte, la modulo FIPS estas malŝaltita kaj postulas la opcion enable-fips esti ebligita.
  • libcrypto efektivigas la koncepton de ŝtopeblaj provizantoj, kiuj anstataŭigis la koncepton de motoroj (la ENGINE API estis malrekomendita). Kun la helpo de provizantoj, vi povas aldoni viajn proprajn efektivigojn de algoritmoj por tiaj operacioj kiel ĉifrado, deĉifrado, ŝlosilgenerado, MAC-kalkulo, kreado kaj konfirmo de ciferecaj subskriboj. Eblas kaj konekti novajn kaj krei alternativajn efektivigojn de jam subtenataj algoritmoj (defaŭlte, la provizanto konstruita en OpenSSL nun estas uzata por ĉiu algoritmo).
  • Aldonita subteno por la Atestila Administra Protokolo (RFC 4210), kiu povas esti uzata por peti atestojn de CA-servilo, ĝisdatigi atestojn kaj revoki atestojn. Labori kun CMP estas farata uzante la novan ilon openssl-cmp, kiu ankaŭ subtenas la CRMF-formaton (RFC 4211) kaj sendante petojn per HTTP/HTTPS (RFC 6712).
  • Plena kliento por la HTTP kaj HTTPS-protokoloj estis efektivigita, subtenanta la metodojn GET kaj POST, peto-redirektilon, laborante per prokurilo, ASN.1-kodigo kaj pretigo de tempodaŭro.
  • Nova EVP_MAC (Message Authentication Code API) estis aldonita por faciligi aldoni novajn efektivigojn de imitaj enmetoj.
  • Nova programara interfaco por generi ŝlosilojn estas proponita - EVP_KDF (Key Derivation Function API), kiu simpligas la aldonon de novaj efektivigoj de KDF kaj PRF. La malnova EVP_PKEY API, per kiu la scrypt, TLS1 PRF kaj HKDF-algoritmoj estis disponeblaj, estis restrukturita en la formo de tavolo efektivigita aldone al la EVP_KDF kaj EVP_MAC-APIoj.
  • La efektivigo de la TLS-protokolo disponigas la kapablon uzi la TLS-klienton kaj servilon enkonstruitan en la Linukso-kerno por akceli operaciojn. Por ebligi la TLS-efektivigon provizitan de la Linukso-kerno, vi devas ebligi la opcion "SSL_OP_ENABLE_KTLS" aŭ la agordon "enable-ktls".
  • Aldonita subteno por novaj algoritmoj:
    • Ŝlosilgeneraciaj algoritmoj (KDF) estas "UNUA PAŜO" kaj "SSH".
    • Simulitaj enmetagoritmoj (MAC) estas "GMAC" kaj "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Ĉifrada algoritmo "AES-SIV" (RFC-8452).
    • Aldonitaj alvokoj al la EVP API kiu subtenas inversajn ĉifrojn uzante la AES-algoritmon por ŝlosila ĉifrado (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV". " , "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" kaj "AES-256-WRAP-PAD-INV".
    • Aldonita subteno por ĉifrteksta pruntado (CTS) algoritmoj al la EVP API: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC". -CTS" ", "CAMELLIA-192-CBC-CTS" kaj "CAMELLIA-256-CBC-CTS".
    • Aldonita subteno por CAdES-BES ciferecaj subskriboj (RFC 5126).
    • AES_GCM efektivigas la parametron AuthEnvelopedData (RFC 5083) por ebligi ĉifradon kaj malĉifradon de mesaĝoj aŭtentikigitaj kaj ĉifritaj uzante la AES GCM-reĝimon.
  • La funkcioj PKCS7_get_octet_string kaj PKCS7_type_is_other estis aldonitaj al la publika API.
  • La PKCS#12 API anstataŭigas la defaŭltajn algoritmojn uzatajn en la funkcio PKCS12_create() per PBKDF2 kaj AES, kaj uzas la SHA-256-algoritmon por kalkuli MAC. Por restarigi pasintan konduton, la opcio "-heredaĵo" estas provizita. Aldonis grandan nombron da novaj etenditaj vokoj al PKCS12_*_ex, PKCS5_*_ex kaj PKCS8_*_ex, kiel PKCS12_add_key_ex().PKCS12_create_ex() kaj PKCS12_decrypt_skey_ex().
  • Por la Vindoza platformo, subteno por fadensinkronigado per la SRWLock-mekanismo estis aldonita.
  • Aldonis novan spuran API, ebligitan per la parametro enable-trace.
  • La gamo de ŝlosiloj subtenataj en la funkcioj EVP_PKEY_public_check() kaj EVP_PKEY_param_check() estis pligrandigita: RSA, DSA, ED25519, X25519, ED448 kaj X448.
  • La RAND_DRBG-subsistemo estis forigita, anstataŭigita per la EVP_RAND API. La funkcioj FIPS_mode() kaj FIPS_mode_set() estis forigitaj.
  • Signifa parto de la API estis malnoviĝinta - uzi malnoviĝintajn vokojn en projektkodo rezultigos avertojn dum kompilo. Inkluzive de malaltnivelaj API ligitaj al certaj efektivigoj de algoritmoj (ekzemple, AES_set_encrypt_key kaj AES_encrypt) estis oficiale deklaritaj malnoviĝintaj. Oficiala subteno en OpenSSL 3.0.0 nun estas nur provizita por altnivelaj EVP-APIoj kiuj estas abstraktitaj de individuaj algoritmospecoj (ĉi tiu API inkluzivas, ekzemple, la funkciojn EVP_EncryptInit_ex, EVP_EncryptUpdate kaj EVP_EncryptFinal). Malrekomenditaj API-oj estos forigitaj en unu el la venontaj gravaj eldonoj. Efektivigoj de heredaĵalgoritmoj kiel ekzemple MD2 kaj DES, haveblaj tra la EVP API, estis proponitaj al aparta "heredaĵo-" modulo, kiu estas malfunkciigita defaŭlte.
  • La dokumentaro kaj testaro estis signife pligrandigitaj. Kompare kun branĉo 1.1.1, la volumo de dokumentaro pliiĝis je 94%, kaj la grandeco de la testa-kodo pliiĝis je 54%.

fonto: opennet.ru

Aldoni komenton