Liberasyon bibliyotèk kriptografik OpenSSL 3.0.0

Apre twa ane nan devlopman ak 19 degaje tès, yo te pibliye bibliyotèk OpenSSL 3.0.0 ak aplikasyon an nan pwotokòl SSL/TLS yo ak divès algoritm chifreman. Nouvo branch lan gen ladann chanjman ki kraze konpatibilite bak nan nivo API ak ABI, men chanjman sa yo pa pral afekte operasyon pifò aplikasyon ki mande yon rekonstriksyon pou emigre soti nan OpenSSL 1.1.1. Branch anvan OpenSSL 1.1.1 yo pral sipòte jiska septanm 2023.

Yon chanjman enpòtan nan nimewo vèsyon an se akòz tranzisyon an nan nimero tradisyonèl "Major.Minor.Patch". Depi koulye a, premye chif (majò) nan nimewo vèsyon an ap chanje sèlman si konpatibilite kase nan nivo API/ABI, epi dezyèm lan (Minè) ap chanje lè fonksyonalite yo ogmante san yo pa chanje API/ABI. Mizajou korektif yo pral delivre ak yon chanjman nan twazyèm chif la (Patch). Nimewo a 3.0.0 imedyatman apre 1.1.1 te chwazi pou fè pou evite sipèpoze ak modil Fip ki an devlopman kounye a pou OpenSSL, pou ki nimero 2.x yo te itilize.

Dezyèm chanjman enpòtan pou pwojè a te tranzisyon soti nan yon lisans doub (OpenSSL ak SSLeay) nan lisans Apache 2.0. Lisans OpenSSL ki te pwopriyetè anvan an te baze sou tèks lisans Apache 1.0 eritaj la epi li te mande pou mansyone eksplisit OpenSSL nan materyèl maketing lè w ap itilize bibliyotèk OpenSSL, ansanm ak yon avi espesyal si OpenSSL te bay kòm yon pati nan pwodwi a. Kondisyon sa yo te fè ansyen lisans lan enkonpatib ak GPL, sa ki fè li difisil pou itilize OpenSSL nan pwojè ki gen lisans GPL. Pou evite enkonpatibilite sa a, pwojè GPL yo te fòse yo sèvi ak akò lisans espesifik kote tèks prensipal GPL la te konplete ak yon kloz ki te pèmèt aplikasyon an klèman lye ak bibliyotèk OpenSSL la epi mansyone ke kondisyon GPL la pa t '. aplike pou konekte ak OpenSSL.

