Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


OpenSSL — это инструмент защиты и сертификации данных. Инструмент доступен в ОС Astra Linux по умолчанию. Узнать установленную версию OpenSSL можно командой:

Command

openssl version

Различия версий OpenSSL 1.1.1 и 3.0.0

Информация

Поддержка OpenSSL 1.1.1 прекращена в сентябре 2023 года. Между версиями отсутствует прямая совместимость. Нумерация 2.х применяется только к FIPS-модулю в составе OpenSSL, поэтому после 1.1.1 идет версия 3.0.0

OpenSSL 3.0.0 включает в себя множество изменений и улучшений по сравнению с предыдущей версией 1.1.1. Основным изменением можно считать добавление новой концепции модульности инструмента OpenSSL провайдеров (providers). Новая концепция дополнит ENGINE API и динамически подгружаемые модули (engine) библиотеки libcrypto, содержащие алгоритмы защитного преобразования данных. Важным отличием провайдеров (providers) от модулей (engine) является уровень предоставляемого API — провайдеры предоставляют более высокоуровневые методы для работы с алгоритмами. Подгружаемые модули (engine) заменяют стандартные средства библиотеки libcrypto в составе OpenSSL на альтернативные реализации некоторых алгоритмов. Провайдеры обеспечивают полноценное окружение для работы альтернативных реализаций алгоритмов — средства сериализации, примитивы, контексты помимо самих алгоритмов. Для версий OpenSSL 3.0.0 и выше динамически подгружаемые модули (engine) признаны устаревшими и разработчики не гарантируют корректную работу OpenSSL новых версий с ними.

Список провайдеров OpenSSL 3.0.0 и выше для доступен по команде:

Command

openssl list -providers

По умолчанию, все алгоритмы инструмента OpenSSL, отмеченные как устаревшие отключены и вынесены в отдельный провайдер legacy_sect

Предупреждение

Использование устаревших алгоритмов защитного преобразования данных небезопасно!

Задействовать устаревшие алгоритмы можно отредактировав конфигурационный файл openssl.cfg следующим образом:

  1. Добавить строку в секцию [provider_sect] :

    Блок кода
    # List of providers to load (список загружаемых провайдеров)
    [provider_sect]
    default = default_sect
    legacy = legacy_sect (добавленная строка)


  2. Раскомментировать параметр activate = 1 секции [default_sect] :

    Блок кода
    [default_sect]
    activate = 1


  3. Ниже добавить секцию [legacy_sect] с параметром activate = 1 :

    Блок кода
    [default_sect]
    activate = 1
    
    [legacy_sect]
    activate = 1


Основной перечень функциональных различий между версиями OpenSSL 1.1.1 и 3.0.0

  • Добавлено множество новых опций для openssl list .
  • Добавлено руководство по переходу к новой версии в раздел man(7) документации разработчиков OpenSSL.
  • Добавлены функция OPENSSL_info()  и команда openssl info  для получения встроенной справки.
  • Реализована поддержка подключаемых групп протокола TLSv1.3. 
  • Добавлена поддержка Kernel TLS (KTLS) - обработки данных для протокола TLS на уровне ядра.
  • Лицензия Apache обновлена до v2.0.
  • ENGINE API отмечен как устаревший.
  • Все варианты EVP-защитного преобразования CAST5, BF, IDEA, SEED, RC2, RC4, RC5 и DES отмечены как устаревшие.
Информация

EVP — высокоуровневый API для работы с алгоритмами защитного преобразования данных, работающий без привязки к их конкретным реализациям

  • Хэш-функции EVP: MD2, MD4, MDC2, WHIRLPOOL и RIPEMD-160 отмечены как устаревшие.
  • Добавлены удобные функции для генерации асимметричных пар ключей.
  • Типы и функции:
    • OCSP_REQ_CTX,
    • EC_KEY  и EC_KEY_METHOD,
    • RSA  и RSA_METHOD, DSA  и DSA_METHOD,
    • DH  и DH_METHOD, ERR_load 

