TLS 1.3 в OpenSSL теперь поддерживает российские стандарты шифрования

TLS 1.3 в OpenSSL теперь поддерживает российские стандарты шифрования

TLS 1.3 в OpenSSL теперь поддерживает российские стандарты шифрования

Специалисты компаний «Криптонит» и «Криптоком» завершили разработку открытой реализации протокола TLS версии 1.3, обеспечивающего защиту данных с использованием российских криптографических алгоритмов. Она доступна как расширение для OpenSSL 1.1.1.

Протокол TLS используется в браузерах, мессенджерах, клиентах электронной почты, IP-телефонии и другими приложениями для обеспечения конфиденциальности данных, передаваемых через интернет. Версия 1.3 этого протокола определена в международном стандарте RFC8446 и является достаточно «революционной». Благодаря ей внесены существенные модификации в протокол, обеспечивающие одновременно усиление безопасности и улучшение его пользовательских характеристик.

TLS 1.3 позволяет использовать различные алгоритмы шифрования, распределения ключей и цифровой подписи. Конкретный набор криптографических алгоритмов (cipher suites), поддерживаемый обеими сторонами, задаётся на этапе «рукопожатия» (Handshake) — согласования параметров соединения.

Стандарт RFC8446 предусматривает использование в протоколе только зарубежных криптоалгоритмов. В России принято расширение RFC8446 — стандарт Р 1323565.1.030-2020. Его основным отличием является использование российских криптографических алгоритмов и поддержка других режимов работы протокола. Отечественный стандарт определяет 4 криптонабора, каждый из которых использует режим MGM (описан в Р 1323565.1.026) со своими уникальными параметрами.

Режим MGM относится к группе алгоритмов AEAD (аутентифицированного шифрования со связанными данными). В нём используется мультилинейный режим с аутентификацией Галуа, позволяющий одновременно обрабатывать конфиденциальные данные (содержимое сетевых пакетов) и вспомогательные технические (заголовки пакетов). Последние не нужно шифровать, но им требуется обеспечить защиту от модификации (целостность) и проверяемое соответствие зашифрованным фрагментам. Иными словами, MGM защищает от несанкционированных изменений метаданных, передаваемых открытым текстом.

Ранее научно-производственная компания «Криптонит» сообщала о создании на базе OpenSSL 1.1.1 реализации с открытым исходным кодом всех актуальных российских алгоритмов шифрования и режимов их использования, включая режим MGM. Следующим шагом стало обеспечение возможности использования этих алгоритмов в протоколе TLS 1.3.

Основным механизмом расширения функциональности библиотеки OpenSSL в версии 1.1.1 и более ранних является механизм «движка» (engine). Значительный объём российских криптографических алгоритмов доступен в OpenSSL через расширение Gost Engine.

Специалистами компаний «Криптонит» и «Криптоком» были выполнены следующие доработки Gost Engine, а также исходного кода самой библиотеки OpenSSL:

  • добавлен алгоритм кодировки открытого эфемерного ключа в расширении key_share (на этапе Handshake);
  • добавлен алгоритм выработки общего секретного значения ECDHE, при использовании протокола Диффи-Хеллмана;
  • реализован алгоритм TLSTREE, используемый для порождения ключей защиты записей из корневого ключа;
  • доработан механизм согласования алгоритма в расширении signature_algorithms (потребовало правки кода OpenSSL);
  • доработана встроенная система тестов.

«За относительно короткое время после выхода официального стандарта мы сделали open-source реализацию протокола TLS 1.3 с отечественной криптографией. Мне кажется, это хорошая работа и отличный задел на будущее для научного сообщества, разработчиков, а также пользователей, которые должным образом относятся к безопасности своих коммуникаций», — поясняет Александр Спиридонов, руководитель лаборатории информационной и сетевой безопасности НПК «Криптонит».

«Наша компания всегда понимала важность открытых реализаций наряду с сертифицированными, мы считаем, что такой подход способствует расширению рынка для всех его участников», — прокомментировал Дмитрий Кабелев, генеральный директор ООО «Криптоком».

На заключительном этапе согласно методическим рекомендациям ТК26 была проведена проверка полученной реализации протокола TLS 1.3 на контрольных примерах. Дополнительно выполнено её тестирование с использованием формального языка первичных спецификаций криптографических протоколов. Разработанную реализацию протокола TLS 1.3 планируется использовать на стенде тестирования совместимости криптографических средств, также разработанного в НПК «Криптонит».

Параллельно для текущей ветки OpenSSL 3.0 уже ведётся аналогичная работа по внедрению российских стандартов шифрования.

Энтузиаст выпустил скрипт для быстрой установки защищённого MTProxy

Пользователь Хабра под ником aikendo рассказал о развитии собственного проекта MTProxy, опубликованного от имени lingeniare. Несмотря на одинаковые названия, это не официальный прокси-сервер Telegram и не его форк, а сторонний скрипт для автоматической установки и настройки MTProxy.

Автор решил избавить пользователей от ручной компиляции, редактирования конфигураций и других развлечений для тех, кому отчаянно не хватает терминала после работы. На выходе скрипт должен предоставить уже настроенный прокси для Telegram.

После первого релиза проект получил Fake TLS с указанием внешнего домена через параметр --domain. Механизм маскирует прокси-трафик под обычное TLS-соединение и помогает проходить системы глубокого анализа пакетов — DPI.

Архитектуру секретов тоже переработали. Вместо общего файла ключи разных пользователей хранятся раздельно в каталоге /etc/mtproxy/secrets.d. Сам прокси запускается от отдельной системной учётной записи mtproxy, а сервис systemd получил дополнительные ограничения по принципу наименьших привилегий.

Для защиты от перебора и сетевого флуда скрипт добавляет правила iptables с модулем hashlimit. Их можно сохранять после перезагрузки через netfilter-persistent. Интерфейс статистики теперь доступен только локально по адресу localhost:2398, чтобы служебные данные не торчали наружу без необходимости.

За стабильностью следит watchdog на базе таймера systemd: при сбое он перезапускает прокси. Скрипт также настраивает синхронизацию времени по NTP, поскольку рассинхронизация часов может сорвать MTProto-рукопожатие. Опционально доступен сетевой алгоритм BBR.

После установки проект выводит QR-код и прямую ссылку tg://proxy, поэтому подключение не требует ручного переписывания параметров. Исходный код открыт на GitHub.

RSS: Новости на портале Anti-Malware.ru