<
  • Главная
Статьи

Аналіз безпеки Telegram

У цій статті ми розглянемо Telegram в цілому, поговоримо про використаний протоколі і проведемо порівняння з іншими аналогічними продуктами.

Автори: Hayk Saribekyan ( [email protected] ), Akaki Margvelashvili ( [email protected] )

анотація

Telegram представляє собою платформу для обміну миттєвими текстовими повідомленнями на базі протоколу безпеки MTProto. Компанія була заснована в 2013 році, а сам месенджер на даний момент має понад 100 мільйонів активних користувачів. Одна з головних цілей Telegram - захист користувачів від стеження. Стверджується, що у цього месенджера найкращий захист на ринку і залізобетонні гарантії безпеки серед програм подібного роду. У цій статті ми розглянемо Telegram в цілому, поговоримо про використаний протоколі і проведемо порівняння з іншими аналогічними продуктами. Крім того, ми скористаємося витоком, пов'язаної з доступністю користувачів, з метою виявлення тимчасових інтервалів, коли два абонента розмовляють один з одним.

Вступ

За останнє десятиліття, у міру того як все більше і більше людей отримують доступ до інтернету, зростає популярність додатків для обміну миттєвими повідомленнями. Станом на травень 2017 года 2 з 5 найбільш завантажуваних Android-додатків використовуються для обміну миттєвими повідомленнями [1]. За останні роки користувачі комунікаційних протоколів, в тому числі пов'язані зі службами обміну миттєвими повідомленнями, стають все більш стурбованими щодо своєї безпеки. З метою задоволення цих потреб багато платформи стали надавати наскрізне (кінцеве) шифрування [2, 3]. Наприклад, в WhatsApp наскрізне шифрування з'явилося 3 роки тому, і на даний момент ця функція використовується у всіх комунікаціях. Цей месенджер має найбільшу кількість користувачів, що користуються наскрізним шифруванням.

Telegram - ще одна служба, пов'язана з обміном миттєвими повідомленнями, яка була заснована в 2013 році. Незважаючи на свою молодість, на даним момент щомісяця Telegram використовують більше 100 мільйонів користувачів, особливо в Західній Європі. Творці Telegram стверджують, що у цього месенджера найкращий захист серед аналогічних продуктів на ринку, проте в цілому довіру користувачів грунтується лише на історії появи цього додатка і таланті розробників. Ми поставили завдання проаналізувати безпеку Telegram [4], оскільки цей месенджер знаходиться під безперервним критикою багатьох фахівців з криптографії через неоднозначні рішень, використовуваних розробниками.

У цьому розділі ми поговоримо про історію Telegram і призначеному для користувача інтерфейсі. У розділі 2 буде описана архітектура Telegram. У розділі 3 описуються попередні проблеми, знайдені в Telegram. У розділах 4 і 5 розглядаються розкриті уразливості, пов'язані з безпекою в Telegram. У розділі 6 ми розглянемо поточні проблеми в Telegram і зробимо висновки.

Історія появи Telegram

Серед інших технологічних стартапів Telegram займає особливе місце, внаслідок чого отримав підвищену увагу і довіру з боку користувачів, і ми вважаємо, що корисно буде торкнутися історію появи цього месенджера.

Telegram був заснований в 2013 році братами Миколою та Павла Дурова, які були засновниками популярної російської соціальної мережі Vkontakte. Після тиску з боку російської влади на предмет отримання специфічних можливостей (або спеціальних лазівок для державних органів) Дуров покинув компанію і заявив, що VK знаходиться під контролем політичної партії, яка перебуває при владі [5]. Потім Дуров покинув Росію і заснував Telegram з метою надання засоби обміну миттєвими повідомленнями для простих користувачів, яке було б захищене від стеження представниками державних структур.

Завдяки популярності Павла Дурова в Росії, Telegram швидко завоював популярність серед російськомовної аудиторії. Крім того, за фактом Telegram надає найбільш зручний засіб в порівнянні з аналогічними продуктами за рахунок своєї швидкості і функціональності.

Протокол, який використовується для обміну повідомленнями, був розроблений братом Павла Миколою, який є математиком, але маловідомим фахівцем з безпеки.

Telegram - унікальне явище серед технологічних стартапів, в тому числі завдяки тому, що Павло Дуров є єдиним спонсором цього проекту. Крім того, в Telegram відсутня реклама, а сам клієнт - не тільки безкоштовний, але і з відкритим вихідним кодом.

