Разработка 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-портов.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60300