Раніше сертифікати часто спливали через те, що їх потрібно було оновлювати вручну. Люди просто забували це зробити. З появою Let's Encrypt та автоматичної процедури оновлення як би проблема має бути вирішена. Але недавня
Якщо хтось пропустив цю історію, опівночі 4 травня 2019 року раптово припинили працювати майже всі розширення Firefox.
Як з'ясувалося, масовий збій виник через те, що у Mozilla
Mozilla оперативно випустила патч Firefox 66.0.4, який вирішує проблему з невалідним сертифікатом, а розширення повертаються в нормальний вигляд. Розробники рекомендують встановити його та
Проте ця історія вкотре показує, що закінчення терміну дії сертифікатів залишається актуальною і сьогодні.
У зв'язку з цим цікаво подивитися на досить оригінальний спосіб, як із цим завданням впоралися розробники протоколу.
DNSCrypt
DNSCrypt – протокол шифрування DNS-трафіку. Він захищає DNS-комунікації від перехоплень та MiTM, а також дозволяє обійти блокування на рівні DNS-запитів.
Протокол обертає DNS-трафік між клієнтом та сервером у криптографічну конструкцію, працюючи за транспортними протоколами UDP та TCP. Щоб його використовувати, клієнт і DNS-резолвер повинні підтримувати DNSCrypt. Наприклад, з березня 2016 року його включив на своїх DNS-серверах та у браузері «Яндекс». Про підтримку оголосили й деякі інші провайдери, зокрема Google та Cloudflare. На жаль, їх не так багато (на офіційному сайті перераховано 152 публічні DNS-сервери). Але програму
Як працює DNSCrypt? Якщо коротенько, клієнт бере публічний ключ обраного провайдера і з його допомогою перевіряє його сертифікати. Вже там є короткострокові публічні ключі для сесії та ідентифікатор набору шифрів. Клієнтам рекомендується генерувати новий ключ для кожного запиту, а серверам – міняти ключі кожні 24 години. При обміні ключами застосовується алгоритм X25519, для підпису EdDSA, для блокового шифрування XSalsa20-Poly1305 або XChaCha20-Poly1305.
Один із розробників протоколу Френк Денис
По-перше, це надзвичайно корисно для безпеки: якщо сервер скомпрометований або ключ потік, то вчорашній трафік не може бути розшифрований. Ключ уже змінився. Ймовірно, це становитиме проблему для виконання «закону Ярової», який змушує провайдерів зберігати весь трафік, у тому числі зашифрований. Мається на увазі, що пізніше його можна буде розшифрувати за потреби, запросивши ключ у сайту. Але в даному випадку сайт просто не зможе його надати, тому що використовує короткочасні ключі, видаляючи старі.
Але головне, пише Денис, короткострокові ключі змушують сервери з першого дня настроїти автоматизацію. Якщо сервер підключається до мережі, а скрипти зміни ключів не налаштовані або не працюють, це буде негайно виявлено.
Коли автоматизація змінює ключі раз на кілька років, на неї не можна покластися, а люди можуть забути про закінчення терміну дії сертифіката. При щоденній зміні ключів це буде знайдено миттєво.
У той же час, якщо автоматизація налаштована нормально, то не має значення, як часто проводиться зміна ключів: щороку, щокварталу або тричі на день. Якщо все працює понад 24 години, то працюватиме вічно, пише Френк Денис. За його словами, рекомендація щодобової зміни ключів у другій версії протоколу разом з готовим чином Docker, що реалізує це, ефективно зменшила кількість серверів із сертифікатами, що закінчилися, одночасно покращивши безпеку.
Однак деякі провайдери все-таки вирішили з якихось технічних причин встановити термін дії сертифіката понад 24 години. Цю проблему в основному вирішили за допомогою декількох рядків коду в dnscrypt-proxy: користувачі отримують інформаційне попередження за 30 днів до закінчення терміну дії сертифіката, інше повідомлення з вищим рівнем серйозності за 7 днів до закінчення терміну дії та критичне повідомлення, якщо сертифікат залишився менше 24 годин. Це стосується лише сертифікатів, що спочатку мають тривалий термін дії.
Такі повідомлення дають користувачам можливість повідомити операторам DNS про майбутній закінчення терміну дії сертифіката, доки не стало занадто пізно.
Можливо, якби всі користувачі Firefox отримали таке повідомлення, то хтось напевно повідомив розробникам і ті б не допустили закінчення терміну дії сертифіката. "Я не пам'ятаю жодного DNSCrypt-сервера зі списку загальнодоступних DNS-серверів, у яких минув термін дії сертифіката за останні два або три роки", - пише Френк Денис. У будь-якому випадку, мабуть, краще спочатку попереджати користувачів, а не вимикати розширення без попередження.
Джерело: habr.com