Shadowsocks (скорочено SS) — це безкоштовний та відкритий проєкт шифрування, який широко використовується в КНР для обходу інтернет-цензури. Його створив китайський програміст з ніком «clowwindy» у 2012 році, і з того часу було створено кілька реалізацій цього протоколу. Shadowsocks сам по собі не є проксі, але зазвичай виступає як клієнтське програмне забезпечення для підключення до стороннього проксі SOCKS5, схожого на SSH. Після підключення інтернет-трафік можна направити через проксі. На відміну від SSH-тунелю, Shadowsocks також може проксіювати трафік UDP.
Історія Протокол створено китайським програмістом «clowwindy» у 2012 році. 22 серпня 2015 року «clowwindy» оголосив у темі на GitHub, що до нього звернулися співробітники поліції, через що він більше не зможе підтримувати проєкт. Відповідний код проєкту був в подальшому розгалужений з повідомленням про його припинення. Три дні потому, 25 серпня, інша проксі-програма, , також була видалена з репозиторію 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», підтримують Shadowsocks безпосередньо, таким чином уникаючи необхідності в клієнті Shadowsocks, але деякі вимагають наявності клієнта.
Shadowsocks схожий на концепцію протоколу (PT) проєкту Tor. PT ускладнює для інтернет-провайдерів виявлення трафіку Tor. Обидва протоколи також використовують інтерфейс socks-проксі. Різниця полягає в тому, що Shadowsocks простіший, тоді як Obfs4, що використовується в PT, більш прихований. На відміну від Obfs4, Shadowsocks не стійкий до . Найбільш схожим на Shadowsocks є PT Obfs3.
ShadowsocksR
(скорочено SSR) — це відгалуження Shadowsocks, започатковане користувачем з ніком breakwa11, який додав до Shadowsocks деякі методи приховування даних, стверджуючи, що вони виправляють деякі проблеми з безпекою і дозволяють підвищити пріоритет QoS. Пізніше учасник Librehat також виправив деякі з цих функцій в Shadowsocks і навіть додав функцію транспортного рівня, схожу на Tor.
Спочатку ShadowsocksR викликав суперечки через порушення ліцензії на вільне програмне забезпечення і випуску двійкових файлів без публікації початкового коду, що викликало невдоволення у початкового розробника. Згодом ShadowsocksR було переведено автором під ті ж самі ліцензії GPL, Apache, MIT та численні інші ліцензії вільного програмного забезпечення, що й Shadowsocks.
19 липня 2017 року автор ShadowsocksR, breakwa11, на своєму Telegram-каналі ShadowsocksR news поширив новину про те, що в Шеньчжені увімкнули виявлення SS-протоколу, і цю новину поширила велика кількість користувачів, що спричинило паніку. 24 липня breakwa11 випустив програму пасивного виявлення SS із закритим вихідним кодом, що викликало суперечки. 27 липня на breakwa11 було скоєно фізичний напад невідомою особою, яка назвалася «ESU.TV» (恶俗TV) і заявила, що якщо вони не зупинять розробку і не завадять користувачам обговорювати інцидент, вони оприлюднять більше інформації, що містить особисту інформацію. Пізніше breakwa11 заявив, що особа, чия особиста інформація була публічно розкрита іншою стороною, не має до нього відношення. Згодом breakwa11 заявив, що для того, щоб запобігти подальшому нанесенню шкоди не пов'язаним з ними людям, breakwa11 видалить весь код на GitHub, розпустить пов'язані з ним комунікаційні групи і зупинить проєкт ShadowsocksR. Однак проєкт був розгалужений кількома людьми, і дехто продовжує випускати нові версії на його основі, такі як добре відомий shadowsocksrr (SSRR), а також ShadowsocksR-native (SSRoT) під ліцензією GPLv3.
Ідентифікація 21 вересня 2017 року в IEEE була опублікована стаття «The Random Forest based Detection of Shadowsock's Traffic», в якій описується метод виявлення трафіку Shadowsocks за допомогою алгоритму Random Forest і стверджується, що він дозволяє досягти 85 % точності виявлення. Хоча ефективність була поставлена під сумнів користувачами мережі, використання машинного навчання для виявлення особливостей мережевого трафіку було визнано можливим і застосовним до будь-якого протоколу мережевого проксі, а не лише до Shadowsocks.
З травня 2019 року Китай використовує комбінацію пасивного аналізу трафіку та активного зондування для виявлення серверів Shadowsocks. Серед іншого, Великий брандмауер використовує довжину та ентропію для ідентифікації трафіку Shadowsocks. Дослідники запропонували різні способи захисту від атак активного зондування, і Shadowsocks застосував антизондову конструкцію.
Див. також
Виноски
Посилання