Logjam
Logjam — атака на TLS / SSL. Дана атака здатна повністю розшифрувати або зламати будь-яке TLS з'єднання, встановлене з недобросовісно сконфігурованими веб-сервісами або поштовими серверами. Також як і FREAK, Logjam заснована на зниженні рівня шифрування до експортного рівня, де довжина ключа становить 512 біт. Відмінність полягає в тому, що Logjam атакує Протокол Діффі-Геллмана.
Загальна характеристика
Найкращий спосіб зрозуміти результат Logjam — прочитати технічну документацію:
Схоже, що протокол англ. Diffie-Hellman, який в даний час розгорнуто в SSL/TLS, може бути уразливий для серйозної атаки з пониженням, яка відновлює її до рівня «експорту» в 1990-х роках і пропонує практичний «розрив» протоколу TLS проти погано налаштованих серверів. Гірше того, екстраполяція вимог до атаки — в поєднанні з доказами з документів Snowden — дає привід припустити, що аналогічна атака може бути використана проти протоколів (включаючи TLS, IPSec /IKE і SSH) з використанням 768- і 1024-розрядних англ. Diffie-Hellman[1]
.
Такі ключі, як показали дослідники FREAK, можна зламати протягом декількох годин[2].
Вчені зробили попередній розрахунок для двох популярних експортних DH-груп: перша група використовується в Apache в версіях 2.1.5-2.4.7 і зустрічається на 7 % сайтів з TOP 1M за версією Alexa, а другий захист в OpenSSL, ще коли він називався SSLeay, в 1995 році. Розрахунок зайняв тиждень для кожної групи, й проводився він з використанням модифікованої версії CADO-NFS. Дослідники з'ясували, що попередній розрахунок цих двох груп дозволяє зламувати до 80 % зашифрованих з'єднань на серверах, які підтримують експортні DH-ключі. Були запропоновані і продемонстровані на відео три способи проведення атаки:
- Офлайн-дешифрування слабких підключень для серверів, що використовують 512-бітові DH-ключі за замовчуванням, при пасивній подачі трафіку;
- Зниження стійкості ключів до 512-бітних з використанням TLS False Start, шляхом MiTM-підміни відправляються на сервер даних про тип DH;
- Зниження стійкості ключів до 512-бітних шляхом MiTM-підміни відправляються на сервер даних про тип DH, і призупинення з'єднання до моменту злому ключів[2].
Атака на алгоритм Діффі — Геллмана
Найбільш відомий та розповсюджений спосіб атакувати Диффі — це означає: перехоплення повідомлень та вилучення величини ga, потім знаходиться «секрет» a. Задача знаходження цього «секрету» називається дискретно-логарифмічною задачею, яка вважається математично невирішеною, якщо Діффі — Геллман був застосований з простого числа p розміром 2048 біт або більше.
Коли просте число p має розмір 512 біт або менше, то стає можливим отримати значення a з g a mod p і прочитати трафік з'єднання. Знайти а можна, використовуючи Метод решета числового поля (Number Field Sieve)).
Робота Logjam
Існує декілька сучасних серверів TLS/SSL, які використовують 512-бітний ключ Діффі — Геллмана, більшою мірою такі сервера використовуються в маршрутизаторах або у відеоконференційних шлюзах. Тем не менше, існує другий клас серверів, які здатні підтримувати 512-бітний Діффі — Геллмана на прохання клієнта, використовуючи спеціальний режим EXPORT_DHE. За даними Alexa, з мільйонів найбільш популярних сайтів 8,4 % є вразливими до Logjam[1].
Хоча більшість привілейованих клієнтів (популярних браузерів) не підтримують EXPORT_DHE, тому існує уразливість, що дозволяє їм приймати ослаблений ключ.
До того, як клієнти й сервер розпочне процес шифрування, їм потрібно вирішити, який із шифрів використовувати. Це відбувається в процесі «переговорів», коли клієнт пропонує деякі параметри (RSA, DHE, DHE_EXPORT, RSA_EXPORT і т. д.) і сервер вибирає один з них. Однак існує вразливість, яка полягає в тому, що в SSL/TLS протоколах погано продумана аутентифікація «переговорних» повідомлень. У більш ранніх версіях протоколу SSL не було автентифікації, тільки в TLS і в SSL 3.0 введено аутентифікацію, але вона відбувається в кінці процесу «рукотиснення». Слабкість реалізації TLS полягає в тому, що TLS сервера можуть підписувати свої повідомлення цифровою підпискою, але в реалізації цього протоколу це не використовується. Під час процесу «переговорів», якщо був вибраний Діффі — Геллман, то параметри, які присилає сервер, знаходяться в підписаному повідомленні ServerKeyExchange. Підписана частина повідомлення містить тільки параметри, але не містить інформації про те, який шифр використовувати.
Таким чином, якщо сервер підтримує DHE_EXPORT, то зловнисник може скористатися атакою «людина посередині» та перехоплювати повідомлення між клієнтом і сервером, змінювати список підтримуючих шифрів, залишаючи тільки підтримку DHE_EXPORT (навіть якщо клієнт його не підтримує). Сервер у відповідь відправляє своє повідомлення, підписане 512-бітним ключем Диффі — Геллмана. Клієнт, нічого не підозріваючи, приймає цю інформацію. Зловмисннику залишилось знайти «секрет» Діффі — Геллмана, але він повинен це зробити до того, як завершиться процес «рукопотиснення» і створити своє повідомлення про закінчення даного процесу[3].