Перейти до вмісту

Shadowsocks

Матеріал з Вікіпедії — вільної енциклопедії.
Shadowsocks
Типкомунікаційний протокол і Internet censorship circumventiond Редагувати інформацію у Вікіданих
Авториclowwindy та спільнота
РозробникиClowwindyd і zonyitood Редагувати інформацію у Вікіданих
ВерсіїWindows: 4.4.1.0 (8 лютого 2022)[1] і macOS: 1.10.2 (29 березня 2023)[2]
ПлатформаAndroid, Linux і Windows Редагувати інформацію у Вікіданих
Операційна системаUNIX-подібні операційні системи, Windows, Android і iOS Редагувати інформацію у Вікіданих
Мова програмуванняPython, Rust, C Sharp, Kotlin, Swift[3], Objective C[3], C[3], Мова програмування Go і C++ Редагувати інформацію у Вікіданих
ЛіцензіяGNU GPL 3[4][5], Apache Software License 2.0d[6][7], MIT[8] і GNU Lesser General Public License, version 3.0[9] Редагувати інформацію у Вікіданих
Репозиторійhttps://github.com/shadowsocks/shadowsocks-rust, https://github.com/shadowsocks/
Вебсайтshadowsocks.org

Shadowsocks (скорочено SS) — це безкоштовний та відкритий проєкт шифрування, який широко використовується в КНР для обходу інтернет-цензури. Його створив китайський програміст з ніком «clowwindy» у 2012 році, і з того часу було створено кілька реалізацій цього протоколу. Shadowsocks сам по собі не є проксі, але зазвичай виступає як клієнтське програмне забезпечення для підключення до стороннього проксі SOCKS5, схожого на SSH. Після підключення інтернет-трафік можна направити через проксі. На відміну від SSH-тунелю, Shadowsocks також може проксіювати трафік UDP.

Історія

[ред. | ред. код]

Протокол створено китайським програмістом «clowwindy» у 2012 році. 22 серпня 2015 року «clowwindy» оголосив у темі на GitHub, що до нього звернулися співробітники поліції, через що він більше не зможе підтримувати проєкт. Відповідний код проєкту був в подальшому розгалужений з повідомленням про його припинення. Три дні потому, 25 серпня, інша проксі-програма, GoAgent(інші мови), також була видалена з репозиторію GitHub. Видалення проєктів привернуло увагу ЗМІ, і новинні видання робили припущення про можливий зв'язок між припиненням розробки протоколу і DDoS атакою на GitHub, яка сталася кілька днів пізніше. Денні О'Брайєн(інші мови) з Electronic Frontier Foundation опублікував заяву з цього приводу.

Незважаючи на припинення підтримки проєкту clowwindy, співавтори продовжили розробку протоколу.

Технічні подробиці

[ред. | ред. код]

Наразі існуючі реалізації протоколу знаходяться в стадії активної розробки на п'яти мовах програмування: С, С++, Rust, Go та Perl (Net::Shadowsocks). Всі вони підтримують як серверний, так і клієнтський режими. Оригінальна реалізація протоколу на Python, створена clowwindy, була видалена з GitHub. Також доступні реалізації тільки для клієнта для Windows (shadowsocks-win), macOS (ShadowsocksX-NG), Android (shadowsocks-android) та iOS (Wingy). Багато клієнтів, включаючи shadowsocks-win та shadowsocks-android, підтримують перенаправлення всього системного трафіку через Shadowsocks, а не тільки тих застосунків, які були явно налаштовані на це, що дозволяє використовувати Shadowsocks як VPN. Якщо застосунок не підтримує проксі-сервери, можна використовувати проксифікатор(інші мови) для перенаправлення застосунка на клієнт Shadowsocks. Деякі проксифікатори, такі як «spp»[10][11], підтримують Shadowsocks безпосередньо, таким чином уникаючи необхідності в клієнті Shadowsocks, але деякі вимагають наявності клієнта.

