Представлен значительный выпуск GnuTLS 3.5.0, свободной библиотеки с реализацией протоколов SSL, TLS и DTLS, алгоритмов шифрования (включая AES и Camellia) и функций для работы с различными типами сертификатов и ключей. Ветка 3.5.x подготовлена после года разработки в Git-репозитории и помечена как stable-next, что сигнализирует о достижении качества стабильной ветки, но пока неготовности заменить текущую стабильную ветку 3.4.x, поддержка которой будет продолжена.

Основные новшества:

  • Для DSA, RSA и ECDSA добавлены алгоритмы цифровой подписи на базе SHA3. В утилиту certtool добавлена поддержка создания подписей для сертификатов с использованием SHA3.
  • Добавлена поддержка алгоритма Curve25519 (RFC 7748), предложенного Дэниэлом Бернштейном (D. J. Bernstein). По умолчанию данный алгоритм не активирован, для включения в строке приоритетов следует указать "+CURVE-X25519";
  • Для TLS реализовано расширение False Start (draft-ietf-tls-falsestart-01) для ускорения установки соединения, активируемое через флаг GNUTLS_ENABLE_FALSE_START в gnutls_init();
  • Добавлены новые вызовы API для доступа к средствам генерации параметров RSA и DSA, определённым в FIPS186-4;
  • По умолчанию активирована связка из потокового шифра ChaCha20 и алгоритма аутентификации сообщений (MAC) Poly1305, которая в цепочке приоритетов поставлена вслед за AES-GCM;
  • Добавлена проверка сохранения владельца прежнего сертификата при повторном согласовании соединения (rehandshake), что добавляет дополнительное звено защиты для приложений не делающих подобных проверок;
  • Ужесточён процесс декодирования списка расширений TLS, который теперь не допускает ошибок при разборе содержимого поля с расширениями (ранее при ошибке использовалась типовая структура);
  • Старые и неподдерживаемые номера версий протокола в сообщениях установки соединения теперь приводят к отказу установки соединения;
  • Вызов функций gnutls_session_get_data*() ограничен только для исходных сессий (не возобновлённых);
  • Для возобновления сеанса задействованы требования RFC 7627 (extended master secret);
  • Системные вызовы writev() и select() заменены на sendmsg() и poll();
  • Файл со списком приоритетов теперь загружается при загрузке библиотеки, что позволяет использовать приоритеты и в программах, выполняющих chroot();
  • Приложениям разрешено переопределять URL встроенных ключей и сертификатов;
  • В утилиту certtool добавлены опции "--provable" "--verify-allow-broken";
  • Из базовой поставки удалена утилита crywrap, которая теперь развивается отдельно;
  • Добавлены новые элементы API:
    • GNUTLS_FORCE_CLIENT_CERT;
    • GNUTLS_ENABLE_FALSE_START;
    • GNUTLS_INDEFINITE_TIMEOUT;
    • GNUTLS_ALPN_SERVER_PRECEDENCE;
    • GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING;
    • GNUTLS_E_HANDSHAKE_DURING_FALSE_START;
    • gnutls_check_version_numeric;
    • gnutls_x509_crt_equals;
    • gnutls_x509_crt_equals2;
    • gnutls_x509_crt_set_subject_alt_othername;
    • gnutls_x509_crt_set_issuer_alt_othername;
    • gnutls_x509_crt_get_signature_oid;
    • gnutls_x509_crt_get_pk_oid;
    • gnutls_x509_crq_set_subject_alt_othername;
    • gnutls_x509_crq_get_pk_oid;
    • gnutls_x509_crq_get_signature_oid;
    • gnutls_x509_crl_get_signature_oid;
    • gnutls_x509_privkey_generate2;
    • gnutls_x509_privkey_get_seed;
    • gnutls_x509_privkey_verify_seed;
    • gnutls_privkey_generate2;
    • gnutls_privkey_get_seed;
    • gnutls_privkey_verify_seed;
    • gnutls_decode_ber_digest_info;
    • gnutls_encode_ber_digest_info;
    • gnutls_dh_params_import_dsa;
    • gnutls_session_get_master_secret;


Источник: http://www.opennet.ru/opennews/art.shtml?num=44393