Релиз библиотеки GnuTLS 3.6.0
23 августа 2017 года
Представлен значительный выпуск GnuTLS 3.6.0, свободной библиотеки с реализацией протоколов SSL, TLS и DTLS, алгоритмов шифрования (включая AES и Camellia) и функций для работы с различными типами сертификатов и ключей. Ветка 3.6.x подготовлена после шестнадцати месяцев разработки в Git-репозитории и помечена как stable-next, что сигнализирует о достижении качества стабильной ветки, но пока неготовности заменить текущую стабильную ветку 3.5.x, поддержка которой будет продолжена.
Основные новшества:
- Генератор псевдослучайных чисел избавлен от глобальной блокировки, мешающей эффективному применению в многопоточных приложениях (производительность теперь масштабируется от числа CPU).
- Генератор псевдослучайных чисел переведён на использование потокового шифра CHACHA, который по сравнению с ранее применявшимся алгоритмом Salsa20 позволяет сократить размер загружаемого в память кода и унифицировать применение основных методов шифрования (CHACHA также используется в TLS и других примитивах GnuTLS). Изменение не касается альтернативного генератора псевдослучайных чисел AES-DRBG, который применяется в режиме FIPS140-2;
- Добавлена поддержка ключей RSA-PSS, а также создания и верификации цифровых подписей RSA-PSS для сертификатов и согласования соединения в TLS 1.2;
- В сертификатах (PKCS#8, PKCS#7, PKIX) и TLS-ключах появилась возможность использования цифровой подписи с открытым ключом Ed25519, разработанной Дэниэлом Бернштейном и отличающейся очень высокой скоростью верификации и создания подписей при более высоким уровнем безопасности, чем ECDSA и DSA. Ed25519 не подвержен проблемам с коллизиями в хэшах, не чувствителен к атакам через определение скорости работы кэша (cache-timing attacks) и атакам по сторонним каналам (side-channel attacks);
- В TLS по умолчанию активирован обмен ключами на основе алгоритма X25519 ( RFC 7748);
- Добавлена поддержка протокола согласования групп (GROUP-ALL, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096,
GROUP-FFDHE8192) на основе эллиптических кривых ECDH (Elliptic Curve Diffie-Hellmann), позволяющего повысить минимизировать ошибки из-за применения не безопсных значений параметров DH (параметры теперь не обязательно жестко определять на сервере);
- Реализованы дополнительные проверки корректности оформления сертификатов при их импорте. Например, теперь не принимаются сертификаты с дробными значениями секунд в полях со временем, сертификаты X.509v1 с уникальным набором идентификаторов, не соответствующих RFC5280, и сертификаты с некорректным номером версии;
- Добавлена функция gnutls_x509_crt_set_flags() для выставления произвольных флагов в структуре crt. В текущем выпуске поддерживается только флаг GNUTLS_X509_CRT_FLAG_IGNORE_SANITY для отключения проверок корректности сертификата при импорте;
- Запрещена обработка сертификатов PKIX с неизвестными критическими расширениями, при попытке использования подобных сертификатов будет выводиться ошибка GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS. Для отключения данного поведения следует указать флаг GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS при вызове функций верификации;
- Запрещена генерация сертификатов с некорректным номером версии или серийным номером, заданными через вызовы gnutls_x509_crt_set_version() и
gnutls_x509_crt_set_serial();
- Обеспечена блокировка выполнения функций gnutls_record_send() и gnutls_record_recv() на стадиях до завершения согласования соединения;
- Добавлена поддержка файлов PKCS#12 хэшем пароля без соли, а также файлов PKCS#12 с хэшами SHA384 и SHA512 в качестве MAC;
- Из списка предлагаемых по умолчанию шифров исключен 3DES-CBC, для его применения следует явно указать "NORMAL:+3DES-CBC";
- Хэш SHA1 помечен как небезопасный для цифровых подписей, процесс верификации сертификатов с SHA1 теперь завершается неудачей, если GnuTLS не собран с опцией "--enable-sha1-support" или в настройках явно не разрешено использование небезопасных алгоритмов;
- Алгоритм RIPEMD160 помечен небезопасный для цифровых подписей;
- По умолчанию на стадии согласования соединения TLS отключена поддержка эллиптических кривых SECP192R1 и SECP224R1, вместо которых рекомендуется использовать x25519 и которые объявлены устаревшими в спецификации TLS 1.3;
- Удалена поддержка DEFLATE и других методов сжатия;
- Удалена поддержка аутентификации OpenPGP, а вместо связанных с openpgp функций поставлены заглушки;
- Удалена поддержка библиотеки libidn (IDNA2003). Допускается сборка gnutls только с libidn2 (IDNA2008);
- Расширены возможности утилиты certtool: добавлена поддержка указания URL PKCS#11 в качестве аргумента опции '--load-ca-certificate', опция '--load-crl' теперь может применяться для генерации файлов PKCS#12, добавлена возможность генерации и обработки ключей и сертификатов на базе RSA-PSS и
Ed25519. Объявлено устаревшим использование параметров "--rsa", "--dsa" и "--ecdsa" совмесно с опцией "--generate-privkey" (следует использовать "--key-type");
- В утилите p11tool опции "--generate-rsa", "--generate-ecc" и "--generate-dsa" заменены на универсальную опцию "--generate-privkey";
- В psktool по умолчанию обеспечена генерация 256-разрядных ключей ;
- В gnutls-server размер буфера запросов увеличен до 16 Кб и добавлены опции "--alpn" и "--alpn-fatal" для тестирования согласования соединений ALPN;
- В набор тестов, применяемых в системе непрерывной интеграции, включен пакет tlsfuzzer, который позволит оперативно выявлять отклонения в поведении реализации TLS между релизами;
- Добавлены новые элементы API:
- gnutls_encode_rs_value
- gnutls_decode_rs_value
- gnutls_base64_encode2
- gnutls_base64_decode2
- gnutls_x509_crt_set_flags
- gnutls_x509_crt_check_ip
- gnutls_x509_ext_import_inhibit_anypolicy
- gnutls_x509_ext_export_inhibit_anypolicy
- gnutls_x509_crt_get_inhibit_anypolicy
- gnutls_x509_crt_set_inhibit_anypolicy
- gnutls_pubkey_export_rsa_raw2
- gnutls_pubkey_export_dsa_raw2
- gnutls_pubkey_export_ecc_raw2
- gnutls_privkey_export_rsa_raw2
- gnutls_privkey_export_dsa_raw2
- gnutls_privkey_export_ecc_raw2
- gnutls_x509_spki_init
- gnutls_x509_spki_deinit
- gnutls_x509_spki_get_pk_algorithm
- gnutls_x509_spki_set_pk_algorithm
- gnutls_x509_spki_get_digest_algorithm
- gnutls_x509_spki_set_digest_algorithm
- gnutls_x509_spki_get_salt_size
- gnutls_x509_spki_set_salt_size
- gnutls_x509_crt_set_spki
- gnutls_x509_crt_get_spki
- gnutls_x509_privkey_get_spki
- gnutls_x509_privkey_set_spki
- gnutls_x509_crq_get_spki
- gnutls_x509_crq_set_spki
- gnutls_pubkey_set_spki
- gnutls_pubkey_get_spki
- gnutls_privkey_set_spki
- gnutls_privkey_get_spki
- gnutls_privkey_import_ext4
- GNUTLS_EXPORT_FLAG_NO_LZ
- GNUTLS_DT_IP_ADDRESS
- GNUTLS_X509_CRT_FLAG_IGNORE_SANITY
- GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS
- GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1
- GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES
- GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS
- GNUTLS_SFLAGS_RFC7919
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.