отмечены как устаревшие.

  • Удален интерфейс RAND_DRBG API.
  • Добавлен OSSL_LIB_CTX , контекст библиотеки libcrypto для менеджеров контекстов.
  • В OpenSSL API добавлены новые функции для поддержки структур OSSL_LIB_CTX.
  • Из утилиты openssl  удален интерактивный режим.
  • Алгоритмы X25519, X448, Ed25519, Ed448, SHAKE128 и SHAKE256 включены в состав FIPS-провайдеров.
  • Сертификаты X509, подписанные с использованием SHA1, больше не разрешены при уровне безопасности 1 или выше. Уровень безопасности по умолчанию для TLS равен 1. Сертификаты, подписанные с использованием SHA1 по умолчанию больше не проходят проверку подлинности серверов или клиентов.
  • Инструменты отладки enable-crypto-debug  и enable-crypto-debug-backtrace  были отключены, теперь применяется очистка адресов и обнаружение утечек.
  • Появилась поддержка протокола управления сертификатами CMP, который позволяет запрашивать сертификаты у сервера удостоверяющего центра. Утилита openssl-cmp  для работы с сертификатами позволяет передавать запросы через HTTP/HTTPS.
  • Добавлен полноценный HTTP/HTTPS-клиент, поддерживающий методы GET и POST, произвольные типы содержимого запросов и ответов, поддерживающий TLS, соединения через HTTP-прокси, соединения и обмен данными через пользовательский BIOs (разрешающий неявные соединения) и обработку таймаутов.
  • Добавлен инструмент util/check-format.pl для проверки соблюдения правил безопасности при разработке приложений.
  • Добавлены методы OSSL_ENCODER  и OSSL_DECODER  для операций по защите данных и работающие через API.
  • Добавлена структура OSSL_PARAM_BLD , облегчающая работу с API OSSL_PARAM.
  • Добавлены макросы ERR_raise() и ERR_raise_data() для работы с ошибками.
  • Функции:
    • ERR_put_error(),
    • ERR_get_error_line(),
    • ERR_get_error_line_data(),
    • ERR_peek_error_line_data(),
    • ERR_peek_last_error_line_data() и ERR_func_error_string()  

отмечены как устаревшие.

  • Добавлена функция OSSL_PROVIDER_available()  для проверки доступности провайдера.
  • Добавлена команда openssl mac, который использует API EVP_MAC.
  • Добавлена команда openssl kdf, которая использует API EVP_KDF.
  • Добавлена поддержка инструментов для трассировки и вывода данных отладки.
  • Добавлен интерфейс хэш-функций EVP_MAC . Поддерживаются следующие функции BLAKE2, CMAC, GMAC, HMAC, KMAC, POLY1305 и SIPHASH.
  • Добавлен интерфейс формирования ключей EVP_KDF . Поддерживаются следующие функции формирования ключа : HKDF, KBKDF, KRB5 KDF, PBKDF2, PKCS12 KDF, SCRYPT, SSH KDF, SSKDF, TLS1 PRF, X9.42 KDF и X9.63 KDF.
  • Все низкоуровневые хэш-функции алгоритмов MD2, MD4, MD5, MDC2, RIPEMD 160, SHA1, SHA224, SHA256, SHA384, SHA512 и Whirlpool  отмечены как устаревшие.
  • Все низкоуровневые функции защитного преобразования для алгоритмов AES, Blowfish, Camellia, CAST, DES, IDEA, RC2, RC4, RC5 и SEED  отмечены как устаревшие.
  • Все низкоуровневые функции генерации открытого ключа для алгоритмов DH, DSA, ECDH, ECDSA и RSA  отмечены как устаревшие. Протоколы SSL 3, TLS 1.0, TLS 1.1 и DTLS 1.0 работают только на уровне безопасности 0, за исключением случаев, когда используется обмен ключами RSA без SHA1.