Konpare ak branch OpenSSL 1.1.1 la, OpenSSL 3.0.0 te ajoute plis pase 7500 chanjman 350 devlopè te kontribye. Prensipal inovasyon nan OpenSSL 3.0.0:

  • Yo pwopoze yon nouvo modil Fip, ki gen ladan aplikasyon algoritm kriptografik ki konfòme yo ak estanda sekirite Fip 140-2 (pwosesis sètifikasyon pou modil la pwograme pou kòmanse mwa sa a, epi yo espere sètifikasyon Fip 140-2 ane pwochèn). Nouvo modil la pi fasil pou itilize epi konekte li nan anpil aplikasyon pa pral pi difisil pase chanje dosye konfigirasyon an. Pa default, modil Fip la enfim epi li mande pou opsyon enable-fips la aktive.
  • libcrypto aplike konsèp founisè pluggable, ki ranplase konsèp motè (API ENGINE la te obsolèt). Avèk èd founisè yo, ou ka ajoute pwòp aplikasyon ou nan algoritm pou operasyon tankou chifreman, dechifre, jenerasyon kle, kalkil MAC, kreyasyon ak verifikasyon siyati dijital. Li posib tou de konekte nouvo ak kreye aplikasyon altènatif nan algorithm deja sipòte (pa default, founisè a bati nan OpenSSL yo itilize kounye a pou chak algorithm).
  • Te ajoute sipò pou Pwotokòl Jesyon Sètifika (RFC 4210), ki ka itilize pou mande sètifika nan yon sèvè CA, aktyalizasyon sètifika, ak revoke sètifika. Travay ak CMP fèt lè l sèvi avèk nouvo sèvis piblik openssl-cmp, ki sipòte tou fòma CRMF (RFC 4211) epi voye demann atravè HTTP/HTTPS (RFC 6712).
  • Yo te aplike yon kliyan konplè pou HTTP ak HTTPS pwotokòl yo, sipòte metòd GET ak POST, redireksyon demann, k ap travay atravè yon proxy, kodaj ASN.1 ak pwosesis timeout.
  • Yon nouvo EVP_MAC (Message Authentication Code API) te ajoute pou fè li pi fasil pou ajoute nouvo aplikasyon fok.
  • Yo pwopoze yon nouvo koòdone lojisyèl pou jenere kle - EVP_KDF (Key Derivation Function API), ki senplifye adisyon nouvo aplikasyon KDF ak PRF. Ansyen API EVP_PKEY, ki te genyen algorithm scrypt, TLS1 PRF ak HKDF yo, te reamenaje sou fòm yon kouch aplike sou API EVP_KDF ak EVP_MAC.
  • Aplikasyon pwotokòl TLS la bay kapasite pou itilize kliyan TLS ak sèvè ki te bati nan nwayo Linux la pou akselere operasyon yo. Pou pèmèt aplikasyon TLS ke Kernel Linux bay la, ou dwe aktive opsyon "SSL_OP_ENABLE_KTLS" oswa paramèt "enable-ktls".
  • Te ajoute sipò pou nouvo algoritm:
    • Algoritm jenerasyon kle (KDF) se "SINGLE STEP" ak "SSH".
    • Algoritm ensèsyon simulation (MAC) se "GMAC" ak "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Algorithm chifreman "AES-SIV" (RFC-8452).
    • Te ajoute apèl nan API EVP ak sipò pou chifreman envès lè l sèvi avèk algorithm AES pou ankripte kle (Key Wrap): "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP- INV", "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" ak "AES-256-WRAP-PAD-INV".
    • Te ajoute sipò pou algoritm prete chifreman (CTS) nan API EVP: "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS", "CAMELLIA-128-CBC". -CTS" ", "CAMELLIA-192-CBC-CTS" ak "CAMELLIA-256-CBC-CTS".
    • Te ajoute sipò pou siyati dijital CAdES-BES (RFC 5126).
    • AES_GCM aplike paramèt AuthEnvelopedData (RFC 5083) pou pèmèt chifreman ak dechifre mesaj otantifye ak ankripte lè l sèvi avèk mòd AES GCM.
  • Yo te ajoute fonksyon PKCS7_get_octet_string ak PKCS7_type_is_other nan API piblik la.
  • PKCS#12 API ranplase algorithm default yo itilize nan fonksyon PKCS12_create() ak PBKDF2 ak AES, epi sèvi ak algorithm SHA-256 pou kalkile MAC. Pou retabli konpòtman ki sot pase yo, yo bay opsyon "-eritaj". Te ajoute yon gwo kantite nouvo apèl pwolonje pou PKCS12_*_ex, PKCS5_*_ex ak PKCS8_*_ex, tankou PKCS12_add_key_ex().PKCS12_create_ex() ak PKCS12_decrypt_skey_ex().
  • Pou platfòm Windows la, yo te ajoute sipò pou senkronizasyon fil lè l sèvi avèk mekanis SRWLock la.
  • Te ajoute yon nouvo API trase, ki pèmèt atravè paramèt enable-trace la.
  • Ranje kle yo sipòte nan fonksyon EVP_PKEY_public_check() ak EVP_PKEY_param_check() yo te elaji: RSA, DSA, ED25519, X25519, ED448 ak X448.
  • Yo retire sousistèm RAND_DRBG la, li ranplase pa API EVP_RAND. Fonksyon FIPS_mode() ak FIPS_mode_set() yo te retire.
  • Yon pati enpòtan nan API a te rann demode - lè l sèvi avèk apèl demode nan kòd pwojè a pral lakòz avètisman pandan konpilasyon. Ki gen ladan API ki ba nivo ki mare ak sèten aplikasyon algoritm (pa egzanp, AES_set_encrypt_key ak AES_encrypt) yo te deklare ofisyèlman demode. Sipò ofisyèl nan OpenSSL 3.0.0 kounye a sèlman bay pou API EVP wo nivo ki abstrè de kalite algorithm endividyèl (API sa a gen ladan, pou egzanp, EVP_EncryptInit_ex, EVP_EncryptUpdate, ak EVP_EncryptFinal fonksyon). Yo pral retire API demode yo nan youn nan pwochen gwo lage yo. Enplemantasyon algoritm eritaj tankou MD2 ak DES, ki disponib atravè API EVP, yo te deplase nan yon modil separe "eritaj", ki enfim pa default.
  • Dokimantasyon ak tès tès yo te elaji anpil. Konpare ak branch 1.1.1, volim dokimantasyon an te ogmante pa 94%, ak gwosè kòd suite tès la te ogmante pa 54%.

Sous: opennet.ru

Add nouvo kòmantè