OpenSSL 3.0.0 Cryptographic Library Release

Үч жылдык иштеп чыгуудан жана 19 сыноо релизинен кийин, OpenSSL 3.0.0 китепканасы SSL/TLS протоколдорун жана ар кандай шифрлөө алгоритмдерин ишке ашыруу менен чыгарылган. Жаңы бутак API жана ABI деңгээлинде артка карай шайкештикти бузган өзгөртүүлөрдү камтыйт, бирок өзгөртүүлөр OpenSSL 1.1.1ден көчүрүү үчүн кайра курууну талап кылган көпчүлүк колдонмолордун иштешине таасирин тийгизбейт. OpenSSL 1.1.1 мурунку бутагы 2023-жылдын сентябрына чейин колдоого алынат.

Версия номеринин олуттуу өзгөрүшү салттуу “Major.Minor.Patch” номерлөөсүнө өтүү менен шартталган. Мындан ары версия номериндеги биринчи цифра (Мажор) API/ABI деңгээлинде шайкештик бузулганда гана өзгөрөт, ал эми экинчиси (Minor) API/ABI өзгөртүлбөстөн функционалдуулук жогорулаганда өзгөрөт. Түзөтүүчү жаңыртуулар үчүнчү санга (патч) өзгөртүү менен жеткирилет. 3.0.0ден кийин дароо 1.1.1 саны OpenSSL үчүн учурда иштелип жаткан FIPS модулу менен дал келбөө үчүн тандалды, ал үчүн 2.x номерлөө колдонулган.

Долбоор үчүн экинчи маанилүү өзгөртүү кош лицензиядан (OpenSSL жана SSLeay) Apache 2.0 лицензиясына өтүү болду. Мурунку менчик OpenSSL лицензиясы эски Apache 1.0 лицензиясынын текстине негизделген жана OpenSSL китепканаларын колдонууда маркетинг материалдарында OpenSSL жөнүндө ачык эскертүүнү, ошондой эле OpenSSL продуктунун бир бөлүгү катары берилсе, атайын эскертүүнү талап кылган. Бул талаптар GPL лицензиясы бар долбоорлордо OpenSSL колдонууну кыйындатып, эски лицензияны GPL менен шайкеш келбей калды. Бул дал келбестиктен арылуу үчүн GPL долбоорлору атайын лицензиялык келишимдерди колдонууга аргасыз болушкан, анда GPLдин негизги тексти тиркемени OpenSSL китепканасы менен байланыштырууга ачык уруксат берген пункт менен толукталган жана GPLдин талаптары OpenSSL менен байланыштыруу үчүн колдонулат.