Различия версий 3.0.0 и 3.1.0

  • Добавлен параметр конфигурации провайдера FIPS для принудительной проверки EMS во время выполнения KDF TLS1_PRF. Для проверки к команде openssl fipsinstall необходимо добавить параметр -ems-check.
  • Провайдер FIPS включает в себя алгоритмы 3DES в режиме ECB, CBC и Adds для обеспечения обратной совместимости с прошлыми версиями OpenSSL. Использование алгоритмов в операциях указывается опцией fips=yes.
  • Добавлена поддержка алгоритма KMAC (KECCAK Message Authentication Code) в функцию KBKDF (Key Based Key Derivation Function).
  • Поддержка провайдерами инструкции RNDR и регистров RNDRRS для ARM-архитектуры (aarch64) при генерации случайных чисел.
  • Команды s_client и s_server теперь сообщают, когда версия TLS не включает механизм повторного согласования, что позволяет избежать ошибок при работе с TLS и повторном согласовании в начале сеанса связи.
  • Поддержка AES-GCM с помощью инструкций AVX 512 vAES и vPCLMULQDQ.
  • Параллельное двухпроцессорное 1536/2048-разрядное модульное возведение в степень для процессоров с поддержкой AVX512_IFMA.
  • Функции:
    • OPENSSL_LH_stats,
    • OPENSSL_LH_node_stats,
    • OPENSSL_LH_node_usage_stats,
    • OPENSSL_LH_stats_bio,
    • OPENSSL_LH_node_stats_bio
    • OPENSSL_LH_node_usage_stats_bio

теперь помечены как устаревшие начиная с версии OpenSSL 3.1 и могут быть отключены путем определения макроса OPENSSL_NO_DEPRECATED_3_1.

  • Макрос DEFINE_LHASH_OF заменен на DEFINE_LHASH_OF_EX.
  • Для подписей PKCS#1 RSASSA-PSS длина значения параметра salt может изменяться до максимальной, чтобы соответствовать FIPS 186-4. Чтобы использовать максимальную длину нужно присвоить значение OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX для параметра rsa_pss_saltlen.
Информация

Параметр salt определяет длину входной строки, передающейся вместе с преобразуемыми данными в хэш-функцию

Различия версий 3.1.0 и 3.2.0

  • Алгоритм хэширования BLAKE2b поддерживает настраиваемую длину выходных данных путем установки параметра size .
  • Добавлена возможность удаления объектов из хранилища с помощью метода OUR-LOCAL_STORE_delete()  и соответствующей функции API провайдера-хранилища mgmt OSSL_FUNC_store_delete() .
  • Добавлена функция OSSL_FUNC_store_open_ex() в API провайдера-хранилища mgmt для передачи обратного вызова ключевой фразы при открытии хранилища.
  • Изменена длина параметра salt по умолчанию, используемая файлами PBES2 KDF (PBKDF2 и scrypt), с 8 байт до 16 байт. В стандарте PKCS#5 (RFC 8018) для PBE используется длина записи в 64 байта, а для PBES2 рекомендуется использовать минимум 64 бита. Для соответствия требованиям FIPS в PBKDF2 требуется длина записи в 128 бит. Это влияет на параметры утилиты openssl , такие как genrsa и pkcs8, так же на методы API, такие как PM_write_bio_Private Key(), которые зависят от значения по умолчанию.
  • В утилите openssl для параметров pkcs8 и enc была добавлена дополнительная опция saltlen, позволяющая изменить значение параметра salt не должно быть задано по умолчанию.
  • Изменено значение параметра конфигурации ess_cert_id_alg по умолчанию, которое используется для вычисления идентификатора сертификата открытого ключа TSA. Алгоритм по умолчанию обновлен до SHA256 вместо SHA1.
  • Оптимизация для алгоритма SM2 в aarch64. Добавлена новая опция настройки no-sm2-precomp для отключения предварительно вычисленной таблицы.
  • Добавлена поддержка на стороне клиента для QUICK.
  • Реализация эллиптической кривой secp384r1 с использованием редукции для повышения скорости работы некоторых алгоритмов.Чтобы включить реализацию, необходимо использовать параметр сборки enable-ec_nistp_64_gcc_128.
  • Добавлена поддержка алгоритма SHA256/192.
  • Добавлена поддержка безопасного получения обновления сертификата корневого центра сертификации в CMP.
  • Добавлена функция SSL_get 0_group_name() для предоставления доступа к имени группы, используемой для обмена ключами TLS.
  • Добавлены конфигурационные опции no-http для принудительного отключения поддержки HTTP, no-apps и no-docs,чтобы отключить использование приложений командной строки для утилиты openssl и вывод документации.
  • Добавлена конфигурационная опция  no-necks, которая отключает поддержку кривых X25519, X448 и EdDSA.
  • Добавлены функции провайдера OSSL_FUNC_key mgmt_im/export_types_ex(), которые получают контекст провайдера в качестве параметра.
  • Новаяфункцияв библиотеке ssl_lib под названиемSSL_get_handshake_rtt которая позволяет вычислять время доставки пакетов для протокола TLS.
  • Добавлен расширенный командный режим для команды s_client. Для его использования необходимо указывать параметр “-adv”.После запуска s_client с помощью “-adv” введите “{help}”, чтобы отобразить список доступных команд.
  • Добавлена опция -quic в команде s_client, чтобы разрешить подключение к серверам QUIC. Для QUICK требуется использование расширения ALPN протокола TLS, поэтому это необходимо указать это с помощью опции -alpn. Рекомендуется использовать расширенный режим в s_client указав это параметром -adv.
  • Добавлена поддержка необработанного открытого ключа (RFC7250). Аутентификация поддерживается путем сопоставления ключей с локальной политикой (записи TLSA на основе существующих ключей) или DANE (записи TLSA, полученные приложением из DNS). Записи TLSA также будут соответствовать одному и тому же ключу в сертификате сервера, если не предусматривается использование необработанного открытого ключа. TLSA-запись позволяет владельцу домена подтвердить подлинность используемого сертификата или цифровой подписи средствами DNSSEC.
  • Добавлена функция EC_GROUP_to_params(), которая создает массив SSL_PARAM из заданной EC_GROUP.
  • Реализована поддержка всех пяти экземпляров схем цифровой подписи EdDSA из RFC8032: Ed25519, Ed25519 ctx, Ed25519ph, Ed448 и Ed448ph. Потоковая передача пока не поддерживается для вариантов HashEdDSA (Ed25519ph и Ed448ph).
  • Реализована поддержка процессорных инструкций SM4-XTS.
  • Добавлена функция OSSL_sleep(), не зависящая от платформы.
  • Реализована поддержка детерминированных подписей ECDSA (RFC6979).
  • Реализована поддержка алгоритма AES-GCM-SIV (RFC8452).
  • Добавлена поддержка подключаемых (на основе провайдера) алгоритмов подписи TLS. Это позволяет выполнять операции аутентификации по протоколу TLS 1.3 с использованием алгоритмов, по умолчанию не включенных в OpenSSL.
  • Добавлена поддержка подключаемых (на основе провайдера) алгоритмов подписи CMS. Это позволяет CMS подписывать и проверять операции с помощью алгоритмов, которые по умолчанию не включены в OpenSSL.
  • Добавлена поддержка гибридного защитного преобразования с открытым ключом (HPKE).Внешние API определены в файле include/openssl/hpc.h и задокументированы в  doc/man3/OSSL_HPKE_CTX_new.ipod.
  • Реализована поддержка HPKE DHKEM у провайдеров, используемых точкой доступа HPKE (RFC9180).
  • Добавлена поддержка сжатия сертификатов (RFC8879), включая библиотеки для сжатия Brotli и Zstandard.
  • Добавлена возможность указывать пользовательские атрибуты к файлам стандарта PKCS#12. Добавлен новый API метод PKCS12_create_ex2, идентичный существующему PKCS12_create_ex, но допускающий заданный пользователем обратных вызовов.
  • Добавлен новый PKCS12_SAFEBAG_set_0_attr, который позволяет добавлять новые значения переменной attr к существующему стеку STACK_OF attrs.
  • Для стандарта PKCS#12 добавлена опция определения длины параметра salt.
  • Добавлены дополнительные профили защиты SRTP из RFC8723 и RFC8269.
  • Добавлена поддержка механизма TCP Fast Open для (RFC7413), что позволяет передавать данные в пакетах SYN и SYN-ACK.
  • Добавлены наборы для защитного преобразования на основе DHE_PSK (RFC 4279) и ECDHE_PSK (RFC 5489).
  • Добавьте новые API-интерфейсы SSL для работы с отпечатками TLS/SSL.
  • Функция PKCS12_parse() теперь поддерживает файлы PKCS12 без MAC.
  • Добавлена поддержка Bignum-значений в API OSSL_PARAM.
  • При использовании команды openssl x509 для проверки атрибутов сертификата когда проверка завершается неудачей возвращается код завершения с описанием ошибки.
  • Уровень безопасности SSL/TLS по умолчанию был изменен с 1 на 2. Ключи RSA, DSA и DH менее 2048 бит, а также ключи ECC менее 224 бит больше не применимы.
  • Функции семейства SSL_CTX_set_cipher_list определяют защитное преобразование, используя имена стандарта IANA.
  • Функция получения ключа PVK была перенесена из b2i_PVK_bio_ex() в отдельный криптографический провайдер в качестве EVP_KDF. Приложения, которым требуется этот KDF, должны будут загружать устаревший криптографический провайдер.
  • Наборы алгоритмов защитного преобразования с режимом CCM 8 в TLS были понижены до нулевого уровня безопасности.
  • Имена в X.509 теперь по умолчанию отображаются в виде строк UTF-8.
  • Добавлена проверка ключей для X.509 при подписании разрабатываемого кода в соответствии с требованиями добровольной сертификации CA/Browser Forum.
  • Приложения x509, ca и req теперь выдают сертификаты X.509 v3. Опция -x509v1 в req поддерживает генерацию сертификатов X.509 v1.
  • Функции X509_sign() и X509_sign_ctx(), проверяют, имеет ли сертификат X.509 версию 3, если информация о сертификате содержит упоминания X.509.
  • API CMS расширен методами CMS_SignedData и CMS_EnvelopedData для обработки данных.
  • Функции CMS_add0_cert() и CMS_add1_cert() не выдают ошибку, если добавляемый сертификат уже присутствует.
  • Функции CMS_sign_ex() и CMS_sign() игнорируют любые повторяющиеся сертификаты в аргументах certs.
  • Добавлены новые методы BIO_sendmmsg() и BIO_recvmmsg() для работы с защищенными потоками BIO, которые позволяют отправлять и получать несколько сообщений за один вызов. (подробности доступны в BIO_sendmmsg(3)).
  • Добавлены функции BIO_s_dgram_pair() и BIO_s_dgram_mem() для поддержки работы c памятью в защищенных потоках BIO и корректной работы методов BIO_sendmmsg() и BIO_recvmmsg().
  • Для протокола TLS 1.3 в режиме CCM включена поддержка KTLS (kernel TLS) - защитного преобразования на уровне ядра. Актуально для релизов ядра Linux 5.4.164, 5.10.84, 5.15.7 и любых последующих версий новее 5.16.
  • Для команд s_server и s_client доступна опция -ktls, которая включает поддержку технологии KTLS.
  • Поддержка функции KTLS sendfile() для технологии Linux Zero-Copy.
  • Вызовы OBJ_  теперь потокобезопасны и используют глобальную блокировку.
  • Добавлена возможность использования готовых наборов чисел в процессе защитного преобразования в функциях CMS API и с помощью параметра  -digest для утилиты openssl.
  • Функция OPENSSL_malloc() и другие функции распределения теперь генерируют ошибки при сбоях.
  • В качестве защитных мер от уязвимости CVE-2020-25659 при использовании алгоритма RSA стандарта PKCS#1 версии 1.5 в случае ошибки в процессе обратного защитного преобразования не будет выводиться сообщение об ошибке с подробностями о производимой операции
  • Добавлена поддержка кривых Brainpool в TLS-1.3.
  • Добавлена поддержка функций формирования ключа по алгоритмам Argon2d, Argon2i, Argon2id KDFs, а также базовая реализация пула потоков для некоторых платформ.

Поддержка отечественных алгоритмов защитного преобразования ГОСТ

OpenSSL 1.1.1

Поддержка серии алгоритмов защитного преобразования ГОСТ реализована при помощи пакета libgost-astra, предоставляющего engine и провайдер алгоритмов ГОСТ

OpenSSL 3.0.0 и более новые версии

Дополнительно внедрена концепция подключаемых провайдеров. Нативная поддержка алгоритмов ГОСТ разработчиками OpenSSL.


Функции для работы с библиотеками алгоритмов ГОСТ по умолчанию доступны в Astra Linux Special Edition.

Перечень поддерживаемых алгоритмов ГОСТ доступен по команде:

Command

openssl engine gost -c

Поддержка версий OpenSSL разработчиком


Версия OpenSSLСовместимость OpenSSL с прошлыми версиямиДата релиза версии OpenSSLДата окончания поддержки OpenSSL разработчиками инструмента
1.1.1совместима11 сентября 201811 сентября 2023
3.0.0частично7 сентября 20217 сентября 2026
3.1.0совместима14 марта 202314 марта 2025
3.2.0совместима23 ноября 202323 ноября 2025 



...