# Shadowsocks Протокол [Shadowsocks](https://ru.wikipedia.org/wiki/Shadowsocks), совместимый с большинством других реализаций. Текущая совместимость: - Поддерживает пересылку пакетов TCP и UDP, при этом UDP можно выборочно отключить; - Рекомендуемые методы шифрования: - 2022-blake3-aes-128-gcm - 2022-blake3-aes-256-gcm - 2022-blake3-chacha20-poly1305 - Другие методы шифрования: - aes-256-gcm - aes-128-gcm - chacha20-poly1305 или chacha20-ietf-poly1305 - xchacha20-poly1305 или xchacha20-ietf-poly1305 - none или plain Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полную защиту от повторов, решая следующие проблемы безопасности старого протокола: - [Серьезные уязвимости в шифровании Shadowsocks AEAD, которые не могут гарантировать целостность содержимого](https://github.com/shadowsocks/shadowsocks-org/issues/183) - Возрастающий коэффициент ложных срабатываний исходного фильтра повторов TCP с течением времени - Отсутствие защиты от повторов UDP - Поведение TCP, которое можно использовать для активного зондирования ::: danger При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в общедоступных сетях. ::: ## InboundConfigurationObject ```json { "settings": { "network": "tcp,udp", "method": "aes-256-gcm", "password": "114514", "level": 0, "email": "love@xray.com", "clients": [ { "password": "1919810", "method": "aes-128-gcm" } ] } } ``` > `network`: "tcp" | "udp" | "tcp,udp" Поддерживаемые типы сетевых протоколов. Например, если указано `"tcp"`, будет приниматься только трафик TCP. Значение по умолчанию: `"tcp"`. > `method`: string Метод шифрования, доступные варианты см. выше. > `password`: string Обязательный параметр. - Shadowsocks 2022 Используется предварительный общий ключ, аналогичный WireGuard, в качестве пароля. Используйте команду `openssl rand -base64 <длина>` для генерации ключа, совместимого с shadowsocks-rust, длина зависит от используемого метода шифрования. | Метод шифрования | Длина ключа | | ------------------------------------ | ----------: | | 2022-blake3-aes-128-gcm | 16 | | 2022-blake3-aes-256-gcm | 32 | | 2022-blake3-chacha20-poly1305 | 32 | В реализации Go всегда работают 32-битные ключи. - Другие методы шифрования Любая строка. Длина пароля не ограничена, но короткие пароли более уязвимы для взлома, рекомендуется использовать пароли длиной 16 символов или более. > `level`: number Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. Значение `level` соответствует значению `level` в разделе [policy](../policy.md#levelpolicyobject). Если не указано, используется значение по умолчанию - 0. > `email`: string Адрес электронной почты пользователя, используется для разделения трафика разных пользователей (журналы, статистика). ## ClientObject ```json { "password": "1919810", "method": "aes-256-gcm", "level": 0, "email": "love@xray.com" } ``` Наличие этой опции означает включение многопользовательского режима. Если `method` в InboundConfigurationObject не является опцией SS2022, можно указать `"method"` для каждого пользователя. (`"method"` также поддерживает только опции, не относящиеся к SS2022) и `"password"` (при этом `"password"`, установленный в InboundConfigurationObject, будет игнорироваться). Если `method` в InboundConfigurationObject является опцией SS2022, то из соображений безопасности больше не поддерживается установка `"method"` для отдельных пользователей, используется единый `"method"`, указанный в InboundConfigurationObject. Обратите внимание, что SS2022, в отличие от старого SS, не игнорирует `"password"` верхнего уровня, правильный способ записи пароля клиента: `ServerPassword:UserPassword`. Например: `"password": "114514:1919810"` Остальные опции имеют то же значение, что и в InboundConfigurationObject.