OpenSSL 1.1.1 бутагына салыштырмалуу, OpenSSL 3.0.0 7500 иштеп чыгуучу тарабынан кошкон 350дөн ашык өзгөртүүлөрдү кошту. OpenSSL 3.0.0 негизги инновациялары:

  • FIPS 140-2 коопсуздук стандартына ылайык келген криптографиялык алгоритмдерди ишке ашырууну камтыган жаңы FIPS модулу сунушталды (модуль үчүн сертификация процесси ушул айда башталышы пландаштырылууда, ал эми FIPS 140-2 сертификаты келерки жылы күтүлүүдө). Жаңы модулду колдонуу бир топ жеңил жана аны көптөгөн тиркемелерге туташтыруу конфигурация файлын өзгөртүүдөн кыйын болбойт. Демейки боюнча, FIPS модулу өчүрүлгөн жана enable-fips параметрин иштетүүнү талап кылат.
  • libcrypto кыймылдаткычтар концепциясын алмаштырган кошулуучу провайдерлердин концепциясын ишке ашырат (ENGINE API эскирген). Провайдерлердин жардамы менен сиз шифрлөө, дешифрлөө, ачкычтарды генерациялоо, MAC эсептөө, санариптик кол тамгаларды түзүү жана текшерүү сыяктуу операциялар үчүн алгоритмдердин өзүңүздүн ишке ашырууларын кошо аласыз. Жаңыларын туташтырууга жана буга чейин колдоого алынган алгоритмдердин альтернативалуу ишке ашырууларын түзүүгө болот (демейки боюнча, OpenSSLге орнотулган провайдер азыр ар бир алгоритм үчүн колдонулат).
  • Сертификаттарды башкаруу протоколуна (RFC 4210) колдоо кошулду, ал CA серверинен сертификаттарды суроо, сертификаттарды жаңыртуу жана сертификаттарды жокко чыгаруу үчүн колдонулушу мүмкүн. CMP менен иштөө CRMF форматын (RFC 4211) колдогон жана HTTP/HTTPS (RFC 6712) аркылуу суроо-талаптарды жөнөтүүчү жаңы openssl-cmp утилитасын колдонуу менен ишке ашырылат.
  • HTTP жана HTTPS протоколдору үчүн толук кандуу кардар ишке ашырылган, ал GET жана POST ыкмаларын колдогон, суроо-талапты кайра багыттоо, прокси аркылуу иштөө, ASN.1 коддоо жана тайм-аут иштетүү.
  • Жаңы EVP_MAC (билдирүүнүн аныктыгын текшерүү коду API) жасалма кыстармалардын жаңы ишке ашырууларын кошууну жеңилдетүү үчүн кошулду.
  • Ачкычтарды генерациялоо үчүн жаңы программалык интерфейс сунушталууда - EVP_KDF (Key Derivation Function API), ал KDF жана PRF жаңы ишке ашырууларын кошууну жөнөкөйлөтөт. Эски EVP_PKEY API, ал аркылуу scrypt, TLS1 PRF жана HKDF алгоритмдери жеткиликтүү болгон, EVP_KDF жана EVP_MAC API'леринин үстүнө ишке ашырылган катмар түрүндө кайра иштелип чыккан.
  • TLS протоколунун ишке ашырылышы операцияларды тездетүү үчүн Linux ядросуна орнотулган TLS кардарын жана серверди колдонуу мүмкүнчүлүгүн берет. Linux ядросу тарабынан берилген TLS ишке ашырууну иштетүү үчүн "SSL_OP_ENABLE_KTLS" параметрин же "enable-ktls" жөндөөсүн иштетишиңиз керек.
  • Жаңы алгоритмдер үчүн кошумча колдоо:
    • Негизги генерациялоо алгоритмдери (KDF) “SINGLE STEP” жана “SSH” болуп саналат.
    • Симуляцияланган киргизүү алгоритмдери (MAC) "GMAC" жана "KMAC" болуп саналат.
    • RSA Key Incapsulation Algorithm (KEM) "RSASVE".
    • Шифрлөө алгоритми "AES-SIV" (RFC-8452).
    • Ачкычтарды шифрлөө үчүн AES алгоритмин колдонуу менен тескери шифрлерди колдогон EVP API'ге чалуулар кошулду (Ачкычты орогуч): “AES-128-WRAP-INV”, “AES-192-WRAP-INV”, “AES-256-WRAP-INV ”, "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" жана "AES-256-WRAP-PAD-INV".
    • EVP API үчүн шифрленген текстти карыз алуу (CTS) алгоритмдерине колдоо кошулду: “AES-128-CBC-CTS”, “AES-192-CBC-CTS”, “AES-256-CBC-CTS”, “CAMELLIA-128-CBC -CTS” ", "CAMELLIA-192-CBC-CTS" жана "CAMELLIA-256-CBC-CTS".
    • CAdES-BES санарип колтамгалары үчүн кошумча колдоо (RFC 5126).
    • AES_GCM AES GCM режими аркылуу аутентификацияланган жана шифрленген билдирүүлөрдү шифрлөө жана чечмелөө үчүн AuthEnvelopedData (RFC 5083) параметрин ишке ашырат.
  • PKCS7_get_octet_string жана PKCS7_type_is_башка функциялар коомдук API'ге кошулду.
  • PKCS#12 API PKCS12_create() функциясында колдонулган демейки алгоритмдерди PBKDF2 жана AES менен алмаштырат жана MACды эсептөө үчүн SHA-256 алгоритмин колдонот. Мурунку жүрүм-турумду калыбына келтирүү үчүн "-legacy" опциясы каралган. PKCS12_add_key_ex().PKCS5_create_ex() жана PKCS8_decrypt_skey_ex() сыяктуу PKCS12_*_ex, PKCS12_*_ex жана PKCS12_*_ex жаңы кеңейтилген чалуулардын көп саны кошулду.
  • Windows платформасы үчүн SRWLock механизмин колдонуу менен жипти синхрондоштуруу үчүн колдоо кошулду.
  • enable-trace параметри аркылуу иштетилген жаңы байкоо API кошулду.
  • EVP_PKEY_public_check() жана EVP_PKEY_param_check() функцияларында колдоого алынган баскычтардын диапазону кеңейтилген: RSA, DSA, ED25519, X25519, ED448 жана X448.
  • RAND_DRBG подсистемасы алынып салынды, анын ордуна EVP_RAND API. FIPS_mode() жана FIPS_mode_set() функциялары алынып салынды.
  • APIдин олуттуу бөлүгү эскирди - долбоордун кодундагы эскирген чалууларды колдонуу компиляция учурунда эскертүүлөргө алып келет. Анын ичинде алгоритмдердин айрым ишке ашырууларына байланышкан төмөнкү деңгээлдеги API'лер (мисалы, AES_set_encrypt_key жана AES_encrypt) расмий түрдө эскирген деп жарыяланган. OpenSSL 3.0.0 расмий колдоосу азыр жеке алгоритм түрлөрүнөн ажыратылган жогорку деңгээлдеги EVP API үчүн гана берилет (бул API, мисалы, EVP_EncryptInit_ex, EVP_EncryptUpdate жана EVP_EncryptFinal функцияларын камтыйт). Эскирген API'лер кийинки негизги релиздердин биринде алынып салынат. EVP API аркылуу жеткиликтүү болгон MD2 жана DES сыяктуу эски алгоритмдердин ишке ашырылышы демейки боюнча өчүрүлгөн өзүнчө "мурдагы" модулга жылдырылды.
  • Документация жана сыноо комплек-си бир кыйла кецейтилди. Тармак 1.1.1 менен салыштырганда документациянын көлөмү 94%га, ал эми тесттик комплект кодунун көлөмү 54%га өскөн.

Source: opennet.ru

Комментарий кошуу