функціональність Telegram

Telegram дозволяє обмінюватися текстовими і голосовими повідомленнями, а також спілкуватися в групах. Крім того, у цього месенджера є канали, на які користувачі можуть підписуватися і отримувати повідомлення від засновника каналу (зазвичай новинного веб-сайту або знаменитості).

Telegram також має функцію під назвою «секретний чат», яка не включена за замовчуванням. Секретні чати доступні у версії Telegramа з наскрізним шифруванням. Повідомлення видаляються після певного часу, що встановлюється користувачем, і не можуть бути відновлені. Розробники Telegram вирішили не включати наскрізне шифрування за умовчанням з метою зручності: секретні чати пов'язані з конкретними пристроями, і неможливо продовжити розмову там, де не було розпочато розмову. Ми не вважаємо, що такий стан речей є безперечним. Багато звичайні користувачі вважають, що ніхто не може отримати доступ до повідомлень, хоча по факту просто довіряють безпеки сервера.

Користувачі Telegram можуть створювати облікові записи і виконувати авторизацію за допомогою аутентификационного коду, одержуваного у вигляді текстового повідомлення. Після початкової авторизації користувачі можуть виконувати настройки і шукати один одного. У Telegram також є функція двухфакторной верифікації, якщо є бажання вводити пароль під час кожного входу в обліковий запис.

клієнти Telegram

У Telegram є клієнти під всі популярні платформи, включаючи веб-додатки. На рисунку 1 показана Desktop- і Android-версія. Офіційні клієнти йдуть з відкритим вихідним кодом, хоча є і бінарні БЛОБ (тобто виконувані бінарні файли без доступних вихідних текстів).
У Telegram є клієнти під всі популярні платформи, включаючи веб-додатки
Малюнок 1: Офіційні клієнти Telegram. Зліва: мобільна версія, праворуч: desktop-клієнт. Всі офіційні клієнти мають відкритий вихідний код. Інтерфейс Telegram досить швидкий і зручний

У Telegram також є можливість працювати з командним рядком [6], яка має практично повним функціоналом платформи, хоча і не дуже зручною для використання. Наприклад, для додавання контакту потрібно ввести наступну команду:

tg> add contact <phone number> <name> <lastname>

Під час дослідження безпеки Telegram ми часто користувалися командним рядком.

2. Архітектура Telegram

Як і багато аналогічні програми Telegram слід традиційному підходу і використовує хмара для зберігання даних. Тобто, якщо зловмисник зможе отримати контроль над сервером, то отримає (як мінімум) доступ до незашифрованому повідомленнями і до всіх метаданих. Обмін повідомленнями між користувачами і сервером відбувається на базі власне розробленого протоколу MTProto.

Користувачі обмінюються інформацією за методом Діффі-Хеллмана для створення загального ключа, який потім використовується при передачі повідомлень. Комунікація з сервером здійснюється за допомогою публічного RSA-ключа, який прописаний всередині клієнта Telegram і змінюється досить рідко.

Telegram використовується протокол власної розробки MTProto, який не використовує безліч традиційних підходів при обміні повідомленнями. Творці Telegram стверджують, що подібний підхід використовується з метою поліпшення продуктивності, однак у багатьох експертів з безпеки на цей рахунок є великі сумніви.

3. Відомі і виправлені проблеми

Як всі компанії з технологічним ухилом, у Telegram були, є і будуть уразливості, пов'язані з безпекою, і нестандартні проблеми, які мають непрямий стосунок до безпеки. Ми розповімо про деякі з цих проблем, а в наслідку розглянемо більш детально один з таких випадків.

3.1 Проблеми нетехнического характеру

На концептуальному рівні у Telegram є кілька нестандартних рішень, які, як ми вважаємо, не повинні бути частиною протоколу безпеки. А конкретно:

  • Функція наскрізного шифрування не використовується за умовчанням [7]. З цієї причини більшість технічно недосвідчених користувачів використовують Telegram без функції секретного чату і вважають, що повідомлення шифруються. Без секретних чатів, по суті, користувачі повинні довіряти серверів Telegram.
  • Telegram використовує криптографічний протокол MTProto власної розробки, що вже неодноразово піддавалося критиці. Загальна доктрина безпеки говорить про те, що розробникам не слід винаходити велосипед в криптографічного частини, а довірити проектування криптографічного протоколу експертам. Ті, хто досліджував цей протокол, також мають скептичне думку. Спеціаліст по криптографії Метт Грін висловив наступне: «Telegram має 10 мільйонів деталей, які підтримують одиничний неавторизований обмін ключами за методом Діффі-Хеллмана». [8]
  • Telegram спочатку запитує список контактів з телефону / комп'ютера і зберігає отриману інформацію на сервері. Тобто на серверах зберігається величезна база контактів, яка може стати метою для атаки або бути просто продана владі без відома користувача. Це ще один приклад, коли користувачі повинні довіряти безпеки серверів Telegram.

