Запитайте, яке шифрування використовує VPN, і відповідь зазвичай приходить одним словом: AES-256, або ChaCha20, або можливо WireGuard. Ця відповідь називає один компонент одного рівня, тоді як те, що справді захищає з єднання, це набір алгоритмів, які виконують чотири різні ролі. Плутати компонент із компонуванням це найпоширеніша помилка в таких розмовах, і вона породжує порівняння, які неможливо розв язати.

Чотири завдання в одному з єднанні

Масове шифрування перетворює відкритий текст на шифротекст для каналу даних, і його ключ виводиться, а не передається. Захист цілісності виявляє зміну, і це окреме завдання, навіть якщо одна конструкція робить і те, і інше. Встановлення ключів створює спільний матеріал трафіку, а автентифікація партнера вирішує, хто на іншому кінці. Якщо бракує бодай одного, з єднання небезпечне, яким би міцним не був залишок.

Деякі схеми об єднують дві ролі в одну. AES-GCM і ChaCha20-Poly1305 це автентифіковані конструкції шифрування, тому конфіденційність і цілісність приходять разом; AES-CBC ні, йому потрібен окремий код автентифікації повідомлення з власним ключем. Тому читання пропозиції як мішка незалежних чисел неправильно читає ті, що задумані парами.

Ролі лежать і на різних рівнях, тому те саме слово в двох продуктах може означати різне. Блоковий шифр усередині ESP і блоковий шифр усередині TLS це той самий примітив у різних переговорах з різними вимогами. Тому цитування примітиву без його режиму й рівня може бути гірше, ніж не цитувати нічого.

Чому назва шифру майже нічого не каже

Поставтеся до фрази AES-256 серйозно на мить: вона позначає блоковий шифр і розмір ключа. Вона нічого не каже про режим роботи, про те, чи забезпечена цілісність, як установлено ключі або як автентифіковано партнера. Два продукти можуть обидва рекламувати AES-256 і відрізнятися в усьому іншому, включно з одним у неавтентифікованому режимі та іншим у режимі AEAD із сучасним обміном ключами.

TLS 1.3 вніс це розділення в стандарт, що є корисною поправкою для всіх, хто вчив старший словник. Його набори шифрів називають лише AEAD і хеш, тоді як групи обміну ключами й алгоритми підпису узгоджуються як окремі параметри. Тому назва набору TLS 1.3 незрівнянна з назвою набору TLS 1.2 на рівних умовах, хоча обидві з являються в тому самому полі файлу конфігурації. Аудитор, який порівнює два рядки безпосередньо, робить висновок, якого протокол не підтримує. Прочитайте також узгоджену групу й параметри підпису, інакше порівняння неповне.

WireGuard обирає зворотний шлях і майже повністю прибирає переговори: протокол задає фіксований набір алгоритмів, тому дві реалізації або працюють разом, або ні. Це законний вибір проєктування, і він також означає, що питання, який набір узгоджує WireGuard, не має відповіді, вартої порівняння. Якщо ви його аудитуєте, прочитайте специфікацію один раз і потім аудитуйте керування ключами навколо неї, а не переговори.

Рівень визначає словник

Розгортання IPsec узгоджує двічі: пропозицію IKE для каналу керування й перетворення ESP для даних, і обидві можуть законно різнитися. Читати першу й припускати, що вона описує другу, це часте джерело плутанини під час аудиту, бо файл конфігурації згадує обидві, а цікава друга.

LayerWhat is negotiated thereWhat it does not cover
IKE proposalAlgorithms and groups for the control channel that builds the tunnelThe algorithms protecting the data itself
ESP transformEncryption and integrity for tunneled packetsPeer identity, which authentication already settled
TLS handshakeAEAD and hash, plus separately negotiated groups and signaturesRouting, authorization or retention policy
WireGuardNothing; the algorithm set is fixed by the protocolEverything above the cryptographic arrangement

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

Специфікація TLS 1.3 це найясніший опублікований приклад цього розділення, бо вона визначає набір як пару й переносить решту в його власні переговори. Коли ця форма знайома, пропозиція IPsec і єдиний фіксований набір WireGuard читаються як варіанти тієї самої ідеї.

Прочитайте узгоджений результат, потім зупиніться

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

openssl s_client -connect vpn.example.net:443 -brief
ipsec statusall
wg show

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

Потім згадайте, чого набір не покриває. Маршрути, дозволи застосунків, журналювання й зберігання це окремі рішення з власним оглядом, і сумісне криптографічне компонування нічого про них не каже. Розмова про шифр варта того, але відповідає на вужче питання, ніж те, яке більшість людей насправді ставить.

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

Схожі статті