Shadowsocks схожий на концепцію протоколу Pluggable transport(інші мови) (PT) проєкту Tor. PT ускладнює для інтернет-провайдерів виявлення трафіку Tor. Обидва протоколи також використовують інтерфейс socks-проксі. Різниця полягає в тому, що Shadowsocks простіший, тоді як Obfs4, що використовується в PT, більш прихований. На відміну від Obfs4, Shadowsocks не стійкий до активного зондування(інші мови). Найбільш схожим на Shadowsocks є PT Obfs3.

ShadowsocksR

[ред. | ред. код]
ShadowsocksR
ShadowsocksR для Android
Типкомунікаційні протоколи, обхід цензури в інтернеті(інші мови)
Авториbreakwa11
Розробникиbreakwa11, Librehat
Перший випуск2.3.1.1 3 травня 2015 (10 років)
ВерсіїSSR C#, SSR python manyuser, SSR-libev;
SSR-android; Shadowrocket, Potatso2; ShadowsocksX-NG, ShadowsocksX-R; avege, electron-ssr; Docker[12][13]
Останнє оновлення4.8.0 8 серпня 2017 (8 років)
ПлатформаБагатоплатформність
Операційна системаAndroid, iOS, macOS, Microsoft Windows
Мова програмуванняC, C#, Python, Scala, Swift
Стан розробкине підтримується
Модель кодувідкрите програмне забезпечення
ЛіцензіяGPLv3
Репозиторійshadowsocks-rss[13]
Вебсайтbreakwa11.github.io
ShadowsocksR для Windows

ShadowsocksR(інші мови) (скорочено SSR) — це відгалуження Shadowsocks, започатковане користувачем з ніком breakwa11[14], який додав до Shadowsocks деякі методи приховування даних, стверджуючи, що вони виправляють деякі проблеми з безпекою і дозволяють підвищити пріоритет QoS[15]. Пізніше учасник Librehat також виправив деякі з цих функцій в Shadowsocks і навіть додав функцію транспортного рівня, схожу на Tor[16].

Спочатку ShadowsocksR викликав суперечки через порушення ліцензії на вільне програмне забезпечення і випуску двійкових файлів без публікації початкового коду, що викликало невдоволення у початкового розробника. Згодом ShadowsocksR було переведено автором під ті ж самі ліцензії GPL, Apache, MIT та численні інші ліцензії вільного програмного забезпечення, що й Shadowsocks.

19 липня 2017 року автор ShadowsocksR, breakwa11, на своєму Telegram-каналі ShadowsocksR news поширив новину про те, що в Шеньчжені увімкнули виявлення SS-протоколу, і цю новину поширила велика кількість користувачів, що спричинило паніку. 24 липня breakwa11 випустив програму пасивного виявлення SS із закритим вихідним кодом, що викликало суперечки[17]. 27 липня на breakwa11 було скоєно фізичний напад невідомою особою, яка назвалася «ESU.TV» (恶俗TV) і заявила, що якщо вони не зупинять розробку і не завадять користувачам обговорювати інцидент, вони оприлюднять більше інформації, що містить особисту інформацію[18]. Пізніше breakwa11 заявив, що особа, чия особиста інформація була публічно розкрита іншою стороною, не має до нього відношення. Згодом breakwa11 заявив, що для того, щоб запобігти подальшому нанесенню шкоди не пов'язаним з ними людям, breakwa11 видалить весь код на GitHub, розпустить пов'язані з ним комунікаційні групи і зупинить проєкт ShadowsocksR. Однак проєкт був розгалужений кількома людьми, і дехто продовжує випускати нові версії на його основі, такі як добре відомий shadowsocksrr (SSRR)[19], а також ShadowsocksR-native (SSRoT)[20] під ліцензією GPLv3.

Ідентифікація

[ред. | ред. код]