3.2 Проблеми, пов'язані з технічною безпекою

  • Група дослідників в 2015 році анонсувала схему атаки на Telegram типу «челове-посередині», яка може бути здійснена владою конкретної держави. Атака пов'язана з генеруванням загальних секретів за методом Діффі-Хеллмана для двох жертв, що мають однаковий 128-бітний візуальний відбиток, і користувачі, які порівнюють відбитки, не зможуть виявити атаку. При реалізації атаки «днів народження» буде потрібно всього лише 264 операції. З того моменту кількість бітів, використовуваних в відбитках, значно збільшилася, однак в цілому проблема залишається актуальною. Щоб перевірити ключі і запобігти MITM-атаки, користувачі повинні візуально порівняти сітку квадратів з чотирма відтінками синього. Тут відразу ж спливає людський фактор. По-перше, користувач може не помітити ледь помітних відмінностей між сітками. По-друге, у користувача взагалі може не бути бажання возитися з порівнянням сіток.
  • До 2014 року протокол MTProto використовував модифіковану версію схему обміну ключами за методом Діффі-Хеллмана [9]. Замість генерації ключів за допомогою стандартного протоколу на базі алгоритму Діффі-Хеллмана, сервер відсилав користувачеві ключ, оброблений операцією XOR разом з довільним числом (nonce). Цей факт дозволяє фальшивому сервера використовувати різні nonce-змінні для двох користувачів, у результаті чого буде один і той же ключ, але який буде відомий серверу. Повторимося ще раз: користувачі повинні довіряти сервера Telegram. Незважаючи на те, що це питання було вирішене, одне тільки присутність цієї проблеми викликає масу питань щодо компетенцій розробників Telegram в області безпеки, оскільки проблема надзвичайно проста.
  • У деяких частинах протоколу при хешуванні замість SHA-256 використовується алгоритм SHA-1, який, як відомо, нестійкий до колізій [10]. Творці Telegram стверджують, що SHA-1 використовується в тих частинах протоколу, де стійкість до колізій не принципова, проте все ж сильніша хеш-функція була б доречніше. Історія не раз доводила, що проломи і невраховані моменти - досить поширене явище.
  • Навіть при використанні секретного чату, мобільна версія Telegram дозволяє третій стороні переглядати інформацію про метаданих. Наприклад, зловмисник може дізнатися, коли користувачі виходять в онлайн і йдуть в оффлайн аж до секунд. Telegram не вимагає угоди від обох сторін для встановлення комунікації, і зловмисник може підключитися і отримати інформацію про метаданих без відома користувача. Крім того, у зловмисника є хороший шанс виявити, чи спілкуються два користувача між собою за допомогою підключення і аналізу метаданих на обох кінцях дроти. Ми назвали цю проблему «витік доступності». Більш детально це питання буде розглянуто в розділах 4 і 5.

Як показують попередні приклади, в багатьох випадках користувачі Telegram повинні повністю довіряти безпеки сервера, що трохи іронічно, оскільки початковою метою засновників Telegram було створення продукту, захищеного від стеження. Навіть незважаючи на те, що багато уразливості, пов'язані з безпекою, були усунені, деяких знайдених проблем не повинно було бути спочатку.

4. Експлоїт для виявлення доступності користувачів

Як було згадано в попередніх розділах, Telegram передає інформацію про доступність кожному, у кого є телефонний номер потрібного користувача. Припустимо, Єва додала Алісу в список контактів. У цьому випадку протокол Telegram не сповіщали Алісу про цю подію. У свою чергу Єва починає регулярно отримувати інформацію про те, коли Аліса використовує Telegram, а Аліса все також не отримує ніяких повідомлень.

