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» нөмірлеуіне көшумен байланысты. Бұдан былай нұсқа нөміріндегі бірінші сан (Major) API/ABI деңгейінде үйлесімділік бұзылған жағдайда ғана өзгереді, ал екіншісі (Minor) API/ABI өзгертпестен функционалдылық ұлғайған кезде өзгереді. Түзеткіш жаңартулар үшінші санға (патч) өзгерту арқылы жеткізіледі. 3.0.0-ден кейінгі бірден 1.1.1 саны 2.x нөмірлеуі қолданылған OpenSSL үшін әзірленіп жатқан FIPS модулімен қабаттасуды болдырмау үшін таңдалды.

Жобаның екінші маңызды өзгерісі қос лицензиядан (OpenSSL және SSLeay) Apache 2.0 лицензиясына көшу болды. Алдыңғы меншікті OpenSSL лицензиясы бұрынғы Apache 1.0 лицензиясының мәтініне негізделген және OpenSSL кітапханаларын пайдаланған кезде маркетингтік материалдарда OpenSSL туралы нақты атап өтуді, сондай-ақ OpenSSL өнім бөлігі ретінде берілген жағдайда арнайы ескертуді талап етті. Бұл талаптар ескі лицензияны GPL-мен үйлеспейтін етіп, GPL лицензиясы бар жобаларда OpenSSL пайдалануды қиындатады. Бұл үйлесімсіздікті болдырмау үшін 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 кілтін инкапсуляциялау алгоритмі (KEM) "RSASVE".
    • «AES-SIV» шифрлау алгоритмі (RFC-8452).
    • Кілттерді шифрлау үшін AES алгоритмін қолданатын кері шифрларды қолдайтын EVP API қызметіне қоңыраулар қосылды (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".
    • 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%-ға артты.

Ақпарат көзі: opennet.ru

пікір қалдыру