Кінець епохи. Skype нарешті закривається назавжди.
Що відбувається, коли ви натискаєте синю кнопку виклику? Більшість користувачів Skype, кількість яких колись сягала сотень мільйонів, ніколи не замислювалися над цим питанням. Магія просто спрацювала. З'єднання утворилося між континентами, через брандмауери, повз корпоративні системи безпеки, забезпечуючи кришталево чистий зашифрований зв'язок, коли інші технології не спрацьовували.
Але для декого з нас ці чорні скриньки технологій є непереборними загадками, які так і просяться назовні, щоб їх розгадати.
Людина за клавіатурою
“Чим ти насправді займаєшся?” Це питання я отримував незліченну кількість разів, навіть від членів сім'ї, і на нього я рідко можу дати вичерпну відповідь.
Деякі з вас, можливо, знають мене за моєю роботою над Цикада 3301 головоломка у 2012 роціті криптовалютні інтернет-загадки, які полонили найяскравіші уми світу. Інші можуть впізнати мене за моїми публічними дослідженнями в галузі безпеки: виступами про методи експлуатації ядра на конференціях BlackHat і Defcon, презентацією “Зламати хакера” на конференції RSA, або, можливо, за моєю появою в документальному фільмі Netflix про злом Ешлі Медісон, де я очолював технічне розслідування.
Ми з командою об'їздили весь світ, беручи участь у фіналах міжнародних хакерських змагань - від Codegate у Південній Кореї до DefCamp у Румунії та Defcon у Лас-Вегасі. Я відмовився від більшої кількості можливостей виступити, ніж можу пригадати.
Але ці громадські зусилля, якими б складними вони не здавалися, завжди були дитячими іграми порівняно з проектами, в яких я брав участь, де на кону стояли питання національної безпеки. Ця робота - по-справжньому захоплююча робота - залишається значною мірою засекреченою, існуючи лише у вигляді відредагованих розділів у нікому не відомих звітах.
Важливість цієї прихованої роботи не залишилася непоміченою супротивниками. Лише кілька років тому я став мішенню північнокорейських державних хакерів, причому не один раз, а двічі, під час їхніх скоординованих кампаній проти дослідників безпеки наприкінці 2020 року і знову у 2021 році. На щастя, обидві спроби виявилися марними.
Те, чим я збираюся поділитися, - це рідкісний погляд на цей інший світ - той, що існує в тіні технологій. Як і у випадку з Cicada 3301, ця подорож мала багато шарів, поворотів і звивин. Однак, на відміну від тих головоломок, цей виклик вимагав набагато більше технічних здібностей і наполегливості, а його реальні наслідки виходили далеко за межі інтелектуальної цікавості.
Зі зрозумілих причин багато деталей мають залишатися в таємниці. Але далі я, мабуть, дам найближчу відповідь на це постійне запитання, яке мене не полишає: “Чим ви насправді займаєтеся?”
Перший контакт
У 2004 році Skype був революційним: комунікаційна система, яка, здавалося, кидала виклик загальноприйнятим правилам роботи в мережі. Вона могла встановлювати зв'язок між комп'ютерами, які не повинні були зв'язуватися один з одним, обіцяла шифрування, яке ніхто не міг зламати, і зберігала свої секрети за шарами складного захисту.
Раніше це було надсекретно, але зараз, я вважаю, це вже не має значення. Принаймні, коли йдеться про технічні аспекти, пов'язані з тим, чому я так близько познайомився зі Skype.
Я почав займатися реінжинірингом Skype у 2004 році, трохи більше 20 років тому. У них був власний нібито зашифрований протокол, і вони використовували різні методи, щоб значно ускладнити життя будь-кому, хто хотів зазирнути всередину.
У Skype мене привабила не лише технічна цікавість. Було щось майже зухвале в тому, наскільки ретельно вони заблокували свою систему, ніби кидаючи виклик тим з нас, хто вважає, що розуміння того, як працює наша технологія, є фундаментальним правом. У світі, який дедалі більше будується на закритих системах, Skype являв собою кодову фортецю, якій мільйони людей довіряли свої найпотаємніші комунікації, не знаючи, що відбувається під її поверхнею.
Щоразу, коли я чула характерний рингтон Skype, я не могла не задаватися питанням: що ж насправді відбувається за цим дружнім інтерфейсом? Які механізми працюють, передаючи голоси та повідомлення через цифрові простори? І, можливо, найголовніше - чи було це так безпечно, як усі вважали?
Я не знав, що потягнувши за цю нитку, я розплутаю технологічний гобелен, складніший і геніальніший, ніж я міг собі уявити. На це піде незліченна кількість годин протягом багатьох років досліджень, які приведуть мене в саме серце того, що на той час було найскладнішою у світі піринговою системою зв'язку.
Це історія про те, як я розкрив одну з найбільш ретельно охоронюваних таємниць інтернету, одну інструкцію зі збірки за одною.
Прориваючись крізь перший шар
Моє перше знайомство з внутрішнім устроєм Skype було схоже на відкриття російської матрьошки. За кожним шаром ховалася інша, більш складна проблема.
Як і у випадку з більшістю захищених програм, зовнішній захист Skype має форму спеціального “пакувальника” - програми, яка стискає і шифрує фактичний виконуваний код, розгортаючи його лише під час запуску. Це цифровий камуфляж, покликаний відвернути увагу допитливих очей, таких як мої.
Пакувальник використовував самомодифікуючий код - техніку, коли програма буквально переписує частини себе під час роботи. Це як документ, який змінює свій вміст, щойно ви намагаєтеся його прочитати - елегантно, але розчаровує того, хто намагається зрозуміти, що лежить під ним.
На щастя, цей перший захисник мав слабке місце. Встановивши апаратну точку зупинки - спеціальну інструкцію, яка призупиняє виконання в певний момент, не змінюючи жодного коду, - я міг терпляче чекати, поки процес розпакування завершиться. Коли Skype повністю “розпакував” себе в пам'ять, я зміг вивантажити розшифрований код і сегменти даних для аналізу.
Цифрове сховище тріснуло настільки, що можна було зазирнути всередину. Я переніс дамп пам'яті в IDA Pro, стандартний на той час дизасемблер. Це був 2004 рік, тож я дивився на сирий асемблерний код - найфундаментальнішу мову, якою розмовляють комп'ютери. Жодного зручного перекладу на мови програмування вищого рівня, жодних корисних абстракцій. Лише голі інструкції, загадкові та численні.
Те, що мало стати моментом тріумфу, швидко змінилося протверезним усвідомленням. Чистий, розшифрований бінарний код виявив вибіркове, але витончене заплутування. Хоча більшу частину коду можна було “прочитати” з достатнім терпінням, певні критичні секції - а саме найцікавіші - були захищені шарами навмисної плутанини.
Розробники використовували такі прийоми, як непрозорі предикати та інструкції, що перекриваються, які призводили до збоїв лінійних дизасемблерів, які неправильно інтерпретували, що є кодом, а що - даними. Сотні функцій, задіяних у криптографічних операціях, були особливо добре захищені, що свідчить про їхню важливість.
Проблему ускладнювала сама природа C++ - лабіринт непрямих викликів, таблиць віртуальних функцій та складних ієрархій об'єктів. Відновлення того, які методи належать до яких класів і що представляє кожне поле в їхніх структурах, вимагало відображення незліченних шляхів виконання в цьому навмисно заплутаному ландшафті.
Це було не просто програмне забезпечення; це було програмне забезпечення, розроблене людьми, які очікували, що хтось на кшталт мене прийде його шукати. І вони навмисно укріпили найцінніші частини своєї цифрової фортеці.
Коли я прокручував тисячі інструкцій зі збірки, я зрозумів: пакувальник був лише швейцаром. Справжні охоронці секретів Skype були всередині, і вони стежили за кожним моїм кроком.
Однак це був лише початок...
У кролячу нору
Після того, як зовнішня оболонка Skype була зламана, я наважився заглибитися в його цифровий лабіринт. Я виявив систему безпеки, яка не просто захищала - вона активно давала відсіч.
Як будь-який обережний дослідник, я взяв із собою свій улюблений інструмент: відладчик - програмне забезпечення, яке дозволяє призупинити виконання коду і дослідити його стан. Але Skype передбачив такий підхід. Він був пронизаний заходами проти налагодження, цифровими розтяжками, призначеними для виявлення і перешкоджання інструментам аналізу.
Більшість з цих контрзаходів були стандартними у світі захисту програмного забезпечення - дратівливими, але керованими. Але потім я зіткнувся з чимось набагато складнішим: сотнями незрозумілих поліморфних перевірок цілісності, розкиданих по всьому коду.
Уявіть собі міни-пастки, які не лише виявляють, коли ви їх порушили, але й активно змінюють свій вигляд після кожної зустрічі. Ці перевірки постійно перевіряли, що код Skype залишився незмінним, обчислюючи контрольні суми в різних частинах програми. Щойно я намагався щось змінити - навіть тимчасово поставити точку зупинки - програма ефектно виходила з ладу.
Що робило ці перевірки цілісності особливо підступними, так це їхній дизайн. Коли така перевірка спрацьовувала, вона не просто виводила повідомлення про помилку. Замість цього програма продовжувала працювати з пошкодженими даними, спричиняючи збій в іншому місці, далеко від фактичної точки втручання. Цифровий еквівалент міни уповільненої дії.
Ще більш підступно: кожна перевірка не просто перевіряла цілісність коду - вона використовувала результат контрольної суми як фактичне значення в наступних операціях. Це означало, що я не міг просто відключити перевірки; мені довелося замінити їх кодом, який видавав точні очікувані значення.
Після виявлення та виправлення однієї перевірки спрацьовувала інша. Потім ще один. І ще одна. Сотні цих незрозумілих поліморфних виродків були розкидані по всьому коду, і боротьба з ними по черзі забирала б неймовірно багато часу. Це був класичний сценарій Whack-a-Mole, за винятком того, що робота з кожною родимкою вимагала хірургічної точності.
Я повинен був посилити свою гру. Забудьте про ’Вдар крота", я збирався зробити це в стилі покемонів: Зловити їх усіх!
Я створив спеціалізований інструмент - мінімальний дизасемблер у поєднанні з крихітним емулятором - розроблений спеціально для розпізнавання та нейтралізації цих перевірок. Замість того, щоб обробляти кожну можливу інструкцію процесора, я ретельно виділив і реалізував лише певну підмножину інструкцій, що використовуються у перевірках цілісності. Визначивши характерні шаблони цих інструкцій, я міг автоматично сканувати всю ділянку коду, емулювати кожну перевірку, щоб визначити її очікуваний результат, і замінити її простою інструкцією, яка надавала необхідне значення.
Це було схоже на створення вакцини проти імунної системи Skype, навчивши її приймати мою присутність без запуску захисних механізмів.
Мій інструмент працював чудово. Одним махом він нейтралізував сотні перевірок цілісності, замінивши складний код перевірки простими присвоєннями значень. Тепер я міг не лише вільно налагоджувати програму, але й вставляти свій власний код, щоб спостерігати за внутрішньою роботою Skype і маніпулювати нею.
Більше того, завдяки тому, що я зробив інструмент настільки сфокусованим та ефективним, він виявився достатньо малим, щоб згодом його можна було вбудовувати безпосередньо у корисне навантаження експлойтів для виправлення помилок у пам'яті, а не лише для статичної модифікації бінарних кодів.
Захисні бар'єри впали, відкриваючи наступний рівень лабіринту: власний протокол і криптографічна система Skype. Ще одна таємниця, яка чекає на розгадку.
Мистецтво цифрової археології
Коли захист Skype було нейтралізовано, почалася справжня археологія. Подібно до дослідника, який відкриває стародавню цивілізацію, мені потрібно було зрозуміти, як функціонує цей цифровий світ, вивчаючи його артефакти.
Сучасні реверс-інженери мають розкіш, якої я не мав у 2004 році: складні декомпілятори, які перетворюють машинний код на читабельну мову програмування. Тоді процес був набагато більш ручним - переклад інструкцій збірки у концепції вищого рівня, рядок за рядком, кропітка реконструкція складних структур даних і відображення взаємозв'язків функцій.
Це як отримати книгу, написану мертвою мовою, де кожне слово може представляти цілу концепцію, і вам потрібно реконструювати не лише текст, але й граматику та культурний контекст, що стоїть за ним.
Через кілька років, коли вийшла перша версія декомпілятора Hex-Rays для IDA Pro, я мав честь бути одним з бета-тестерів перед випуском. Це було переломним моментом для спільноти реверс-інженерів - раптом те, що займало дні, можна було зробити за кілька годин. Я був у захваті - це було схоже на те, що мені вручили Розеттський камінь після багатьох років ручного перекладу. Але в 2004 році про такі інструменти все ще можна було тільки мріяти.
Стандартні інструменти не підходили. Мені потрібно було щось, пристосоване саме до особливостей Skype. Тому я створив не один, а два кастомних налагоджувача Skype - один для Windows, а інший для Linux - інструменти, призначені для відповіді на мої конкретні запитання під час навігації лабіринтами коду Skype.
Мій підхід був методичним. По-перше, я вставив хуки в усі внутрішні функції реєстрації Skype - код, який перенаправляв ці функції до мого власного коду. Це дозволило виявити повідомлення, які ніколи не повинні були з'явитися на світ, і налагодити інформацію, яку залишили розробники. Особливо цінною виявилася версія Skype для Linux, яка містила більш багатослівні журнали, ніж її аналог для Windows.
Ці кастомні інструменти дали мені безпрецедентну видимість. Я міг би:
- Відстежувати виклики функцій за допомогою вбудованих батутних хуків, перенаправляючи їх у власний код
- Маніпулюйте параметрами та повертайте значення для перевірки гіпотез
- Перехоплення викликів зовнішніх бібліотек за допомогою LD_PRELOAD або IAT-виправлень
- Встановлення цільових точок зупинки для перевірки або маніпулювання регістрами та вмістом пам'яті в певні моменти часу
Щоразу, коли я розширював свій інструментарій, я отримував нові інсайти. Кожне осяяння призводило до нових запитань, а ті - до нових інструментів, створюючи замкнене коло відкриттів.
Але це було не просто спостереження за тим, як крутяться шестерні. Моя мета була комплексною: задокументувати фактичний протокол, який використовував Skype, зрозуміти його криптографічні примітиви і, зрештою, самостійно взаємодіяти з мережею Skype.
У міру того, як моє розуміння зростало, зростала і моя карта внутрішньої структури Skype. Функція за функцією, структура даних за структурою даних, я реконструював план системи, яка ніколи не була задокументована публічно. Кожен шматочок пазлу відкривав все більше і більше загальної картини: як Skype з'єднував користувачів через Інтернет, обходив брандмауери і забезпечував безпеку комунікацій.
Методи, які я розробляв, виявилися особливо цінними на пізніших етапах мого розслідування. Наприклад, пізніше я виявив, що сканування масиву пам'яті Skype на наявність розширених ключів AES - криптографічних ключів, які використовуються для захищеного зв'язку, - було відносно простим завдяки їхнім характерним шаблонам. Це стало вирішальним, коли мені потрібно було перехопити нібито безпечні розмови.
Я вже не просто підглядав у замкову щілину - я йшов залами архітектури Skype, відчиняючи двері, які мали б залишатися зачиненими.
Проривні моменти
Чим глибше я занурювався в архітектуру Skype, тим більше захоплюючих відкриттів робив. Кожен прорив був схожий на розв'язання головоломки, яка відкривала ще один, більш складний пазл всередині.
Одне з найважливіших відкриттів сталося, коли я дізнався, як Skype шифрував свій сигнальний рівень - трафік між користувачами і супервузлами, а також між самими супервузлами. На відміну від наскрізного шифрування, яке використовується для дзвінків і повідомлень, на цьому рівні використовувався RC4, потоковий шифр з відомими слабкими місцями. Ще цікавіше було те, як генерувалися ключі RC4.
Замість того, щоб використовувати належний обмін ключами, Skype отримував ключі за допомогою детермінованого, але дуже заплутаного алгоритму. Процес починався з 32-бітового випадкового ключа, надісланого супервузлом-одержувачем. Цей ключ був переданий сотням маленьких, прихованих функцій, кожна з яких виконувала різні порозрядні та арифметичні операції над буфером ключів.
Особливо складним було те, що сам потік виконання - які функції викликаються і в якому порядку - залежав від значення seed. Це означало, що не можна було просто створити пласке представлення операцій, яке б працювало для будь-якого значення seed. Шлях алгоритму через ці функції динамічно змінювався залежно від вхідних даних, створюючи лабіринт, стіни якого зсувалися з кожним новим елементом.
Складність була вражаючою. І хоча я врешті-решт здійснив реінжиніринг всього алгоритму - відобразив кожну функцію і шлях потоку управління - це був поступовий і трудомісткий процес ретельного аналізу. Але мені не потрібно було чекати повної картини, щоб досягти значного прогресу. Працюючи над повним розумінням, я створив те, що назвав “оракул ключа RC4” - сервіс, який приймав на вході 32-бітне насіння і повертав повний ключ RC4, викликаючи функцію отримання ключа з оригінального бінарного файлу Skype.
Цей оракул став основою для мого наступного прориву: спеціального плагіна для Ethereal (тепер відомого як Wireshark), аналізатора мережевих протоколів. За допомогою мого плагіна я міг розшифровувати і аналізувати весь сигнальний трафік в мережі Skype в режимі реального часу. Раптом невидиме стало видимим.
Коли Ethereal змінив назву на Wireshark у 2006 році, я підтримав і оновив свій плагін відповідно. Це був не просто одноразовий інструмент - він став частиною мого аналітичного арсеналу на довгі роки.
Пізніше я розробив подібні аналізатори протоколів для інших розслідувань, зокрема для реінжинірингу RAT (троянських програм для віддаленого доступу), які використовувалися для атак на політичні та стратегічні об'єкти, що фінансувалися державами. Ця робота вийшла за рамки простого розуміння їхніх протоколів - я також виявив вразливості в цих інструментах і розробив експлойти, які дозволили нам фактично “зламати хакерів”, обернувши їхні власні інструменти проти них. Я представив результати цієї роботи на конференції RSA у 2008 році у своїй доповіді “Зламати хакера”, через кілька років після того, як відбулися ці атаки.
Я досі пам'ятаю, як вперше побачив розшифрований протокол Skype, що з'явився у моєму спеціальному вікні Ethereal. Повідомлення, які колись були тарабарщиною, на моїх очах перетворилися на структуровані дані. Пошук користувачів, запити на з'єднання, інформація про топологію мережі - всі механізми, які робили Skype нібито непроникною мережевою функцією, тепер були відкриті.
Вміння читати протокол було лише початком. Логічним наступним кроком було розмовляти ним самостійно. Розуміючи, як спілкується Skype, я розробив окремі інструменти, які могли безпосередньо взаємодіяти з мережею Skype. Однією з особливо корисних можливостей, яку я відкрив, була можливість шукати поточну IP-адресу будь-якого користувача Skype, просто знаючи його ім'я користувача. Це мало важливе значення - потенційно її можна було використовувати для відстеження місцезнаходження людини або вивчення векторів атак, не пов'язаних зі Skype, в їхньому мережевому середовищі.
Кожне наступне відкриття ґрунтувалося на попередньому. Те, що починалося як сфокусоване технічне розслідування, перетворилося на щось більш тверезе: визнання того, що ця система зв'язку, якій довіряють мільйони, містить вразливості, які можна використати. Не просто теоретичні слабкості, а практичні вектори атак, якими міг скористатися той, хто мав достатньо знань і рішучості.
Ключовим моментом стало виявлення вразливостей пошкодження пам'яті в сигнальному рівні. Це були не просто баги - це були потенційні шлюзи для віддаленого виконання коду. Доклавши достатньо зусиль, зловмисник міг отримати повний контроль над клієнтом Skype, а користувач навіть не здогадувався про це.
Складним і необхідним кроком було з'ясувати, як використати ці вразливості, не виводячи з ладу клієнт Skype. Це вимагало делікатних маніпуляцій з пам'яттю - очищення після експлойту та відновлення всього, що було перезаписано, щоб програма могла продовжувати працювати так, ніби нічого не сталося.
Коли мені нарешті вдалося це зробити, наслідки були зрозумілими і тривожними. Ця можливість могла обійти будь-який захист периметра, отримати доступ до комп'ютера користувача і підтримувати цей доступ непомітно. І все це через зашифрований канал, який не могла перевірити жодна система безпеки.
Це вже не було просто реінжинірингом. Це було відкриттям цифрового скелетного ключа.
Виявлено приховані закономірності
Коли моя карта внутрішньої архітектури Skype стала більш повною, я почав розуміти не лише те, як вона працює, але й те, чому вона була спроектована саме так - і що це означає для мільйонів користувачів по всьому світу.
Блиск початкового мережевого дизайну Skype полягав у його справжній піринговій природі. Те, що здавалося користувачам простим додатком для обміну повідомленнями, насправді було складною розподіленою системою. Будь-який клієнт Skype міг бути непомітно приєднаний до “супервузла”, якщо він мав публічну IP-адресу і достатню пропускну здатність. Ці супервузли становили основу пов'язаних між собою мережевих ретрансляторів, які обробляли запити користувачів і керували з'єднаннями між звичайними клієнтами.
Ця архітектура вирішила фундаментальну проблему інтернет-комунікації. Коли двоє користувачів хотіли з'єднатися, навіть якщо вони перебували за корпоративними брандмауерами або складними налаштуваннями NAT, Skype майже завжди міг встановити з'єднання. Якщо прямі шляхи були недоступні, трафік передавався через ці супервузли, створюючи віртуальні тунелі крізь інтернет-перешкоди.
Система була елегантною, стійкою і майже повністю непомітною для користувачів. Ви ніколи не знали, що ваш клієнт Skype став супервузлом, який безшумно маршрутизує спроби підключення незнайомців. Ви ніколи не знали, чи потрапляли ваші дзвінки безпосередньо до вашого друга, чи перенаправлялися через чужий комп'ютер через півсвіту.
Творці Skype утримували парк власних супервузлів для забезпечення пропускної здатності мережі, але вони були технічно ідентичні супервузлам, якими керували користувачі. Така децентралізація зробила систему надзвичайно стійкою до збоїв або атак - не було жодної точки відмови.
Але ця архітектура мала глибокі наслідки, про які більшість користувачів ніколи не замислювалися.
По-перше, хоча весь вміст повідомлень і дзвінків наскрізно шифрувався за допомогою AES, структура мережі створювала природні точки спостереження. Будь-який комп'ютер, що виконував роль супервузла, міг спостерігати шаблони з'єднань і метадані - хто, з ким, коли і як довго розмовляв.
Коли Microsoft придбала Skype у 2012 році, вона докорінно змінила цю архітектуру. Звичайні клієнти більше не могли ставати супервузлами; натомість сервери, контрольовані Microsoft, перебрали на себе всі функції ретрансляції та пошуку. Така централізація означала, що одна організація тепер контролювала всю топологію мережі і могла відстежувати всі шаблони з'єднань.
Для користувачів, які піклуються про конфіденційність, це було значним зрушенням. Хоча вміст залишався зашифрованим, Microsoft тепер мала технічну можливість спостерігати за всіма метаданими з'єднання. І якщо вони захочуть, то зможуть гарантувати, що трафік до певних користувачів або від них завжди спрямовуватиметься через їхні сервери.
Ті самі архітектурні особливості, які зробили Skype таким ефективним - його здатність встановлювати з'єднання там, де інші програми не змогли, його зашифровані канали, які обходять брандмауери, - також зробили його ідеальним вектором для цілеспрямованих атак.
Розгортаючи модифіковані клієнти супервузлів, зловмисник міг позиціонувати себе в мережі Skype для перехоплення з'єднань. Використовуючи вразливості в сигнальному рівні, він міг скомпрометувати клієнт жертви без її відома. А видобувши сеансові ключі, вони могли безшумно контролювати нібито приватні комунікації.
Як і багато разів раніше, це стало наочним прикладом неприємної правди: великий розрив між сприйняттям безпеки та реальністю. Мільйони користувачів довіряли Skype свої найбільш конфіденційні повідомлення, вірячи в обіцянки шифрування щодо конфіденційності, навіть не підозрюючи, що сама архітектура системи створює точки вразливості, які можуть бути використані тими, хто має достатні технічні знання.
Система не була зламана - вона працювала саме так, як було задумано. Але цей дизайн, коли його повністю зрозуміли, виявив компроміси між зручністю і безпекою, про які користувачам ніколи не повідомляли. Після відкриття "чорної скриньки" виявилися сюрпризи, які поставили серйозні питання про цифрову приватність і довіру.
Роздуми
Минуло двадцять років відтоді, як я вперше почав розгадувати таємниці Skype. За цей час ми стали свідками значних змін у способах спілкування. Сам Skype перетворився з революційної пірингової системи на чергову корпоративну платформу для обміну повідомленнями, перш ніж остаточно застарів.
Подорож, яку я описав, - це незліченна кількість годин ретельної роботи - годин, проведених за вивченням інструкцій зі збирання, створенням спеціальних інструментів, перевіркою гіпотез і поступовим складанням пазла. Те, що почалося як технічна цікавість, перетворилося на щось більш глибоке: вікно у складні відносини між технологіями, приватністю та владою.
Для мене це дослідження відкрило фундаментальну істину про наш цифровий світ: системи, яким ми найбільше довіряємо, часто є тими, які ми розуміємо найменше. Ми кладемо наші найпотаємніші розмови в чорні скриньки, довіряючи ярликам на кшталт “зашифрований” і “безпечний”, не задаючись питанням, що ці твердження означають на практиці.
Початкова архітектура Skype була блискуче розроблена для забезпечення стійкості та зв'язку, але ця ж архітектура ненавмисно створила вектори для стеження та атак. Ті самі функції, які зробили його революційним - здатність обходити брандмауери, зашифровані канали, розподілена природа - можуть бути використані проти його користувачів тими, хто має достатні знання і ресурси.
Ця подвійність існує майже в усіх технологіях. Те саме шифрування, яке захищає журналістів і дисидентів, також захищає кримінальні комунікації. Ті самі вразливості, які уможливлюють легітимні дослідження у сфері безпеки, можуть бути використані для стеження чи саботажу. Ті самі знання, що надають можливості, можуть також становити загрозу.
Я завжди твердо вірив у право кожної людини на приватність. Я виступаю проти масового стеження в усіх його формах, особливо санкціонованого урядом, яке неминуче послаблює безпеку для всіх. Але я також визнаю, що ми живемо в складному світі, де загальні принципи іноді стикаються з нагальними реаліями. Бувають моменти, коли цілеспрямований доступ до комунікацій може запобігти величезній шкоді.
Можливості, які я розробив під час реінжинірингу Skype, могли бути використані по-різному. Вони могли б уможливити широкомасштабні порушення приватності, якби були розгорнуті в масштабах. Вони могли б поставити під загрозу безпеку незліченної кількості користувачів. Але вони також могли бути використані з хірургічною точністю для доступу до комунікацій тих, хто планував заподіяти шкоду, що потенційно могло б врятувати життя.
Усім, хто працює у сфері наступальної безпеки, особливо тим, хто розвиває потенціал для національних держав, я пропоную ці роздуми: Ретельно обирайте своїх клієнтів. Знання, які ви отримуєте, і інструменти, які ви створюєте, несуть у собі величезну силу - силу захищати або йти на компроміс, захищати або експлуатувати. Ця сила приходить з відповідною відповідальністю.
Коли Skype нарешті вимкнувся назавжди, мене охопило почуття ностальгії за тими першими днями відкриттів. Було щось чисте у виклику зрозуміти систему, яка не хотіла, щоб її зрозуміли, у картографуванні місцевості, яку жоден сторонній ніколи не задокументував. Це була форма дослідження, яка стає все більш рідкісною в нашому світі відкритого програмного забезпечення та детальної документації.
Але я також відчуваю надію. Кожне покоління технологій приносить нові виклики та можливості. Уроки, винесені з архітектури Skype, вплинули на те, як ми сьогодні розробляємо безпечні системи зв'язку. Виявлені вразливості були усунені в нових протоколах. А підняті критичні питання - прозорість, довіру та баланс між безпекою і зручністю - продовжують формувати наш цифровий ландшафт, що еволюціонує.
Зрештою, можливо, найціннішим результатом цієї подорожі були не отримані технічні знання, а перспектива, яку вона запропонувала: глибше розуміння того, що лежить під поверхнею нашого цифрового світу, і підвищене усвідомлення як дива, так і застереження, що містяться в цих глибинах.