Малюнок 2: У командному рядку виводиться ім'я користувача, якщо той використовує Telegram
Малюнок 2: У командному рядку виводиться ім'я користувача, якщо той використовує Telegram. В іншому випадку нічого не виводиться

Проблема, пов'язана з витоком, легко виявляється в командному рядку Telegram, як показано на рисунку 2.

Більш того, на рисунку 3 показано, що Єва може бачити, що Акакій і Хайк виходять в онлайн і йдуть в оффлайн. Потім Єва може зіставити тимчасові інтервали і зробити висновок, що Акакій і Хайк спілкуються між собою. У наступних розділах буде розказано, як можна використати експлоіт для виявлення того, що два користувача розмовляють один з одним.

4.1 Постановка експерименту

Для відстеження використання Telegram і комунікацій ми обрали 15 активних користувачів серед міжнародних студентів Массачусетського технологічного інституту. Таким чином, ми знали, що студенти спілкувалися між собою на щоденній / щотижневій основі.

Для підключення до користувачів ми використовували командний рядок Telegram. Для відстеження та збору метаданих був виділений спеціальний сервер. В результаті було зібрано кілька мегабайт необроблених метаданих для подальшого аналізу.

4.2 Алгоритм кореляції

Ми створили алгоритм кореляції, які аналізує інформацію про використання Telegram двома користувача і виводить послідовність збігів, де кожне збіг є часовий інтервал з ймовірністю того, що користувачі спілкуються між собою (ймовірність завжди не менше 0.5).

Малюнок 3: Єва відстежує активність Хайк і Акакія і може сказати, коли кожна персона з'являлася в онлайні
Малюнок 3: Єва відстежує активність Хайк і Акакія і може сказати, коли кожна персона з'являлася в онлайні. Зверніть увагу на проблему: різниця між появою в онлайні і відходом в оффлайн становить приблизно 5 хвилин

На базі отриманих метаданих на кожного користувача була створена послідовність тимчасових інтервалів активності відсортованих за часом. Алгоритм знаходить збіги по двом користувачам, які спілкуються між собою, на базі послідовностей тимчасових інтервалів.

Малюнок 4: Діаграма, що ілюструє основні концепції алгоритму кореляції
Малюнок 4: Діаграма, що ілюструє основні концепції алгоритму кореляції

Стверджується, що два активних тимчасові інтервали Аліси і Боба з'єднані (див. Фіолетові стрілки на малюнку вище), якщо ці проміжки перетинаються протягом часу gap_time. Тобто, два тимчасові інтервали перетинаються, якщо дві точки перетину знаходяться на відстані більше, ніж gap_time. Цей допущення введено тому, що потрібен час, щоб відкрити після отримання повідомлення.

Тепер, розглядаючи кожен активний часовий інтервал як вершини і кожне з'єднання як ребро, ми отримуємо двосторонній граф. У цьому двосторонньому графі ми шукаємо пов'язані компоненти, які мають як мінімум одне ребро. Якщо ми відсортуємо активні тимчасові інтервали в пов'язаному компоненті, то побачимо ланцюжок пересічних інтервалів, протягом яких Аліса і Боб використовували Telegram. Кожна поєднана пара тимчасових інтервалів вказує на певну ймовірність того, що два користувача спілкуються один з одним. Ланцюжок з'єднаних інтервалів значно підвищує шанс того, що Аліса і Боб спілкуються з один з одним.
Кожен пов'язаний компонент представляє можливу комунікацію (під час якої відбувається обмін повідомленнями за відносно короткий час) між користувачами. Оскільки користувач може залишити Telegram відкритим (коли метадані передаватися не будуть), ми не беремо до уваги розмір активного тимчасового інтервалу. Ми вважаємо, що кількість активних тимчасових інтервалів - найбільш важливий показник, оскільки користувач, часто виходить в онлайн і йде в оффлайн, швидше за все, активно використовує Telegram.

Ми ввели коефіцієнт ймовірності (likelihood coefficient), Який візначає, Наскільки ймовірно пов'язаний компонент представляет собою комунікацію между Користувачами. Зверніть увагу, ребро усередині пов'язаного компонента, що належить активному часового інтервалу, яке з'єднане з багатьма іншими вершинами, розглядається як менш значуще в порівнянні з ребром, кінці якого не з'єднані з іншими інтервалами. З цієї причини, замість підрахунку кількості ребер у зв'язаному компоненті, ми визначили коефіцієнт ймовірності як половину всіх з'єднаних вершин всередині компонента. Таким чином, дуже довгий активний часовий інтервал, який перетинає безліч інших інтервалів не особливо впливає на збільшення коефіцієнта ймовірності.

