Megjelent az OpenSSL 3.0.0 kriptográfiai könyvtár

Három év fejlesztés és 19 tesztkiadás után megérkezett az OpenSSL 3.0.0 könyvtárának végleges kiadása, amely az SSL/TLS protokollok és különböző titkosítási algoritmusok megvalósítását tartalmazza. Az új ágon olyan változások következnek be, amelyek megsértik az API és ABI visszafelé kompatibilitását, de ezek a változások a legtöbb alkalmazás működésére nem lesznek hatással, amelyek átállítása az OpenSSL 1.1.1-ről elegendő a fordítás újbóli elkészítése. Az OpenSSL 1.1.1 korábbi ága támogatva lesz 2023 szeptemberéig.

A jelentős verziószámváltozás a hagyományos "Major.Minor.Patch" számozásra való áttéréssel kapcsolatos. A verziószámban az első szám (Major) mostantól csak az API/ABI szintű kompatibilitás megsértésekor változik, a második szám (Minor) pedig a funkcionalitás bővülése során, anélkül, hogy az API/ABI változna. A javító frissítések a harmadik szám (Patch) megváltoztatásával kerülnek kiadásra. A 3.0.0 verziót közvetlenül az 1.1.1 után választották, hogy elkerüljék az OpenSSL-hez fejlesztés alatt álló FIPS-modul összefonódását, amely a 2.x számozást használta.

A projekt szempontjából fontos második változás a dupla licencről (OpenSSL és SSLeay) az Apache 2.0 licencre való áttérés. A korábban alkalmazott OpenSSL saját licencének alapja a már elavult Apache 1.0 licenc szövege volt, és megkövetelte az OpenSSL explícit említését a reklámanyagokban az OpenSSL könyvtárak felhasználása esetén, valamint külön megjegyzés hozzáadását, ha az OpenSSL-t egy termék részeként szállítják. Az ilyen követelmények miatt a régi licenc összeegyeztethetetlenné tette a GPL-lel, ami nehézségeket okozott az OpenSSL GPL licenccel rendelkező projektekben történő használatánál. A GPL-akkal való ilyen összeegyeztethetetlenség elkerülésével a GPL-projekteknek speciális licencszerződéseket kellett alkalmazniuk, amelyekben a GPL fő szövegét kiegészítették egy ponttal, amely egyértelműen lehetővé tette az alkalmazás OpenSSL könyvtárral való összekapcsolását, és említette, hogy a GPL követelményei nem vonatkoznak az OpenSSL-lel való összekapcsolásra.

