Toleo la Maktaba ya Crystalgraphic ya OpenSSL 3.0.0

Baada ya miaka mitatu ya maendeleo na matoleo 19 ya majaribio, maktaba ya OpenSSL 3.0.0 ilitolewa kwa utekelezaji wa itifaki za SSL/TLS na algoriti mbalimbali za usimbaji fiche. Tawi jipya linajumuisha mabadiliko ambayo yanavunja uoanifu wa kurudi nyuma katika kiwango cha API na ABI, lakini mabadiliko hayataathiri utendakazi wa programu nyingi zinazohitaji uundaji upya ili kuhama kutoka OpenSSL 1.1.1. Tawi la awali la OpenSSL 1.1.1 litatumika hadi Septemba 2023.

Mabadiliko makubwa katika nambari ya toleo yanatokana na mpito hadi kwa nambari za jadi za "Major.Minor.Patch". Kuanzia sasa na kuendelea, tarakimu ya kwanza (Kubwa) katika nambari ya toleo itabadilika tu ikiwa uoanifu umevunjwa katika kiwango cha API/ABI, na ya pili (Ndogo) itabadilika wakati utendakazi umeongezeka bila kubadilisha API/ABI. Masasisho ya kusahihisha yatawasilishwa kwa kubadilisha tarakimu ya tatu (Kiraka). Nambari 3.0.0 mara tu baada ya 1.1.1 ilichaguliwa ili kuepuka mwingiliano na moduli ya FIPS inayoendelezwa kwa sasa ya OpenSSL, ambayo nambari 2.x ilitumiwa.

Mabadiliko ya pili muhimu kwa mradi yalikuwa mabadiliko kutoka kwa leseni mbili (OpenSSL na SSLeay) hadi leseni ya Apache 2.0. Leseni ya awali ya wamiliki wa OpenSSL ilitokana na maandishi ya leseni ya awali ya Apache 1.0 na ilihitaji kutajwa wazi kwa OpenSSL katika nyenzo za uuzaji wakati wa kutumia maktaba za OpenSSL, pamoja na notisi maalum ikiwa OpenSSL ilitolewa kama sehemu ya bidhaa. Masharti haya yalifanya leseni ya zamani isioanishwe na GPL, hivyo kufanya iwe vigumu kutumia OpenSSL katika miradi iliyoidhinishwa na GPL. Ili kukabiliana na hali hii ya kutopatana, miradi ya GPL ililazimika kutumia mikataba maalum ya leseni ambapo maandishi makuu ya GPL yaliongezwa kwa kifungu ambacho kiliruhusu maombi kuunganishwa na maktaba ya OpenSSL na kutaja kuwa mahitaji ya GPL kuomba kuunganishwa na OpenSSL.

Ikilinganishwa na tawi la OpenSSL 1.1.1, OpenSSL 3.0.0 iliongeza zaidi ya mabadiliko 7500 yaliyochangiwa na wasanidi 350. Ubunifu kuu wa OpenSSL 3.0.0:

  • Moduli mpya ya FIPS imependekezwa, ikiwa ni pamoja na utekelezaji wa algoriti za kriptografia ambazo zinatii kiwango cha usalama cha FIPS 140-2 (mchakato wa uidhinishaji wa moduli umepangwa kuanza mwezi huu, na uthibitishaji wa FIPS 140-2 unatarajiwa mwaka ujao). Moduli mpya ni rahisi zaidi kutumia na kuiunganisha kwa programu nyingi haitakuwa ngumu zaidi kuliko kubadilisha faili ya usanidi. Kwa chaguo-msingi, moduli ya FIPS imezimwa na inahitaji chaguo la kuwezesha-fips kuwashwa.
  • libcrypto inatekeleza dhana ya watoa huduma wanaoweza kuzimika, ambayo ilibadilisha dhana ya injini (API ya ENGINE imeacha kutumika). Kwa usaidizi wa watoa huduma, unaweza kuongeza utekelezaji wako mwenyewe wa algoriti kwa shughuli kama vile usimbaji fiche, usimbuaji, uundaji wa ufunguo, hesabu ya MAC, uundaji na uthibitishaji wa sahihi za dijitali. Inawezekana kuunganisha mpya na kuunda utekelezaji mbadala wa algoriti ambazo tayari zimetumika (kwa chaguo-msingi, mtoa huduma aliyejumuishwa katika OpenSSL sasa hutumiwa kwa kila algoriti).
  • Umeongeza uwezo wa kutumia Itifaki ya Usimamizi wa Cheti (RFC 4210), ambayo inaweza kutumika kuomba vyeti kutoka kwa seva ya CA, kusasisha vyeti na kubatilisha vyeti. Kufanya kazi na CMP hufanywa kwa kutumia matumizi mapya ya openssl-cmp, ambayo pia inasaidia umbizo la CRMF (RFC 4211) na kutuma maombi kupitia HTTP/HTTPS (RFC 6712).
  • Mteja kamili wa itifaki za HTTP na HTTPS imetekelezwa, ikisaidia mbinu za GET na POST, kuomba kuelekeza kwingine, kufanya kazi kupitia proksi, usimbaji wa ASN.1 na uchakataji wa muda kuisha.
  • EVP_MAC mpya (API ya Msimbo wa Uthibitishaji wa Ujumbe) imeongezwa ili kurahisisha kuongeza utekelezaji mpya wa uwekaji dhihaka.
  • Kiolesura kipya cha programu kwa ajili ya kutengeneza funguo kinapendekezwa - EVP_KDF (API ya Utoaji Muhimu wa Kazi), ambayo hurahisisha uongezaji wa utekelezaji mpya wa KDF na PRF. API ya zamani ya EVP_PKEY, ambapo algoriti za scrypt, TLS1 PRF na HKDF zilipatikana, imeundwa upya katika mfumo wa safu inayotekelezwa juu ya EVP_KDF na EVP_MAC API.
  • Utekelezaji wa itifaki ya TLS hutoa uwezo wa kutumia mteja wa TLS na seva iliyojengwa kwenye kernel ya Linux ili kuharakisha shughuli. Ili kuwezesha utekelezaji wa TLS uliotolewa na kinu cha Linux, lazima uwashe chaguo la "SSL_OP_ENABLE_KTLS" au mpangilio wa "enable-ktls".
  • Usaidizi ulioongezwa kwa algoriti mpya:
    • Kanuni za uundaji muhimu (KDF) ni "HATUA MOJA" na "SSH".
    • Kanuni za uwekaji zilizoigwa (MAC) ni "GMAC" na "KMAC".
    • RSA Key Encapsulation Algorithm (KEM) "RSASVE".
    • Algorithm ya usimbaji fiche "AES-SIV" (RFC-8452).
    • Simu zilizoongezwa kwa API ya EVP inayotumia herufi kinyume kwa kutumia algoriti ya AES kusimba funguo (Ufungaji wa Ufunguo): β€œAES-128-WRAP-INV”, β€œAES-192-WRAP-INV”, β€œAES-256-WRAP-INV ” , "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" na "AES-256-WRAP-PAD-INV".
    • Umeongeza usaidizi wa algoriti za ukopaji wa maandishi ya siri (CTS) kwenye API ya EVP: β€œAES-128-CBC-CTS”, β€œAES-192-CBC-CTS”, β€œAES-256-CBC-CTS”, β€œCAMELLIA-128-CBC -CTS” ", "CAMELLIA-192-CBC-CTS" na "CAMELLIA-256-CBC-CTS".
    • Usaidizi umeongezwa kwa sahihi za dijitali za CAdES-BES (RFC 5126).
    • AES_GCM hutekeleza kigezo cha AuthEnvelopedData (RFC 5083) ili kuwezesha usimbaji fiche na usimbuaji wa ujumbe ulioidhinishwa na kusimbwa kwa njia fiche kwa kutumia modi ya AES GCM.
  • PKCS7_get_octet_string na PKCS7_type_is_nyingine za kukokotoa zimeongezwa kwenye API ya umma.
  • API ya PKCS#12 inachukua nafasi ya algoriti chaguo-msingi inayotumika katika chaguo-msingi za PKCS12_create() na PBKDF2 na AES, na hutumia algoriti ya SHA-256 kukokotoa MAC. Ili kurejesha tabia ya zamani, chaguo "-legacy" hutolewa. Imeongeza idadi kubwa ya simu mpya zilizopanuliwa kwa PKCS12_*_ex, PKCS5_*_ex na PKCS8_*_ex, kama vile PKCS12_add_key_ex().PKCS12_create_ex() na PKCS12_decrypt_skey_ex().
  • Kwa jukwaa la Windows, usaidizi wa ulandanishi wa nyuzi kwa kutumia utaratibu wa SRWLock umeongezwa.
  • Imeongeza API mpya ya ufuatiliaji, iliyowezeshwa kupitia kigezo cha kuwezesha ufuatiliaji.
  • Masafa ya funguo zinazotumika katika vipengele vya EVP_PKEY_public_check() na EVP_PKEY_param_check() vimepanuliwa: RSA, DSA, ED25519, X25519, ED448 na X448.
  • Mfumo mdogo wa RAND_DRBG umeondolewa, na nafasi yake kuchukuliwa na EVP_RAND API. Vitendaji vya FIPS_mode() na FIPS_mode_set() vimeondolewa.
  • Sehemu kubwa ya API imefanywa kuwa ya kizamani - kutumia simu ambazo hazitumiki katika msimbo wa mradi kutasababisha maonyo wakati wa ujumuishaji. Ikiwa ni pamoja na API za kiwango cha chini zinazohusiana na utekelezaji fulani wa algoriti (kwa mfano, AES_set_encrypt_key na AES_encrypt) zimetangazwa kuwa hazitumiki. Usaidizi rasmi katika OpenSSL 3.0.0 sasa unatolewa tu kwa API za kiwango cha juu za EVP ambazo zimetolewa kutoka kwa aina mahususi za algoriti (API hii inajumuisha, kwa mfano, EVP_EncryptInit_ex, EVP_EncryptUpdate, na EVP_EncryptFinal vitendaji). API zilizoacha kutumika zitaondolewa katika mojawapo ya matoleo makuu yanayofuata. Utekelezaji wa algoriti za zamani kama vile MD2 na DES, zinazopatikana kupitia API ya EVP, zimehamishwa hadi sehemu tofauti ya "urithi", ambayo imezimwa kwa chaguomsingi.
  • Nyaraka na safu ya majaribio imepanuliwa kwa kiasi kikubwa. Ikilinganishwa na tawi 1.1.1, kiasi cha nyaraka kimeongezeka kwa 94%, na ukubwa wa msimbo wa mtihani umeongezeka kwa 54%.

Chanzo: opennet.ru

Kuongeza maoni