Нашри китобхонаи криптографии OpenSSL 3.0.0

Пас аз се соли таҳия ва 19 нашри санҷишӣ, китобхонаи OpenSSL 3.0.0 бо татбиқи протоколҳои SSL/TLS ва алгоритмҳои гуногуни рамзгузорӣ бароварда шуд. Филиали нав тағйиротҳоеро дар бар мегирад, ки мутобиқати ақибро дар сатҳи API ва ABI вайрон мекунанд, аммо тағирот ба кори аксари барномаҳое, ки барои интиқол аз OpenSSL 1.1.1 бозсозӣ талаб мекунанд, таъсир намерасонанд. Филиали қаблии OpenSSL 1.1.1 то моҳи сентябри соли 2023 дастгирӣ карда мешавад.

Тағйироти назаррас дар рақами версия ба гузаштан ба рақамгузории анъанавии "Major.Minor.Patch" вобаста аст. Минбаъд рақами якум (Маҷр) дар рақами версия танҳо дар сурати вайрон шудани мутобиқат дар сатҳи API/ABI ва рақами дуюм (Минор) ҳангоми зиёд шудани функсияҳо бидуни тағир додани API/ABI тағир меёбад. Навсозиҳои ислоҳкунанда бо тағир додани рақами сеюм (Пач) расонида мешаванд. Рақами 3.0.0 дарҳол пас аз 1.1.1 барои пешгирӣ кардани такрорӣ бо модули FIPS таҳияшаванда барои OpenSSL, ки барои он рақамгузории 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, аз ҷумла татбиқи алгоритмҳои криптографие, ки ба стандарти амнияти FIPS 140-2 мувофиқат мекунанд, пешниҳод шудааст (раванди сертификатсия барои модул дар ҳамин моҳ оғоз мешавад ва соли оянда сертификатсияи FIPS 140-2 дар назар аст). Истифодаи модули нав хеле осонтар аст ва пайваст кардани он ба бисёр замимаҳо назар ба тағир додани файли конфигуратсия мушкилтар нахоҳад буд. Бо нобаёнӣ, модули FIPS ғайрифаъол аст ва имкони фаъол кардани fips-ро талаб мекунад.
  • libcrypto консепсияи провайдерҳои васлшавандаро амалӣ мекунад, ки консепсияи муҳаррикҳоро иваз кардааст (API ENGINE бекор карда шудааст). Бо ёрии провайдерҳо, шумо метавонед татбиқи алгоритмҳои худро барои чунин амалиётҳо, аз қабили рамзгузорӣ, рамзкушоӣ, тавлиди калидҳо, ҳисобкунии MAC, эҷод ва тафтиши имзоҳои рақамӣ илова кунед. Ҳам пайваст кардани алгоритмҳои нав ва эҷоди татбиқи алтернативии алгоритмҳои аллакай дастгирӣшаванда имконпазир аст (ба таври нобаёнӣ, провайдери дар OpenSSL сохташуда ҳоло барои ҳар як алгоритм истифода мешавад).
  • Дастгирии иловагии Протоколи идоракунии сертификатҳо (RFC 4210), ки метавонад барои дархости сертификатҳо аз сервери CA, навсозии сертификатҳо ва бозхонди сертификатҳо истифода шавад. Кор бо CMP бо истифода аз утилитаи нави openssl-cmp сурат мегирад, ки он инчунин формати CRMF (RFC 4211) ва ирсоли дархостҳо тавассути HTTP/HTTPS (RFC 6712) -ро дастгирӣ мекунад.
  • Мизоҷи комилҳуқуқ барои протоколҳои HTTP ва HTTPS амалӣ карда шудааст, ки усулҳои GET ва POST-ро дастгирӣ мекунад, масири дархост, кор тавассути прокси, рамзгузории ASN.1 ва коркарди тайм-ут.
  • EVP_MAC (API Authentication Code Message Authentication Code) нав илова карда шудааст, то илова кардани татбиқи нави замимаҳои сохтаро осонтар кунад.
  • Интерфейси нави нармафзор барои тавлиди калидҳо пешниҳод карда мешавад - EVP_KDF (Key Derivation Function API), ки илова кардани татбиқи нави KDF ва PRF-ро осон мекунад. API-и кӯҳнаи EVP_PKEY, ки тавассути он алгоритмҳои scrypt, TLS1 PRF ва HKDF дастрас буданд, дар шакли қабате, ки дар болои API-ҳои EVP_KDF ва EVP_MAC амалӣ карда шудаанд, аз нав тарҳрезӣ шудааст.
  • Амалисозии протоколи TLS имкон медиҳад, ки мизоҷи TLS ва сервери дар ядрои Linux сохташуда барои суръат бахшидан ба амалиётҳо истифода шавад. Барои фаъол кардани татбиқи TLS, ки ядрои Linux пешниҳод кардааст, шумо бояд опсияи "SSL_OP_ENABLE_KTLS" ё танзимоти "enable-ktls" -ро фаъол созед.
  • Дастгирии иловашуда барои алгоритмҳои нав:
    • Алгоритмҳои тавлиди калидҳо (KDF) "SINGLE STEP" ва "SSH" мебошанд.
    • Алгоритмҳои воридкунии моделиронӣ (MAC) "GMAC" ва "KMAC" мебошанд.
    • RSA Калиди Алгоритми Encapsulation (KEM) "RSASVE".
    • Алгоритми рамзгузорӣ "AES-SIV" (RFC-8452).
    • Зангҳои иловашуда ба API EVP, ки рамзҳои баръаксро бо истифода аз алгоритми AES барои рамзгузории калидҳо дастгирӣ мекунанд (Key Wrap): “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".
    • Дастгирии иловагии алгоритмҳои қарзгирии рамзӣ (CTS) ба API EVP: “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 параметри AuthEnvelopedData (RFC 5083) -ро барои фаъол кардани рамзгузорӣ ва рамзкушоии паёмҳои тасдиқшуда ва рамзкунонидашуда бо истифода аз ҳолати AES GCM амалӣ мекунад.
  • Функсияҳои PKCS7_get_octet_string ва PKCS7_type_is_diger ба API ҷамъиятӣ илова карда шуданд.
  • PKCS # 12 API алгоритмҳои пешфарзро, ки дар функсияи PKCS12_create () истифода мешаванд, бо PBKDF2 ва AES иваз мекунад ва алгоритми SHA-256-ро барои ҳисоб кардани МАЗМ истифода мебарад. Барои барқарор кардани рафтори гузашта, варианти "-legacy" пешбинӣ шудааст. Илова ба шумораи зиёди зангҳои нави васеъ ба PKCS12_*_ex, PKCS5_*_ex ва PKCS8_*_ex, ба монанди PKCS12_add_key_ex ().PKCS12_create_ex () ва PKCS12_decrypt_skey_ex ().
  • Барои платформаи Windows, дастгирии ҳамоҳангсозии ришта бо истифода аз механизми SRWLock илова карда шудааст.
  • API-и нави пайгирӣ илова карда шуд, ки тавассути параметри enable-trace фаъол карда шудааст.
  • Доираи калидҳое, ки дар функсияҳои EVP_PKEY_public_check() ва EVP_PKEY_param_check() дастгирӣ мешаванд, васеъ карда шуданд: RSA, DSA, ED25519, X25519, ED448 ва X448.
  • Зерсистемаи RAND_DRBG хориҷ карда шуд ва бо API EVP_RAND иваз карда шуд. Функсияҳои FIPS_mode() ва FIPS_mode_set() хориҷ карда шуданд.
  • Қисми муҳими API кӯҳна шудааст - истифодаи зангҳои кӯҳна дар коди лоиҳа боиси огоҳӣ дар ҷараёни таҳия мегардад. Аз ҷумла API-ҳои сатҳи паст, ки ба татбиқи муайяни алгоритмҳо алоқаманданд (масалан, AES_set_encrypt_key ва AES_encrypt) расман кӯҳна эълон шудаанд. Дастгирии расмӣ дар OpenSSL 3.0.0 ҳоло танҳо барои API-ҳои сатҳи баланди EVP дода мешавад, ки аз намудҳои инфиродии алгоритм абстракт шудаанд (ин API, масалан, функсияҳои EVP_EncryptInit_ex, EVP_EncryptUpdate ва EVP_EncryptFinalро дар бар мегирад). API-ҳои бекоршуда дар яке аз нашрҳои асосии навбатӣ хориҷ карда мешаванд. Амалисозии алгоритмҳои кӯҳна ба монанди MD2 ва DES, ки тавассути EVP API дастрасанд, ба модули алоҳидаи "меросӣ" интиқол дода шудаанд, ки бо нобаёнӣ ғайрифаъол аст.
  • Ҳуҷҷатҳо ва маҷмӯи санҷишҳо хеле васеъ карда шуданд. Дар муқоиса бо бахши 1.1.1, ҳаҷми ҳуҷҷатгузорӣ 94% ва андозаи коди пакети тестӣ 54% зиёд шудааст.

Манбаъ: opennet.ru

Илова Эзоҳ