Az OpenSSL 1.1.1-hez képest az OpenSSL 3.0.0 több mint 7500 módosítást tartalmaz, amelyeket 350 fejlesztő készített. Az OpenSSL 3.0.0 főbb újdonságai:

  • Új FIPS modul került javaslatra, amely a FIPS 140-2 biztonsági szabványnak megfelelő kriptográfiai algoritmusok megvalósítását tartalmazza (a modul tanúsítási folyamatát a hónapban tervezik megkezdeni, a FIPS 140-2 tanúsítvány megszerzése a következő évre várható). Az új modul jelentősen könnyebb használni, és a sok alkalmazáshoz való csatlakoztatása nem bonyolultabb, mint a konfigurációs fájl módosítása. Alapértelmezés szerint a FIPS modul ki van kapcsolva, és az enable-fips opció megadását igényli a aktiváláshoz.
  • A libcrypto a csatlakoztatható szolgáltatók koncepcióját valósította meg, amely a motorok (ENGINE API) koncepcióját váltja fel (a ENGINE API elavultnak számít). A szolgáltatók segítségével saját algoritmusok megvalósításait lehet hozzáadni olyan műveletekhez, mint az titkosítás, visszafejtés, kulcsok generálása, MAC számítása, digitális aláírások létrehozása és ellenőrzése. Új szolgáltatók csatlakoztatása és már támogatott algoritmusok alternatív megvalósításainak létrehozása is lehetséges (alapértelmezés szerint most minden algoritmushoz az OpenSSL beépített szolgáltatója használatos).
  • Hozzáadva a CMP (Certificate Management Protocol, RFC 4210) tanúsítványkezelési protokoll támogatása, amely kérhető tanúsítványok igénylésére szolgál a szerver hitelesítésszolgáltatótól, tanúsítványok frissítésére és visszavonására. A CMP-vel való munka az új openssl-cmp segédeszköz segítségével történik, amely a CRMF (RFC 4211) formátum és a HTTP/HTTPS (RFC 6712) protokollokon keresztüli kérésátvitel támogatását is megvalósítja.
  • Teljes funkcionalitású kliens lett megvalósítva HTTP és HTTPS protokollokhoz, amely támogatja a GET és POST metódusokat, a kérések átirányítását, proxy-n keresztüli működést, ASN.1 kódolást és időkorlátok kezelését.
  • Új EVP_MAC (Message Authentication Code API) API került hozzáadásra, amely megkönnyíti az új imitosztások megvalósítását.
  • Új kulcsformáló interfész került javaslatra — EVP_KDF (Key Derivation Function API), amely megkönnyíti az új KDF és PRF megvalósítások hozzáadását. A régi API EVP_PKEY, amelyen keresztül az scrypt, TLS1 PRF és HKDF algoritmusok elérhetők voltak, mostanra átalakításra került, és egy réteges megvalósítás formájában valósult meg az EVP_KDF és EVP_MAC API-k felett.
  • A TLS protokoll megvalósításában lehetőséget biztosítottak a Linux kernelbe beépített TLS kliens és szerver használatára az operációk gyorsításához. A Linux kernel által biztosított TLS megvalósítás aktiválásához az 'SSL_OP_ENABLE_KTLS' opció engedélyezésére vagy az 'enable-ktls' beállításra van szükség.
  • Új algoritmusok támogatása került hozzáadásra:
    • A kulccsere-alkalmazások algoritmusai (KDF) — „SINGLE STEP” és „SSH”.
    • Az imitosztók algoritmusai (MAC) — „GMAC” és „KMAC”.
    • Az RSA kulcsbeágyazási algoritmus (KEM) „RSASVE”.
    • A titkosító algoritmus „AES-SIV” (RFC-8452).
    • Az EVP API-hoz hozzáadódott az AES algoritmust használó inverz titkosítási hívások támogatása, a következőkkel: „AES-128-WRAP-INV”, „AES-192-WRAP-INV”, „AES-256-WRAP-INV”, „AES-128-WRAP-PAD-INV”, „AES-192-WRAP-PAD-INV” és „AES-256-WRAP-PAD-INV”.
    • Az EVP API-hoz hozzáadódott a titkosított szöveg kölcsönzésének algoritmusainak (CTS) támogatása: „AES-128-CBC-CTS”, „AES-192-CBC-CTS”, „AES-256-CBC-CTS”, „CAMELLIA-128-CBC-CTS”, „CAMELLIA-192-CBC-CTS” és „CAMELLIA-256-CBC-CTS”.
    • Hozzáadva a CAdES-BES digitális aláírások támogatása (RFC 5126).
    • Az AES_GCM-ben megvalósult az AuthEnvelopedData paraméter (RFC 5083), amely lehetővé teszi az AES GCM mód használatával titkosított és hitelesített üzenetek titkosítását és visszafejtését.
  • A nyilvános API-ba áthelyezve a PKCS7_get_octet_string és PKCS7_type_is_other funkciók.
  • A PKCS#12 API-ba az alapértelmezett algoritmusok, amelyeket a PKCS12_create() funkció használ, PBKDF2 és AES algoritmusokra cserélődtek, míg a MAC kiszámításához a SHA-256 algoritmus került alkalmazásra. A korábbi működés helyreállítására a „-legacy” opció lett bevezetve. Nagy számú új kiterjesztett hívás került hozzáadásra, mint például PKCS12_add_key_ex(), PKCS12_create_ex() és PKCS12_decrypt_skey_ex().
  • Windows platformra hozzáadva a szálak szinkronizálásának támogatása SRWLock mechanizmus segítségével.
  • Új API került hozzáadásra a nyomkövetéshez, amelyet az enable-trace paraméter aktiválásával lehet bekapcsolni.
  • Bővült a EVP_PKEY_public_check() és EVP_PKEY_param_check() funkciók által támogatott kulcsok köre: RSA, DSA, ED25519, X25519, ED448 és X448.
  • A RAND_DRBG alrendszert eltávolították, helyette az EVP_RAND API javasolt. Eltávolították a FIPS_mode() és FIPS_mode_set() funkciókat.
  • Az API jelentős része elavult státuszba került – az elavult hívások használata a projektek kódjában figyelmeztetéseket fog eredményezni a fordítás során. Ezen belül elavultnak tekintették a bizonyos algoritmusok megvalósításához kötődő alacsony szintű API-kat (például AES_set_encrypt_key és AES_encrypt). Az OpenSSL 3.0.0-ban mostantól csak a magas szintű EVP API-k kapnak hivatalos támogatást, amelyek elvonatkoztatnak a különböző algoritmus típusoktól (ebbe az API-ba tartozik például az EVP_EncryptInit_ex, EVP_EncryptUpdate és EVP_EncryptFinal funkciók). Az elkövetkező jelentős kiadások egyikében az elavult API-k törlésre kerülnek. Az EVP API-n keresztül elérhető elavult algoritmusok, mint például MD2 és DES, külön „legacy” modulba lettek áttelepítve, amely alapértelmezetten ki van kapcsolva.
  • Jelentősen kibővült a dokumentáció és a tesztkészlet. Az 1.1.1-es ággal összehasonlítva a dokumentáció terjedelme 94%-kal, míg a tesztkészlet kódmérete 54%-kal nőtt.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster