OpenSSL 3.0.0 Rhyddhau Llyfrgell Cryptograffig

Ar ôl tair blynedd o ddatblygiad a 19 datganiad prawf, rhyddhawyd llyfrgell OpenSSL 3.0.0 gyda gweithrediad y protocolau SSL / TLS ac amrywiol algorithmau amgryptio. Mae'r gangen newydd yn cynnwys newidiadau sy'n torri cydnawsedd yn ôl ar lefel API ac ABI, ond ni fydd y newidiadau'n effeithio ar weithrediad y mwyafrif o gymwysiadau sydd angen eu hailadeiladu i fudo o OpenSSL 1.1.1. Bydd cangen flaenorol OpenSSL 1.1.1 yn cael ei chefnogi tan fis Medi 2023.

Mae newid sylweddol yn rhif y fersiwn o ganlyniad i'r newid i'r rhifo traddodiadol “Major.Minor.Patch”. O hyn ymlaen, bydd y digid cyntaf (Mawr) yn rhif y fersiwn yn newid dim ond os bydd cydnawsedd yn cael ei dorri ar lefel API / ABI, a bydd yr ail (Mân) yn newid pan fydd ymarferoldeb yn cynyddu heb newid yr API / ABI. Bydd diweddariadau cywirol yn cael eu cyflwyno gyda newid i'r trydydd digid (Patch). Dewiswyd y rhif 3.0.0 yn union ar ôl 1.1.1 er mwyn osgoi gorgyffwrdd â'r modiwl FIPS sy'n cael ei ddatblygu ar hyn o bryd ar gyfer OpenSSL, y defnyddiwyd y rhif 2.x ar ei gyfer.

Yr ail newid pwysig ar gyfer y prosiect oedd y newid o drwydded ddeuol (OpenSSL a SLeay) i drwydded Apache 2.0. Roedd y drwydded OpenSSL berchnogol flaenorol yn seiliedig ar destun trwydded etifeddiaeth Apache 1.0 ac roedd angen sôn yn benodol am OpenSSL mewn deunyddiau marchnata wrth ddefnyddio llyfrgelloedd OpenSSL, yn ogystal â hysbysiad arbennig os darparwyd OpenSSL fel rhan o'r cynnyrch. Roedd y gofynion hyn yn gwneud yr hen drwydded yn anghydnaws â'r GPL, gan ei gwneud hi'n anodd defnyddio OpenSSL mewn prosiectau â thrwydded GPL. I fynd o gwmpas yr anghydnawsedd hwn, gorfodwyd prosiectau GPL i ddefnyddio cytundebau trwydded penodol lle ychwanegwyd cymal at brif destun y GPL a oedd yn caniatáu'n benodol i'r cais gael ei gysylltu â llyfrgell OpenSSL a soniodd nad oedd gofynion y GPL yn berthnasol. gwneud cais i gysylltu ag OpenSSL.

