Лікнеп до битви при Telegram

А між іншим, Instagram треба закривати, тому що теракт в Ленінграді в минулому році був здійснений за допомогою Instagram.

глава Слідчого комітету РФ О. Бастрикін

У другій половині квітня російська влада спробувала зробити чергову гидоту, в цей раз спрямовану проти інтернету і власних громадян. Роскомнадзор зажадав від месенджера телеграм можливість розшифровувати повідомлення користувачів, Павло Дуров відмовився, чиновники стали блокувати все підряд і купа інтернет-сервісів перестала працювати. Офігевшіе від такого повороту росіяни запустили купу паперових літачків і навіть вийшли на мітинг на захист месенджера. В результаті нещодавно з'явилося повідомлення, що ніби як Роскомнадзор здався .

На жаль, в українських ЗМІ стоять матеріалів про ці події практично не було - мабуть, тема здалася важкувато. У цій статті я спробую дуже спрощено описати, як влаштована сучасна криптографія. Сподіваюся, після прочитання всім стане зрозуміліше, що з себе представляють ключі шифрування і як так вийшло, що Дуров не зміг видати їх російським бюрократам.

Уявіть, що вас попросили створити спосіб шифрування, який захистить вашу переписку від ворогів, які можуть перехопити будь-яке повідомлення. Саме елементарне рішення - просто взяти і замінити всі символи алфавіту на якісь інші закарлючки. Або можна використовувати той же самий алфавіт, але в якості «зашифрованої» букви використовувати букву, яка відстоїть від «базової» на деякому фіксованому відстані. Наприклад, слово «ПЕТРО», зашифроване із зсувом 4 (тобто варіантом «Г») перетвориться в «ФІЧХ»

Наприклад, слово «ПЕТРО», зашифроване із зсувом 4 (тобто варіантом «Г») перетвориться в «ФІЧХ»

Просто переходимо через чотири літери на п'яту і отримуємо закодоване повідомлення

Такий алгоритм називається шифром Цезаря і він взагалі нікуди не годиться. Проблем дві.

  • Для всіх абонентів доводиться використовувати один і той же код. Точніше, якщо використовувати різні літери, то вийде, що кількість варіантів на один менше, ніж букв в алфавіті - цього дуже мало.
  • Код зламуються навіть побутовою логікою, як це зробив Шерлок Холмс в оповіданні «Танцюючі чоловічки» .

Обидві ці проблеми були частково вирішені в шифрі Віженера . Суть така: задається деякий секретне слово (ключ шифрування), яке записується по тексту багато-багато разів. «Зашифрувати» букву отримують як в шифрі Цезаря, додаючи букву тексту до букви ключового слова. Наприклад, щоб зашифрувати букву «І» в прикладі нижче, потрібно використовувати «Е». «Е» варто в алфавіті на сьомому місці, тому зрушуємо «І» на сім позицій і отримуємо «Н».

Буква «Е» вихідного слова кожен раз зашифрована по-різному, тому розшифрувати закодоване повідомлення буде досить складно.

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

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

Справжнє стійке шифрування грунтується на ідеї «одноразового шифроблокнота»: ви берете жменю кубиків (або якийсь інший генератор випадкових чисел), багато разів кидаєте і отримані числа одночасно записуєте в два блокнота. Один блокнот залишаєте собі, другий - віддаєте абоненту. Процес шифрування може бути таким же, як в методі Віженер, але замість ключа використовуються символи з блокнота. Оскільки ці символи були згенеровані випадково, ніяких статистичних закономірностей не буде, і зламати таке повідомлення буде неможливо.

Фактичною реалізацією методу одноразового блокнота стала німецька шіфромашіна «Енігма ». У Вікіпедії вона описується досить складно, але суть в тому, що там можна було вибрати одну з мільйонів комбінацій (тобто задати ключове слово), після чого машина генерувала послідовність чисел, з якими складалися символи повідомлення.

Зламати «Енігму» теоретично було неможливо, але фокус у тому, що коли криптографи говорять про неможливість, завжди неявно додається пара зауважень дрібним шрифтом:

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

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

У сучасних програмах (в тому числі і в Телеграма), як правило, використовується алгоритм шифрування AES. Він теж дуже складний для опису в рамках однієї статті, тому доводиться просто довіряти фахівцям, які вивчають його більше десяти років.

Надійне шифрування - це тільки половина справи, потрібно ще якось передати ключ шифрування іншій стороні. Проблема особливо актуальна для наших північних сусідів, там ФСБ зобов'язала провайдерів зберігати весь трафік користувачів. Але для нас це теж важливо - складно сказати, що відбувається з вашими паролями, коли ви використовуєте додаток Приватбанку в телефоні, підключеному до Wi-Fi в кафе.

Для безпечного встановлення з'єднання використовується алгоритм Діффі-Хеллмана, але, перш ніж його розглядати, потрібно згадати шкільну арифметику. У кожної дії є зворотне: додавання-віднімання, ділення-множення. У комп'ютері додавання і віднімання виконуються за однакову кількість часу, а ось розподіл вже вимагає трохи більше часу, ніж множення. Більш складні операції, типу логарифмирования, виконуються в сотні разів довше, ніж зведення в ступінь.