Як тільки коефіцієнт ймовірності розрахований, обчислюємо ймовірність спілкування двох користувачів протягом проміжку часу всередині пов'язаного компонента за такою формулою:
Як тільки коефіцієнт ймовірності розрахований, обчислюємо ймовірність спілкування двох користувачів протягом проміжку часу всередині пов'язаного компонента за такою формулою:   Малюнок 5: Формула розрахунку ймовірності спілкування двох користувачів
Малюнок 5: Формула розрахунку ймовірності спілкування двох користувачів

Ідея полягає в тому, що якщо коефіцієнт ймовірності дорівнює 0, то і ймовірність спілкування теж дорівнює нулю. З іншого боку, кожна одиниця коефіцієнта ймовірності збільшує ймовірність спілкування на половину. Альфа-множник визначає ступінь впливу коефіцієнта ймовірності на підсумкову ймовірність.

5. Результати використання експлойтів

Після реалізації алгоритму, описаного вище, ми проаналізували метадані, отримані сервером. Оскільки ми використовували Telegram під час роботи сервера, то підлаштували параметри на базі частоти нашої комунікації і внесли деякі корективи.

Найбільш прийнятні значення: gap_time = 30 секунд, альфа-множник = 1. При таких значення нам вдалося відстежити всі комунікації і не обрізати зайвого. Результати показали, що кількість помилкових збігів коливається в районі 15%. Іншими словами, іноді, коли два користувача одночасно використовують додаток, алгоритм працює некоректно.

Малюнок 6: Збіги, знайдені алгоритмом кореляції
Малюнок 6: Збіги, знайдені алгоритмом кореляції

Малюнок 7: Повідомлення, відповідні знайденим збігів
Малюнок 7: Повідомлення, відповідні знайденим збігів. Передостаннє збіг відповідає повідомленнями, написаним в інтервалі від 23:31 до 23:35

6. Висновок

У цьому проекті ми провели дослідження месенджера Telegram. Коли Telegram оформився як самостійна компанія, то придбав популярність, завдяки заявам творців, довірою і вдалим часом виходу (в той же час відбулися витоки з подачі Сноудена). Якщо вірити заявам творців Telegram, можна подумати, що цей месенджер має високий рівень безпеки. Однак наше дослідження показує, що у Telegram були серйозні і в той же час прості проблеми в протоколі (наприклад, модифікований і вразливий алгоритм обміну ключами за методом Діффі-Хеллмана), які може виявити будь-який знає експерт з безпеки.
За допомогою командного рядка ми змогли підключитися до деяких наших друзів, і виявити інтервали спілкування. Ми вважаємо, що це серйозна проблема, пов'язана з витоком персональної інформації, яка може, наприклад, допомогти виявити, у кого з групи більш тісні взаємини.

З усього вищесказаного можна зробити висновок, що Telegram, як і всі інші продукти, має уразливості, про які користувачі повинні знати. Однак, на жаль, заяви компаній змушують користувачів вірити в те, що листування захищена від прочитання третьою стороною.

ПОСИЛАННЯ

[1] Android market app ranklist. http://www.androidrank.org/ . Accessed: 2017-05-16.
[2] Secret conversations in facebook. https://www.facebook.com/help/ messenger-app / 1084673321594605. Accessed: 2017-05-16.
[3] End-to-end encryption (whatsapp). https://www.whatsapp.com/faq/en/general/28030015 . Accessed: 2017-05-16.
[4] Telegram. telegram.org. Accessed: 2017-05-16.
[5] Vkontakte founder pavel durov learns he's been _red through media. Accessed: 2017-05-16.
[6] Telegram messenger cli. https://github.com/vysheng/tg . Accessed: 2017-05-16.
[7] Operational telegram. https://medium.com/@thegrugq/ operational-telegram-cbbaadb9013a. Accessed: 2017-05-16.
[8] Matt green on twitter about telegram. https://twitter.com/matthew_d_green/status/582916365750669312 . Accessed: 2017-05-16.
[9] Is telegram secure (russian). https://habrahabr.ru/post/206900/ . Accessed: 2017-05-16.
[10] Shattered. https://shattered.io . Accessed: 2017-05-16.




Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью