Чи варто нашаровувати два рівні VPN? Три умови для перевірки
Два рівні VPN допомагають лише тоді, коли вони закінчуються на різних хостах і використовують незалежні ключі. Три умови вирішують, чи вкладеність додає безпеку, чи лише навантаження на процесор.
Перш ніж додати другий рівень шифрування до VPN, чесно дайте відповідь на одне питання: що залишається в спостерігача після того, як обидва рівні виконали свою роботу? Якщо відповідь — внутрішній шифротекст, незмінний, то вкладеність купила час і нічого більше. Далі йде процедура прийняття рішення, а не рекомендація. Та сама схема виявляється витраченим процесором в одному розгортанні й правильною відповіддю в іншому, і їх розділяють лише три умови.
Запишіть, що зберігає спостерігач
Зафіксуйте об'єкт, який противник може зберегти сьогодні, а потім послідовність зняттів, яка зрештою розкрила б відкритий текст. Зовнішній тунель створює шифротекст; коли його захист закінчується, залишається шифротекст внутрішнього тунелю, все ще запечатаний. Зняти обгортку — не розшифрувати. Це речення описує вкладеність, і воно правильне лише поки живий внутрішній ключ. У той момент, коли два рівні хоч щось спільно використовують, шкала часу стискається в одну подію.
Отже, корисний артефакт — шкала часу, а не схема з прямокутників. Для кожного рівня запишіть кінцеву точку, власника ключа, перевірку особи та рік, у якому очікується відмова припущення.
Практичний спосіб перевірити власне твердження: припустіть, що спостерігач записує все і ніколи не здається. За такого припущення чи захищає проєкт корисне навантаження протягом потрібного терміну? Якщо відповідь залежить від того, що спостерігач вирішить не зберігати трафік, у проєкту немає відповіді.
Умова перша: чи закінчуються рівні в різних місцях?
Вкладеність окупається, коли два рівні закінчуються в різних доменах довіри, наприклад шлюз IPsec під управлінням провайдера перед тунелем прикладного рівня, який закінчується всередині вашої власної мережі. Тоді злам зовнішнього рівня дає шифротекст, відкрити який може лише ваш хост, а провайдер у жоден момент не бачить відкритого тексту. Поставте обидва рівні на той самий шлюз — і ця властивість зникає. Хто скомпрометує коробку, той читає трафік між двома операціями розшифрування, скільки б обгорток не показувала схема.
Перевіряйте це встановленим станом, а не проєктом. У Linux ip xfrm state перелічує кожну асоціацію безпеки та її кінцеві точки, що й визначає, де насправді зупиняється кожен рівень.
Умова друга: чи справді незалежний ключовий матеріал?
Два рівні, побудовані з одного сертифіката, одного попередньо розподіленого ключа або однієї бібліотеки постачальника, — це один рівень із зайвими кроками. Тоді один витік облікових даних відкриває обидва, а одна помилка реалізації прибирає обидва одразу. Незалежність має бути видимою в конфігурації, а не заявленою на слайді.
Саме тут гібридне встановлення ключів перевершує нашаровування тунелів. IKEv2 може провести кілька обмінів ключами в одних переговорах, тож класична група й постквантовий KEM можуть обидва живити ті самі сеансові ключі замість того, щоб обертатися один навколо одного. Результат — одна асоціація безпеки, ключі якої залежать від обох секретів, і атакувальник мусить зламати обидва. Це документована конструкція з визначеним складом, чого не можна сказати про саморобний стек із двох продуктів VPN. У strongSwan swanctl --list-sas виводить узгоджену пропозицію для кожного SA, і так ви підтверджуєте, що справді працювало, а не те, що ви налаштували.
Умова третя: чи переживають дані зовнішнє припущення?
Рівню, який має триматися двадцять років, потрібен двадцятирічний аргумент. Записати зараз і розшифрувати пізніше дешево, і саме тому класичний зовнішній рівень не можна вважати тимчасовою обгорткою навколо чогось міцнішого.
Питайте, коли кожен ключ стає відновлюваним, а не чи зламано шифр сьогодні. Статичний обмін ключами без прямої секретності відмовляє заднім числом того дня, коли падає закритий ключ. Ефемерне узгодження ключів відмовляє лише для сеансів, які атакувальник може атакувати, поки вони живі, або коли слабшає сам алгоритм. Ця різниця вирішує, чи допомагає внутрішній рівень ще в 2040 році. Вона ж вирішує, чи зовнішній рівень узагалі щось змінює, адже зовнішній рівень із слабшим терміном життя ключа просто стає найранішою точкою на шкалі часу.
Що будувати натомість, коли відповідь негативна
Якщо будь-яка з трьох умов не виконується, відмовтеся від вкладеності й витратьте зусилля на рівень, який справді несе вимогу до терміну. Налаштуйте гібридний обмін ключами в протоколі, який ви вже використовуєте, підтримуйте реалізацію актуальною і запишіть склад, на який ви покладаєтеся. Згадка ML-KEM у проєктному документі не є властивістю безпеки, а FIPS 203 визначає механізм інкапсуляції ключів, а не ваш тунель.
Там, де другий рівень справді заслуговує своє місце, описуйте його як захист у глибину, а не як доказ. Потім перевірте склад: яка кінцева точка тримає який ключ, яку особу перевіряє кожна сторона і що може прочитати оператор із доступом до консолі. Проєкт, який проходить ці три питання, вартий додаткового процесора. Той, який не проходить, — лише схема.
Перед вікном змін зафіксуйте поточну таблицю SA і узгоджені пропозиції, а після нього зафіксуйте їх знову й порівняйте, бо єдиний доказ, який має значення, — це те, про що пристрої справді домовилися.