21 вересня 2017 року в IEEE була опублікована стаття «The Random Forest based Detection of Shadowsock's Traffic», в якій описується метод виявлення трафіку Shadowsocks за допомогою алгоритму Random Forest і стверджується, що він дозволяє досягти 85 % точності виявлення[21]. Хоча ефективність була поставлена під сумнів користувачами мережі, використання машинного навчання для виявлення особливостей мережевого трафіку було визнано можливим і застосовним до будь-якого протоколу мережевого проксі, а не лише до Shadowsocks[22].

З травня 2019 року Китай використовує комбінацію пасивного аналізу трафіку та активного зондування для виявлення серверів Shadowsocks. Серед іншого, Великий брандмауер використовує довжину та ентропію для ідентифікації трафіку Shadowsocks. Дослідники запропонували різні способи захисту від атак активного зондування, і Shadowsocks застосував антизондову конструкцію[23].

Див. також

[ред. | ред. код]

Виноски

[ред. | ред. код]
  1. Release 4.4.1.0
  2. Release v1.10.2 · shadowsocks/ShadowsocksX-NG · GitHub
  3. а б в https://github.com/EvanLi/Github-Ranking/blob/master/Data/github-ranking-2025-07-06.csv — 2025.
  4. https://api.github.com/repos/shadowsocks/shadowsocks-windows
  5. https://api.github.com/repos/shadowsocks/ShadowsocksX-NG
  6. https://api.github.com/repos/shadowsocks/go-shadowsocks2
  7. https://api.github.com/repos/shadowsocks/shadowsocks-go
  8. https://api.github.com/repos/shadowsocks/shadowsocks-rust
  9. https://api.github.com/repos/shadowsocks/shadowsocks-qt5
  10. spp. SourceForge (англ.). 14 серпня 2023. Процитовано 21 липня 2025.
  11. esrrhs (18 липня 2025), esrrhs/spp, процитовано 21 липня 2025
  12. shadowsocks-rss, shadowsocks-rss
  13. а б shadowsocks-rss, breakwa11, архів оригіналу за 15 березня 2017, процитовано 27 червня 2025{{citation}}: Обслуговування CS1: bot: Сторінки з посиланнями на джерела, де статус оригінального URL невідомий (посилання)
  14. breakwa11 (破娃酱). GitHub (англ.). Архів оригіналу за 10 травня 2017. Процитовано 27 травня 2025.
  15. breakwa11.github.io. breakwa11.github.io (zh-cn) . Архів оригіналу за 19 липня 2017. Процитовано 27 травня 2025.
  16. Shadowsocks - Plugin. shadowsocks.org (англ.). Архів оригіналу за 30 вересня 2020. Процитовано 27 травня 2025.
  17. SS被动检测1.0版 · Issue #868 · breakwa11/shadowsocks-rss. GitHub (англ.). Архів оригіналу за 25 липня 2017. Процитовано 27 травня 2025.
  18. 国内网络青年开发翻墙软件遭“人肉”威胁. 普通话主页 (zh-CN) . 25 січня 2018. Процитовано 27 травня 2025.
  19. shadowsocksrr. GitHub (англ.). Процитовано 20 липня 2025.
  20. ShadowsocksR-native. SourceForge (англ.). 20 червня 2024. Процитовано 20 липня 2025.
  21. Deng, Ziye; Liu, Zihan; Chen, Zhouguo; Guo, Yubin (2017-08). The Random Forest Based Detection of Shadowsock's Traffic. 2017 9th International Conference on Intelligent Human-Machine Systems and Cybernetics (IHMSC). 2: 75—78. doi:10.1109/IHMSC.2017.132.
  22. 道高一尺,牆高一丈:互聯網封鎖是如何升級的 | 端傳媒 Initium Media. theinitium.com (zh-hant) . 4 вересня 2015. Процитовано 27 травня 2025.
  23. Shadowsocks. 维基百科,自由的百科全书 (кит.). 14 березня 2025. Процитовано 27 травня 2025.

Посилання

[ред. | ред. код]