O'i gymharu â changen OpenSSL 1.1.1, ychwanegodd OpenSSL 3.0.0 fwy na 7500 o newidiadau a gyfrannwyd gan 350 o ddatblygwyr. Prif arloesiadau OpenSSL 3.0.0:

  • Mae modiwl FIPS newydd wedi'i gynnig, gan gynnwys gweithredu algorithmau cryptograffig sy'n cydymffurfio â safon diogelwch FIPS 140-2 (mae'r broses ardystio ar gyfer y modiwl i fod i ddechrau'r mis hwn, a disgwylir ardystiad FIPS 140-2 y flwyddyn nesaf). Mae'r modiwl newydd yn llawer haws i'w ddefnyddio ac ni fydd yn anoddach ei gysylltu â llawer o gymwysiadau na newid y ffeil ffurfweddu. Yn ddiofyn, mae'r modiwl FIPS wedi'i analluogi ac mae angen galluogi'r opsiwn galluogi-fips.
  • Mae libcrypto yn gweithredu'r cysyniad o ddarparwyr pluggable, a ddisodlodd y cysyniad o beiriannau (mae'r ENGINE API wedi'i anghymeradwyo). Gyda chymorth darparwyr, gallwch ychwanegu eich gweithrediadau eich hun o algorithmau ar gyfer gweithrediadau fel amgryptio, dadgryptio, cynhyrchu allweddi, cyfrifo MAC, creu a gwirio llofnodion digidol. Mae'n bosibl cysylltu rhai newydd a chreu gweithrediadau amgen o algorithmau a gefnogir eisoes (yn ddiofyn, mae'r darparwr sydd wedi'i ymgorffori yn OpenSSL bellach yn cael ei ddefnyddio ar gyfer pob algorithm).
  • Cefnogaeth ychwanegol i'r Protocol Rheoli Tystysgrif (RFC 4210), y gellir ei ddefnyddio i ofyn am dystysgrifau gan weinydd CA, diweddaru tystysgrifau, a dirymu tystysgrifau. Mae gweithio gyda CMP yn cael ei wneud gan ddefnyddio'r cyfleustodau openssl-cmp newydd, sydd hefyd yn cefnogi'r fformat CRMF (RFC 4211) ac yn anfon ceisiadau trwy HTTP / HTTPS (RFC 6712).
  • Mae cleient cyflawn ar gyfer y protocolau HTTP a HTTPS wedi'i weithredu, gan gefnogi'r dulliau GET a POST, ailgyfeirio ceisiadau, gweithio trwy ddirprwy, amgodio ASN.1 a phrosesu goramser.
  • Mae EVP_MAC newydd (API Cod Dilysu Neges) wedi'i ychwanegu i'w gwneud hi'n haws ychwanegu gweithrediadau newydd o fewnosodiadau ffug.
  • Cynigir rhyngwyneb meddalwedd newydd ar gyfer cynhyrchu allweddi - EVP_KDF (API Swyddogaeth Deilliad Allweddol), sy'n symleiddio ychwanegu gweithrediadau newydd o KDF a PRF. Mae'r hen EVP_PKEY API, lle'r oedd yr algorithmau scrypt, TLS1 PRF a HKDF ar gael, wedi'i ailgynllunio ar ffurf haen a weithredwyd ar ben yr APIs EVP_KDF ac EVP_MAC.
  • Mae gweithredu'r protocol TLS yn rhoi'r gallu i ddefnyddio'r cleient a'r gweinydd TLS sydd wedi'u cynnwys yn y cnewyllyn Linux i gyflymu gweithrediadau. Er mwyn galluogi gweithrediad TLS a ddarperir gan y cnewyllyn Linux, rhaid i chi alluogi'r opsiwn "SSL_OP_ENABLE_KTLS" neu'r gosodiad "enable-ktls".
  • Cefnogaeth ychwanegol ar gyfer algorithmau newydd:
    • Algorithmau cenhedlaeth allweddol (KDF) yw “CAM SENGL” a “SSH”.
    • Algorithmau mewnosod efelychiadol (MAC) yw “GMAC” a “KMAC”.
    • Algorithm Amgáu Allweddol RSA (KEM) "RSASVE".
    • Algorithm amgryptio "AES-SIV" (RFC-8452).
    • Ychwanegwyd galwadau at yr API EVP sy'n cefnogi seiffrau gwrthdro gan ddefnyddio'r algorithm AES i amgryptio allweddi (Key Wrap): “AES-128-WRAP-INV”, “AES-192-WRAP-INV”, “AES-256-WRAP-INV ” , “AES-128-WRAP-PAD-INV”, “AES-192-WRAP-PAD-INV” ac “AES-256-WRAP-PAD-INV”.
    • Ychwanegwyd cefnogaeth ar gyfer algorithmau benthyca ciphertext (CTS) i'r API EVP: “AES-128-CBC-CTS”, “AES-192-CBC-CTS”, “AES-256-CBC-CTS”, “CAMELLIA-128-CBC -CTS", "CAMELLIA-192-CBC-CTS" a "CAMELLIA-256-CBC-CTS".
    • Cefnogaeth ychwanegol ar gyfer llofnodion digidol CAdES-BES (RFC 5126).
    • Mae AES_GCM yn gweithredu'r paramedr AuthEnvelopedData (RFC 5083) i alluogi amgryptio a dadgryptio negeseuon sydd wedi'u dilysu a'u hamgryptio gan ddefnyddio modd GCM AES.
  • Mae swyddogaethau PKCS7_get_octet_string a PKCS7_type_is_other wedi eu hychwanegu at yr API cyhoeddus.
  • Mae'r API PKCS#12 yn disodli'r algorithmau rhagosodedig a ddefnyddir yn swyddogaeth PKCS12_create() gyda PBKDF2 ac AES, ac yn defnyddio'r algorithm SHA-256 i gyfrifo MAC. Er mwyn adfer ymddygiad yn y gorffennol, darperir yr opsiwn "-legacy". Ychwanegwyd nifer fawr o alwadau estynedig newydd i PKCS12_*_ex, PKCS5_*_ex a PKCS8_*_ex, megis PKCS12_add_key_ex(). PKCS12_create_ex() a PKCS12_decrypt_skey_ex().
  • Ar gyfer platfform Windows, mae cefnogaeth ar gyfer cydamseru edau gan ddefnyddio mecanwaith SRWLock wedi'i ychwanegu.
  • Ychwanegwyd API olrhain newydd, wedi'i alluogi trwy'r paramedr galluogi-olrhain.
  • Mae'r ystod o allweddi a gefnogir yn swyddogaethau EVP_PKEY_public_check() ac EVP_PKEY_param_check() wedi'i ehangu: RSA, DSA, ED25519, X25519, ED448 a X448.
  • Mae'r is-system RAND_DRBG wedi'i dynnu, a'i ddisodli gan yr EVP_RAND API. Mae'r swyddogaethau FIPS_mode() a FIPS_mode_set() wedi'u dileu.
  • Mae rhan sylweddol o'r API wedi'i wneud yn ddarfodedig - bydd defnyddio galwadau anarferedig yng nghod y prosiect yn arwain at rybuddion wrth lunio. Gan gynnwys APIs lefel isel sy'n gysylltiedig â gweithrediadau penodol o algorithmau (er enghraifft, AES_set_encrypt_key ac AES_encrypt) wedi'u datgan yn swyddogol wedi darfod. Bellach darperir cefnogaeth swyddogol yn OpenSSL 3.0.0 ar gyfer APIs EVP lefel uchel sy'n cael eu tynnu o fathau unigol o algorithm (mae'r API hwn yn cynnwys, er enghraifft, swyddogaethau EVP_EncryptInit_ex, EVP_EncryptUpdate, ac EVP_EncryptFinal). Bydd APIs anghymeradwy yn cael eu dileu yn un o'r datganiadau mawr nesaf. Mae gweithrediadau algorithmau etifeddol megis MD2 a DES, sydd ar gael trwy'r API EVP, wedi'u symud i fodiwl "etifeddiaeth" ar wahân, sy'n anabl yn ddiofyn.
  • Mae'r ddogfennaeth a'r gyfres brawf wedi'u hehangu'n sylweddol. O'i gymharu â changen 1.1.1, mae cyfaint y ddogfennaeth wedi cynyddu 94%, ac mae maint cod yr ystafell brawf wedi cynyddu 54%.

Ffynhonnell: opennet.ru

Ychwanegu sylw