28.02.2024

Представлен SSH3, вариант протокола SSH, использующий HTTP/3

Доступен первый официальный выпуск экспериментальной реализации сервера и клиента для протокола SSH3, оформленного в форме надстройки над протоколом HTTP/3, использующей QUIC (на базе UDP) и TLS 1.3 для установки защищённого канала связи и механизмы HTTP для аутентификации пользователей. Проект разрабатывает Франсуа Мишель (François Michel), аспирант Лувенского католического университета (Бельгия), при участии Оливье Бонавентуры (Olivier Bonaventure), профессора того же университета, известного разработкой подсистемы Multipath TCP и кода сегментной маршрутизации IPv6 для ядра Linux, а также соавтора 10 RFC и черновиков более 60 сетевых спецификаций. Код эталонной реализации клиента и сервера написан на языке Go и распространяется под лицензией Apache 2.0.

Разработка SSH3 стала результатом полного пересмотра протокола SSH, проведённого отдельной группой исследователей независимо от OpenSSH и других проектов, развивающих реализации классического протокола SSH. В SSH3 семантика классического протокола SSH реализована через механизмы HTTP, что позволило реализовать некоторые дополнительные возможности и обеспечить скрытие связанной с SSH-активности среди другого трафика.

При использовании SSH3 сервер неотличим от HTTP-сервера и принимает запросы на 443-сетевом порту (HTTPS), а трафик SSH3 сливается с типовым HTTP-трафиком, что затрудняет проведение атак, связанных со сканированием портов и выявлением SSH-серверов для подбора паролей. Для усложнения совершения атак на серверы SSH3, кроме знания сведений о наличии сервера на заданном IP-адресе, может задаваться секретный путь-идентификатор SSH3-сервера. Без обращения с корректным идентификатором сервер обработает ответы как обычный HTTPS-сервер и не выдаст факт наличия возможности подключения по SSH3. Например, при задании идентификатора «e6ae772cbdaafd6918865cc2ce449dae» подключиться к серверу можно только по URL «https://192.0.2.0:443/e6ae772cbdaafd6918865cc2ce449dae», а если идентификатор указан некорректно, сервер выдаст штатную ошибку «404».

Из расширенной функциональности SSH3 упоминается возможность использования для аутентификации сертификатов X.509 и методов OAuth 2.0/OpenID Connect, помимо классических методов SSH; поддержка перенаправления UDP-портов через SSH-туннель в дополнение к возможности перенаправления TCP-портов (например, для проброса QUIC, DNS и RTP); использование расширенных функций протокола QUIC, таких как миграция соединений без разрыва подключения и установка multipath-соединений для распараллеливания трафика по нескольким маршрутам.

Отдельно выделяется существенное сокращение времени установки соединения при использовании SSH3. При подключении к серверу SSH3 требуется выполнить всего 3 сетевых итерации (Round Trip), в то время как для SSHv2 выполняется 5-7 итераций обмена пакетами. Время реакции на клавиатурный ввод для уже установленных сеансов в SSH3 и SSHv2 находится на одном уровне.

Для шифрования канала связи в SSH3 задействован протокол TLS 1.3, а для аутентификации могут использовать классические методы на базе паролей и открытых ключей (RSA и EdDSA/ed25519). Кроме того, в SSH3 могут применяться методы на основе протокола OAuth 2.0, позволяющие перекладывать аутентификацию на сторонних провайдеров, например, для обеспечения входа с подтверждением через учётные записи в сервисах Google, Microsoft и GitHub. Для подключения к серверам по ключам, помимо SSH-ключей, можно применять сертификаты X.509, используемые для HTTPS.

Опубликованная реализация клиента и сервера SSH3 поддерживает многие базовые возможности OpenSSH, среди которых:

  • Поддержка файла ~/.ssh/authorized_keys с настройками ключей на сервере.
  • Возможность использования файла конфигурации ~/.ssh/config на стороне клиента. В настоящее время поддерживаются параметры Hostname, User, Port и IdentityFile, а остальные игнорируются.
  • Поддержка аутентификации подключения к серверу на базе сертификатов.
  • Поддержка механизма known_hosts (в ситуациях, когда не применяются сертификаты X.509).
  • Поддержка работы клиента с OpenSSH Agent (ssh-agent) и автоматическое использование агента для аутентификации по открытым ключам.
  • Поддержка функции перенаправления через SSH-агент для использования локальных ключей на внешнем сервре.
  • Прямой проброс TCP-портов.

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