Технічні питання щодо Telegram
Загальні питання
Захист від відомих атак
Шифрування
Аутентифікація
Загальні питання
Q: Чому ви використовуєте власний протокол?
Q: Де я можу почитати протокол?
Детальна документація протоколу доступна на цій сторінці. Якщо у вас є запитання, пишіть у Твіттер.
Примітка:Кожне повідомлення, зашифроване через MTProto, завжди містить такі дані, які будуть перевірені під час дешифрування, щоб зробити систему надійною від відомих проблем:
- сіль сервера (64-бітна) - server salt (64-bit);
- ідентифікатор сесії - session id;
- порядковий номер повідомлення - message sequence number;
- довжина повідомлення - message length;
- час надсилання повідомлення – time.
Q: Чому ви не використовуєте X [ваш варіант]
У той час як інші способи досягнення тих же криптографічних цілей, безперечно, існує, ми вважаємо, що нинішнє рішення є як надійним, так і успішним у нашому другорядному завданні — перевагу над незахищеними месенджерами щодо швидкості доставки і стабільності.
Q: Чому ви спираєтеся на класичні криптоалгоритми?
Слабкі сторони таких алгоритмів також добре відомі та використовувалися зловмисниками десятиліттями. Ми ж використовуємо ці алгоритми в такій реалізації тому, що вони, як ми вважаємо, наводять будь-яку відому атаку до провалу. Тим не менш, ми були б раді ознайомитися з будь-якими доказами зворотного (досі таких випадків не випадало), щоб удосконалити нашу систему.
Q: Я експерт в галузі безпеки, і я вважаю, що ваш протокол небезпечний.
Якщо у вас є інші зауваження, будемо радіпочути їх на [email protected].
Захист від відомих атак
Атаки на основі відкритих текстів (Known-Plaintext Attacks)
Згідно з визначенням, атака на основі відкритого тексту — вид криптоаналітичної атаки, при якій атакуючий має обидві версії тексту: зашифровану і вихідну.
Використовуваний у MTProto AES IGE стійкий до таких атак. До того ж, незашифрований текст у MTProto завжди містить сіль сервера та ідентифікатор сесії.
Атака на основі адаптивно підібраного відкритого тексту
Згідно з визначенням, атака на основі адаптивно підібраного відкритого тексту — вид атаки у криптоаналізі, який передбачає, що криптоаналітик може вибирати відкритий текст і отримувати відповідний шифротекст.
MTProto використовує AES у режимі IGE, який безпечний проти таких атак. Відомо, що IGE нестійкий до blockwise-adaptive атак, але MTProto виправляє це в такий спосіб.
Кожне повідомлення з відкритим текстом, яке потрібно зашифрувати, містить такі дані, які перевіряються під час розшифрування:
- сіль сервера (64-бітна) - server salt (64-bit);
- порядковий номер повідомлення - message sequence number;
- час надсилання повідомлення – time.
До того ж, щоб замінити відкритий текст, також доведеться використовувати вірні AES-ключ та вектор ініціалізації, що залежать від auth_key. Це робить MTProto стійким проти атак на основі адаптивно підібраного відкритого тексту.
Атаки на основі підібраного шифротексту
Згідно з визначенням, атака на основі підібраного шифротексту - це криптографічна атака, при якій криптоаналітик збирає інформацію про шифр шляхом підбору зашифрованого тексту і отримання його розшифровки при невідомомуключі. При такій атаці зловмисник може ввести в систему один або кілька відомих шифротекстів та отримати відкриті тексти. За допомогою цих даних атакуючий може спробувати відновити ключ для розшифровки. У MTProto при кожному дешифруванні повідомлення проводиться перевірка на відповідність msg_key до SHA-1 розшифрованих даних. Відкритий текст (дешифровані дані) також містить інформацію про довжину повідомлення, його порядкового номера і солі сервера. Це зводить нанівець атаки з урахуванням підібраного шифротекста.
Атаки повторного відтворення
Атаки повторного відтворення неможливі, оскільки кожне повідомлення з відкритим текстом містить сіль сервера, унікальний ідентифікатор повідомлення та порядковий номер.
Атака «Людина посередині» (MitM)
Telegram має два режими спілкування: звичайні чати, які використовують шифрування клієнт-сервер, та секретні чати, що використовують кінцеве шифрування та захищені від атак посередника.
Передача даних між клієнтом та сервером захищена від подібних атак під час генерації ключів за протоколом Діффі-Хеллмана завдяки алгоритму з відкритим ключем RSA, який вбудований у клієнти Telegram. Після цього, якщо клієнти співрозмовників довіряють програмному забезпеченню сервера, секретні чати між ними захищаються сервером від атак посередника.
Спеціально для тих, хтонедовіряє серверу, у додатку є порівняння секретних кодів. Ключі візуалізуються як зображень (приклад). Порівнюючи візуалізовані ключі, користувачі можуть переконатися, що атака "людина посередині" не була здійснена.
Шифрування
Q: Ви використовуєте IGE? Він же зламаний!
Так, ми використовуємо IGE, але в нашій реалізації з ним все гаразд. Той факт, що ми не використовуємо IGE разомз іншими елементами нашої системи так само, як і MAC, робить спроби злому IGE безглуздими.
IGE, як і поширений режим зчеплення блоків шифротексту (CBC), піддається blockwise-adaptive атакам. Але адаптивні атаки є загрозою лише тоді, коли той самий ключ використовується в кількох повідомленнях (у MTProto це не так).
Адаптивні атаки навіть теоретично неможливі в MTProto, тому що для розшифровки повідомлень останні мають бути спершу повністю набрані, оскільки ключ повідомлення залежить від його змісту. Що ж до неадаптивних CPA-атак, IGE захищений від них, як і CBC.
Q: Ви використовуєте схему Encrypt-then-MAC, MAC-then-Encrypt чи Mac-and-Encrypt?
Наша схема близька до MAC-and-Encrypt, але має значну модифікацію: ключ шифрування та ініціалізонний вектор залежить від хеша.
- Ми використовуємо SHA-1 для перевірки цілісності.
- SHA-1 необхідний для необробленої незашифрованої інформації.
- Ключ повідомлення залежить від SHA-1.
- Звертаємо увагу, що AES-ключ залежить від SHA-1.
В результаті залежить від даних ключова змінна захищена від усіх відомих типів атак.
Q: Чому ви використовуєте SHA-1 замість MAC?
З технічної точки зору в нашій реалізації SHA-1 можна назвати особливим різновидом MAC (але не HMAC), оскільки він використовується і як ключ шифрування.
Аутентифікація
Q: Чи є перевірка ключа між клієнтами обов'язковою?
Секретні чати не використовують обов'язкову аутентифікацію через сторонні послуги або інформацію, яка вже відома клієнтам співрозмовників після попереднього обміну даними. Пізніше ми, ймовірно, додамо для просунутих користувачів можливість заборони ініціалізації в секретнихчатах без попереднього підтвердження ключа (за допомогою QR-коду, NFC тощо).
Q: Чи підтримується пряма таємність?
Пряма секретність доступна в секретних чатах, але в даний момент вимагає додаткових дій від користувача: доведеться видалити секретний чат і створити новий або вийти зі свого облікового запису (це видалити всі секретні чати).
Пряма таємність підтримується протоколом: примітивний p_q_inner_data_temp може використовуватися для генерування тимчасових ключів з обмеженим TTL для досягнення PFS. Ми працюємо над нашими програмами, щоб додати пряму секретність і в звичайні чати Telegram. В даний момент є можливість створити клієнт, який підтримує пряму таємність через наш API.
НЕОФІЦІЙНИЙ сайт про Telegram українською.
Тут зібрані програми на базі MTProto, переведено деяку документацію з офіційного сайту, а також працює Webogram.