Shadowsocks
Shadowsocks | |
---|---|
![]() | |
![]() | |
Производная работа | ShadowsocksR[вд] |
Разработчик | Clowwindy[вд] и zonyitoo[вд] |
Распространяется | Google Play |
Операционная система | Unix-подобная операционная система, Windows, Android и iOS |
Язык программирования | Python, Rust, C#, Kotlin, Swift, Objective-C, Си, Go и C++ |
Репозиторий исходного кода |
github.com/shadowsocks/s… github.com/shadowsocks/ |
Версия | |
Официальный сайт | shadowsocks.org (англ.) |
Лицензия | GNU GPL 3[3][4], Apache License 2.0[5][6], лицензия MIT[7] и LGPL-3.0[вд][8] |
Правовой статус | защищено авторским правом[вд] |
![]() |
Shadowsocks (сокращенно SS) — зашифрованный протокол передачи данных, основанный на методе прокси SOCKS5. Также термин Shadowsocks может быть применим к различным библиотекам, реализующим этот протокол. В настоящее время существуют различные реализации протокола, разработанные с использованием таких языков программирования, как Python, C, C++, C#, Go, Rust и т. д. Большинство основных реализаций (за исключением платформы iOS) используют лицензии Apache License, GPL, MIT License и другие лицензионные соглашения свободного программного обеспечения для открытия исходного кода. Shadowsocks делится на сервер и клиент. Перед его использованием необходимо развернуть серверную программу на сервере, а затем подключиться и установить локальный прокси через клиент.
В материковом Китае этот инструмент широко используется для прорыва через Великий китайский файрвол (GFW) для просмотра заблокированного контента. 22 августа 2015 года Clowwindy, первоначальный автор Shadowsocks, заявил, что находится под давлением со стороны китайской полиции, и объявил, что прекратит поддержку проекта и удалит исходный код, хранящийся на его личной странице GitHub[9].
История
[править | править код]Shadowsocks был впервые опубликован пользователем V2EX «clowwindy» на форуме в апреле 2012 года.
Передача проекта
[править | править код]22 августа 2015 года его автор Clowwindy заявил на GitHub, что полиция попросила его прекратить разработку проекта Shadowsocks и удалить весь его код два дня назад. После этого автор прекратил поддержку Shadowsocks, а его страница проекта на GitHub была очищена. После выхода новостей многие китайские и иностранные разработчики, а также пользователи Shadowsocks поблагодарили автора на GitHub и отметили страницу проекта, который очистил исходный код. В результате Shadowsocks стал «трендовым проектом» на GitHub в то время.
25 августа ещё один проект GoAgent, используемый для прорыва цензуры в Интернете, также был удален автором. Через несколько часов после удаления GitHub подвергся DDoS-атаке с материкового Китая. Сообщается, что атака была связана с правительством Китайской Народной Республики, поскольку китайское правительство ранее просило GitHub удалить два проекта, которые борются с цензурой в Интернете, но не было принято.
28 августа 2015 года Electronic Frontier Foundation прокомментировал удаление Shadowsocks и GoAgent, выразив «решительное осуждение» репрессий китайского правительства в отношении авторов программного обеспечения, используемого для прорыва интернет-блокад.
Однако журналы репозитория Git показывают, что до его удаления существовало большое количество ответвленных копий проекта, и многие копии по-прежнему поддерживаются пользователями. Поэтому, несмотря на то, что страница проекта Shadowsocks была поражена в этот раз, контент был постепенно восстановлен, и он даже был передан нескольким людям для поддержки в разных версиях. Во всех репозиториях программного обеспечения основных дистрибутивов Linux есть различные пакеты реализации Shadowsocks, которые все ещё обновляются и доступны. Текущие обновления Shadowsocks в основном выполняются этими авторами.
Принцип работы
[править | править код]Принцип работы Shadowsocks в основном такой же, как и у других прокси-инструментов, использующих определённый транзитный сервер для завершения передачи данных. Например, пользователи не могут напрямую получить доступ к Google, но прокси-сервер может получить к нему доступ, и пользователи могут напрямую подключиться к прокси-серверу. Затем пользователи могут подключиться к прокси-серверу через определённое программное обеспечение, а затем прокси-сервер получает содержимое веб-сайта и передает его обратно пользователю, тем самым достигая эффекта прокси-доступа в Интернет. Программное обеспечение сервера и клиента потребует пароль и метод шифрования, и соединение может быть успешным только после согласия обеих сторон. После подключения к серверу клиент обычно создает локальный прокси Socks5 на локальной машине (но он также может быть встроен в VPN, прозрачный прокси и т. д.). При просмотре сети клиент собирает сетевой трафик через этот прокси Socks5 (или другие формы), а затем отправляет его на сервер после обфускации и шифрования, чтобы предотвратить идентификацию и перехват сетевого трафика, и наоборот.
Особенности
[править | править код]Shadowsocks использует собственный протокол для зашифрованной связи. Алгоритмы шифрования включают AES-GCM, ChaCha20-Poly1305, 2022-BLAKE3-AES-GCM и т. д. Не требуется никакого рукопожатия, за исключением установления TCP-соединения. Для каждого запроса пересылается только одно соединение, и нет необходимости поддерживать состояние «всегда подключено». Поэтому он относительно экономичен на мобильных устройствах.
Весь трафик шифруется алгоритмом, а алгоритм шифрования можно выбрать самостоятельно.
Shadowsocks работает через асинхронный ввод-вывод и управляемые событиями программы и имеет высокую скорость отклика. Клиент охватывает несколько основных операционных систем и платформ, включая Windows, macOS, Android, Linux, iOS-системы и маршрутизаторы (OpenWrt) и т. д.
Безопасность
[править | править код]Clowwindy сказал, что Shadowsocks изначально был разработан для «самостоятельного использования» и «преодоления брандмауэра», а не для обеспечения криптографической безопасности. Поэтому протокол шифрования, разработанный Shadowsocks, ограничен предварительно предоставленными ключами для аутентификации обеих сторон, и нет полной прямой секретности. Ни один эксперт по безопасности никогда публично не анализировал и не оценивал протокол и его реализацию.
Прокси-сервер шифрования socks написан на Python. Метод шифрования очень прост, но его достаточно, чтобы обмануть GFW.
— clowwindy
Цель Shadowsocks — не предоставить полный механизм безопасности связи, а в основном помочь интернет-пользователям прорваться через блокаду в жесткой сетевой среде. Он не может заменить TLS или VPN.
Методы шифрования AEAD (AES-GCM, Chacha20-poly1305) были предложены в SIP004 и реализованы в SIP007. Считается, что эти методы шифрования обеспечивают криптографическую безопасность («конфиденциальность, целостность, доступность»). Ранее неаутентифицированные методы шифрования, такие как AES CFB, AES CTR, RC4 и Chacha20, все ещё допускались в некоторых реализациях[17]. Shadowsocks-windows удалил поддержку методов шифрования, отличных от AEAD.
Shadowsocks много раз упоминался из-за проблем с дизайном протокола и риска активного обнаружения.
Плагины
[править | править код]Shadowsocks поддерживает плагины в предложении SIP003. Плагины позволяют запутывать, шифровать или иным образом обрабатывать трафик Shadowsocks с помощью различных плагинов. В настоящее время наиболее часто используемые плагины включают v2ray-plugin, simple-obfs и т. д.
Реализация
[править | править код]В настоящее время Shadowsocks имеет несколько реализаций, основные из которых выпущены как бесплатное программное обеспечение.
Идентификация
[править | править код]21 сентября 2017 года в IEEE была опубликована статья под названием «The Random Forest Based Detection of Shadowsock’s Traffic». В статье был представлен метод обнаружения трафика Shadowsocks с помощью алгоритма случайного леса и заявлено, что точность обнаружения составляет 85 %. Хотя эффективность статьи была подвергнута сомнению пользователями сети. Однако использование машинного обучения для определения характеристик сетевого трафика считается осуществимым и применимым к любому сетевому прокси-протоколу, а не только к Shadowsocks.
С мая 2019 года Китай использует комбинацию пассивного анализа трафика и активного обнаружения для определения серверов Shadowsocks. Среди них Great Firewall использует длину и энтропию для определения трафика Shadowsocks. Исследователи предложили различные защиты от атак активного обнаружения, и Shadowsocks приняла дизайн антиобнаружения.
См. также
[править | править код]Примечания
[править | править код]- ↑ Release 4.4.1.0
- ↑ Release v1.10.2 · shadowsocks/ShadowsocksX-NG · GitHub
- ↑ https://api.github.com/repos/shadowsocks/shadowsocks-windows
- ↑ https://api.github.com/repos/shadowsocks/ShadowsocksX-NG
- ↑ https://api.github.com/repos/shadowsocks/go-shadowsocks2
- ↑ https://api.github.com/repos/shadowsocks/shadowsocks-go
- ↑ https://api.github.com/repos/shadowsocks/shadowsocks-rust
- ↑ https://api.github.com/repos/shadowsocks/shadowsocks-qt5
- ↑ O'Brien, Danny. Speech that Enables Speech: China Takes Aim at Its Coders (англ.). 电子前哨基金会. Дата обращения: 28 мая 2016. Архивировано 24 июня 2016 года.
![]() | В другом языковом разделе есть более полная статья Shadowsocks (кит.). |