OpenSSL 3.0.0 Liburutegi kriptografikoaren bertsioa

Hiru urteko garapenaren eta 19 proba-argitalpenaren ondoren, OpenSSL 3.0.0 liburutegia kaleratu zen SSL/TLS protokoloak eta hainbat enkriptazio algoritmoak ezarrita. Adar berriak API eta ABI mailan atzerako bateragarritasuna hausten duten aldaketak biltzen ditu, baina aldaketek ez dute eragingo OpenSSL 1.1.1-tik migratzeko berreraikitzea eskatzen duten aplikazio gehienen funtzionamenduan. OpenSSL 1.1.1-en aurreko adarra 2023ko irailera arte onartuko da.

Bertsio-zenbakiaren aldaketa nabarmena "Major.Minor.Patch" zenbaketa tradizionalaren trantsizioari zor zaio. Hemendik aurrera, bertsio-zenbakiko lehen zifra (Nagusia) aldatuko da API/ABI mailan bateragarritasuna apurtzen bada soilik, eta bigarrena (Txikia) aldatu egingo da funtzionaltasuna handitzen denean API/ABI aldatu gabe. Eguneratze zuzentzaileak hirugarren zifrako aldaketarekin (Adabakia) emango dira. 3.0.0 ondorengo 1.1.1 zenbakia aukeratu zen, gaur egun garatzen ari den OpenSSLrako FIPS moduluarekin gainjartzeak saihesteko, zeinetarako 2.x zenbaketa erabili zen.

Proiekturako bigarren aldaketa garrantzitsua lizentzia bikoitzetik (OpenSSL eta SSLeay) Apache 2.0 lizentziara igarotzea izan zen. OpenSSL jabedun aurreko aurreko lizentzia Apache 1.0 lizentziaren testuan oinarritzen zen eta OpenSSL aipamen esplizitua eskatzen zuen marketin-materialetan OpenSSL liburutegiak erabiltzean, baita produktuaren zati gisa OpenSSL ematen bazen ohar berezi bat ere. Baldintza hauek lizentzia zaharra GPLrekin bateraezina egin zuten, eta, ondorioz, zaila zen OpenSSL erabiltzea GPL lizentziadun proiektuetan. Bateraezintasun hori gainditzeko, GPL proiektuek lizentzia-hitzarmen zehatzak erabiltzera behartu zituzten, zeinetan GPLaren testu nagusia aplikazioa OpenSSL liburutegiarekin espresuki lotzea ahalbidetzen zuen klausula batekin gehitzen zen eta GPLaren eskakizunak ez zirela aipatzen. aplikatu OpenSSL-ekin lotzeko.