В алгоритмі Діффі-Хелмана використовуються функції, для яких зворотне значення порахувати практично неможливо. точніше, висуваються такі формальні вимоги:

  • Комутативність. Наприклад, для числа P і будь-якої пари цілих чисел 7 і 5 повинна дотримуватися рівність 5 * (7 * P) = 7 * (5 * P).
  • Неможливість зворотної операції. Наприклад, якщо є пара чисел P і Q, і Q = n * P то обчислення числа n повинно займати неймовірну кількість часу.

Сам алгоритм дуже простий:

  • боку (зазвичай їх звуть Аліса і Боб) задумують свої секретні числа, відповідно A і B. Ці числа нікому не повідомляють;
  • боку разом домовляються використовувати число С, це число стає відомо зловмисникові, який підслуховує розмову;
  • Аліса обчислює число A * C, використовуючи функцію, описану вище, і відправляє його Бобу. Боб, в свою чергу, обчислює B * C і відправляє Алісі;
  • кожна зі сторін примножує своє секретне число на те, яке отримала, і в підсумку виходить загальний секретний ключ виду A * (B * C) = B * (A * C). Зловмисник ніяк не може порахувати значення секретного ключа.

Якщо що, ось в цьому відео є ще більш просте пояснення, а заодно там розповідається, що саме являє собою «необоротна» функція.

Таким чином, використовуючи описані вище штуки, можна надійно зашифрувати спілкування між двома пристроями. На жаль, життя влаштоване так, що за кожною вирішеною проблемою приходять інші. В даному випадку виявляється, що розмовляти в наглухо зашифрованому чаті дуже незручно: не зберігається історія повідомлень, не можна писати в офлайн, не можна продовжити розмову з іншого пристрою або додати ще одну людину. В результаті інженери телеграм на додаток до зашифрованого чату зробили звичайний «класичний», зі зберіганням повідомлень на сервері. І (абсолютно несподівано), в цьому класичному режимі знайшовся баг , Який дозволяв стороннім читати чужі чати.

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

  • Зовсім стороння людина, просто шукає «щось цікаве». Грубо кажучи, слова «Путін» і «бомба» в одному реченні.
  • Людина без спеціальних повноважень, типу школяра, який хоче зробити гидоту вчительці.
  • Людина з законними вимогами. Можна розділити на дві підгрупи: рядові міліціонери / сбушники або ті, у кого є рішення суду.
  • Атакуючий зі спеціальною підготовкою, можливо зі своїм фізичним обладнанням, яке, наприклад, дозволяє перехоплювати SMS, відправлені на телефон жертви.

Іноді потрібно одержати не самі переговори, а щось інше, на кшталт списку контактів користувача. В свій час Вконтакт розіслав рекламу прокремлівських роликів всім, хто був підписаний на паблік Навального.

Зрозуміло, що від якихось із цих випадків можна захиститися за допомогою Телеграма, а від інших - практично неможливо.

Крім того, потрібно оцінювати вартість і ризики альтернативних варіантів. Наприклад, була кумедна стаття , В якій рекомендували використовувати джаббер. Рада непоганий, але власний джаббер-сервер сам по собі може стати метою для атаки: або це буде повноцінний злом, або простий DoS, який позбавить вас зв'язку в найпотрібніший момент. Ну і чисто по грошах таке рішення обійдеться досить дорого.

При цьому основною перевагою джаббер називають відкритість, але забувають сказати, що телеграм теж не такий вже закритий.

  • Протокол MTProto, за яким спілкуються додатки, відкритий і непогано документований .
  • Код клієнтських додатків відкритий, з ним може ознайомитися кожен охочий.
  • Серверне таки закрито. Теоретично можна припустити, що розробники, найняті Дурова, сховали там якісь бекдоров. нещодавно був відкритий код проксі-сервера MTProto, але там нічого цікавого немає, тому що він тільки пересилає інформацію на основні сервера.

Є певний співтовариство, яке вивчає протокол MTProto, намагаючись знайти в ньому помилки. Наприклад, можна згадати дослідження , В якому говорилося про те, що він вразливий для MITM-атак. Суть МAN-in-the-middle полягає в тому, що зловмисник не просто підслуховує переговори (як в розглянутих вище прикладах), а втручається в процес передачі даних. Тобто, в прикладі з Діффі-Хеллманом спочатку «людина посередині» встановлює з'єднання з Алісою від імені Боба, потім з Бобом від імені Аліси, в обох випадках використовуючи всі потрібні методи шифрування. Потім повідомлення, отримані від Аліси, він читає, перешіфровивает ключем Боба і відправляє цьому самому Бобу і точно так же в зворотному напрямку. Автори дослідження самі визнають, що такий сценарій складно реалізувати, але все ж цілком можливо, якщо мета того варта.

Загалом, висновок з усього цього такий: важливо залишатися в контакті з реальністю, правильно оцінювати небезпеку і розподіляти ресурси. Якщо у вас є час розбиратися і правильно налаштовувати ПО - чудово, так і робіть. Немає часу - використання попередніх програми, це теж нормально. Головне - не приймати рішення, грунтуючись на записи у військовому квитку Дурова.

Дополнительная информация

rss
Карта