OpenSSL 1.1.1 adarrarekin alderatuta, OpenSSL 3.0.0-k 7500 garatzailek egindako 350 aldaketa baino gehiago gehitu ditu. OpenSSL 3.0.0-ren berrikuntza nagusiak:

  • FIPS modulu berri bat proposatu da, besteak beste, FIPS 140-2 segurtasun estandarra betetzen duten algoritmo kriptografikoak ezartzea (moduluaren ziurtapen-prozesua hilabete honetan hastea aurreikusi da, eta FIPS 140-2 ziurtagiria datorren urtean espero da). Modulu berria askoz errazagoa da erabiltzeko eta aplikazio askotara konektatzea ez da zailagoa izango konfigurazio fitxategia aldatzea baino. Lehenespenez, FIPS modulua desgaituta dago eta enable-fips aukera gaituta egotea eskatzen du.
  • libcrypto-k hornitzaile konektagarrien kontzeptua inplementatzen du, eta horrek motorren kontzeptua ordezkatu zuen (ENGINE APIa zaharkituta geratu da). Hornitzaileen laguntzaz, zure algoritmoen inplementazioak gehi ditzakezu enkriptatzea, deszifratzea, gakoak sortzea, MAC kalkulatzea, sinadura digitalak sortzea eta egiaztatzea bezalako eragiketetarako. Berriak konektatu eta dagoeneko onartzen diren algoritmoen inplementazio alternatiboak sortzea posible da (lehenespenez, OpenSSL-n eraikitako hornitzailea erabiltzen da algoritmo bakoitzerako).
  • Ziurtagiriak Kudeatzeko Protokolorako (RFC 4210) euskarria gehitu da, CA zerbitzari bati ziurtagiriak eskatzeko, ziurtagiriak eguneratzeko eta ziurtagiriak baliogabetzeko erabil daitekeen. CMP-rekin lan egiten da openssl-cmp utilitate berria erabiliz, CRMF formatua (RFC 4211) ere onartzen duena eta HTTP/HTTPS bidez (RFC 6712) bidez eskaerak bidaltzea.
  • HTTP eta HTTPS protokoloetarako bezero oso bat ezarri da, GET eta POST metodoak onartzen dituena, eskaeraren birbideratzea, proxy baten bidez, ASN.1 kodeketa eta denbora-muga prozesatzen dituena.
  • EVP_MAC (Message Authentication Code API) berri bat gehitu da txertatze simulatuen inplementazio berriak gehitzea errazteko.
  • Gakoak sortzeko software interfaze berri bat proposatzen da - EVP_KDF (Key Derivation Function API), KDF eta PRF inplementazio berriak gehitzea errazten duena. EVP_PKEY API zaharra, zeinaren bidez scrypt, TLS1 PRF eta HKDF algoritmoak erabilgarri zeuden, EVP_KDF eta EVP_MAC APIen gainean inplementatutako geruza baten moduan birdiseinatu da.
  • TLS protokoloaren ezarpenak Linux nukleoan integratutako TLS bezeroa eta zerbitzaria erabiltzeko aukera ematen du eragiketak bizkortzeko. Linux kernelak eskaintzen duen TLS inplementazioa gaitzeko, "SSL_OP_ENABLE_KTLS" aukera edo "enable-ktls" ezarpena gaitu behar duzu.
  • Algoritmo berrietarako laguntza gehitu da:
    • Gakoak sortzeko algoritmoak (KDF) "URRATS BAKARRA" eta "SSH" dira.
    • Txertatze algoritmo simulatuak (MAC) "GMAC" eta "KMAC" dira.
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • "AES-SIV" enkriptatzeko algoritmoa (RFC-8452).
    • EVP APIari deiak gehitu zaizkio gakoak enkriptatzeko AES algoritmoa erabiliz alderantzizko zifraketak (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP- INV” , "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" eta "AES-256-WRAP-PAD-INV".
    • Testu zifratua hartzeko (CTS) algoritmoetarako laguntza gehitu da EVP APIan: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC". -CTS” ", "CAMELLIA-192-CBC-CTS" eta "CAMELLIA-256-CBC-CTS".
    • CAdES-BES sinadura digitaletarako laguntza gehitu da (RFC 5126).
    • AES_GCM-k AuthEnvelopedData (RFC 5083) parametroa inplementatzen du AES GCM modua erabiliz autentifikatu eta enkriptatutako mezuen enkriptatzea eta deszifratzea gaitzeko.
  • PKCS7_get_octet_string eta PKCS7_type_is_other funtzioak API publikora gehitu dira.
  • PKCS#12 APIak PKCS12_create() funtzioan erabiltzen diren algoritmo lehenetsiak PBKDF2 eta AESekin ordezkatzen ditu, eta SHA-256 algoritmoa erabiltzen du MAC kalkulatzeko. Iraganeko portaera berreskuratzeko, "-legacy" aukera eskaintzen da. Dei hedatu berri ugari gehitu dira PKCS12_*_ex, PKCS5_*_ex eta PKCS8_*_ex, hala nola PKCS12_add_key_ex().PKCS12_create_ex() eta PKCS12_decrypt_skey_ex().
  • Windows plataformarako, SRWLock mekanismoa erabiliz haria sinkronizatzeko laguntza gehitu da.
  • Trazamendu API berri bat gehitu da, enable-trace parametroaren bidez gaituta.
  • EVP_PKEY_public_check() eta EVP_PKEY_param_check() funtzioetan onartzen diren gakoen sorta zabaldu egin da: RSA, DSA, ED25519, X25519, ED448 eta X448.
  • RAND_DRBG azpisistema kendu da, eta EVP_RAND APIarekin ordezkatu da. FIPS_mode() eta FIPS_mode_set() funtzioak kendu dira.
  • APIaren zati esanguratsu bat zaharkituta geratu da - proiektuaren kodean zaharkitutako deiak erabiltzeak abisuak eragingo ditu konpilatzean. Algoritmoen inplementazio batzuei (adibidez, AES_set_encrypt_key eta AES_encrypt) loturiko maila baxuko APIak barne hartzea ofizialki zaharkituta geratu da. OpenSSL 3.0.0-n euskarri ofiziala algoritmo-motetatik ateratzen diren maila altuko EVP APIetarako soilik eskaintzen da (API honek, adibidez, EVP_EncryptInit_ex, EVP_EncryptUpdate eta EVP_EncryptFinal funtzioak barne hartzen ditu). Zaharkitutako APIak hurrengo bertsio nagusietako batean kenduko dira. EVP APIaren bidez eskuragarri dauden MD2 eta DES bezalako algoritmo oinordekoen inplementazioak "oinarrizko" modulu batera eraman dira, lehenespenez desgaituta dagoena.
  • Dokumentazioa eta proba multzoa nabarmen zabaldu dira. 1.1.1 adarrarekin alderatuta, dokumentazioaren bolumena % 94 handitu da, eta proba-multzoaren kodearen tamaina % 54.

Iturria: opennet.ru

Gehitu iruzkin berria