Почему зашифрованный пакет VPN может стоить меньше, чем вы думаете
Ещё одна криптографическая метка — это не ещё одна единица работы. Сравните весь путь: конструкция AEAD, поддержка процессора, буферизация и согласованный режим данных.
Два профиля измеряются на одном шлюзе, один с шифрованием, другой без, и зашифрованный не оказывается медленнее. Иногда он быстрее, что обычно вызывает долгий спор о том, правильно ли был проведён тест. Результат правдоподобен, потому что стоимость пакета — это не число криптографических слов в конфигурации. Это набор операций, которые выполняет реализация, на имеющемся оборудовании, при выбранной раскладке буферов.
Симптом: медленный — не зашифрованный профиль
Предположим, исторический тест сравнивает шифр AEAD с режимом «без шифрования», который всё равно вычисляет отдельный код аутентификации на каждый пакет. Второй профиль скрывает содержимое полезной нагрузки, но сохраняет хеш на пакет, и на процессоре без ускорения для этого хеша он может стоить дороже, чем интегрированная конструкция, которую должен был обогнать.
Метка в конфигурации говорит «шифрование», и метка — это всё, на что смотрят большинство сравнений. Путь пакета говорит другое: один профиль выполняет объединённую операцию, для которой у процессора есть инструкции, а другой — отдельную, для которой их нет. Чтение одного лишь файла конфигурации никогда не выявит эту разницу, потому что обе записи выглядят как одна строка. Только согласованный режим и путь кода за ним объясняют результат.
Это всё объяснение, и оно не требует никакого утверждения о том, какой примитив универсально быстрее. Оба могут быть быстрыми, оба могут быть медленными, и порядок зависит от машины и кода.
Считайте операции, а не метки
Конструкция AEAD, как её описывает RFC 5116, даёт реализации единый интерфейс, возвращающий шифртекст и тег вместе. AES-GCM — один пример: шифрование в режиме счётчика в сочетании с аутентификатором Галуа. Интерфейс не делает целостность бесплатной; он делает комбинацию хорошо определённой, и именно это позволяет реализации оптимизировать пару как единое целое.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Это наброски обработки, а не советы по конфигурации. У первого нет конфиденциальности, но он всё равно тратит процессор на аутентификацию, и именно поэтому «отключить шифрование» не синоним «отключить криптографическую работу».
Второй может быть дешевле, потому что процессоры дают инструкции для обеих половин: раунды AES и умножение без переноса, которое использует поле Галуа. Библиотеки также обрабатывают независимые буферы параллельно, что держит эти инструкции занятыми вместо ожидания памяти.
Что на самом деле включает согласованный режим
В Community OpenVPN шифр данных AEAD означает, что опция auth больше не вносит собственный отдельный HMAC канала данных. Справочник по опции шифрования описывает эту область, и именно поэтому две конфигурации, похожие в текстовом файле, могут различаться по работе на пакет.
Читайте согласованный режим, а не список пожеланий. Список разрешённых шифров и имя набора TLS не говорят, какие операции выполняются над полезной нагрузкой, а старая строка cipher может не описывать то, что выбрало текущее соединение.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
Первая команда перечисляет шифры, которые поддерживает бинарный файл, и это список возможностей, а не согласованный результат. Вторая показывает, что сервер на самом деле запрашивает. Журнал соединения — место, где подтверждается окончательный выбор, потому что клиент может откатиться к тому, что сервер разрешает, но никто не предполагал.
Измеряйте ту нагрузку, которую действительно запускаете
Криптографический микробенчмарк измеряет примитив в его собственных условиях. Передача через VPN также копирует буферы, планирует потоки или прерывания, проверяет политику и проходит через сеть. Эти части часто доминируют, и поэтому более быстрый примитив не всегда даёт более быстрый туннель.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Эти две команды дают грубое локальное сравнение примитивов на машине перед вами, и они честно признают, что это микробенчмарки. Они ничего не говорят о пропускной способности вашего туннеля, и на них никогда нельзя ссылаться как на неё.
Затем измеряйте нагрузку, которая важна, держа всё остальное постоянным: та же конечная точка, те же размеры пакетов, тот же транспорт, та же политика сжатия. Если смена профиля изменила ещё и транспорт или место обработки, результат описывает этот набор, а не криптографию.
Держите в поле зрения и цель. Путь данных с запасной криптографической мощностью всё равно может быть ограничен задержкой, потому что приложение ждёт круговых обменов, а выигрыш в общей пропускной способности не исправляет болтливый протокол. Измеряйте поддерживаемую и одобренную политикой конфигурацию целиком, и относитесь к «меньше коробок — значит быстрее» как к гипотезе, которой она и является. Полезный вопрос не в том, стоит ли шифрование чего-то, а в том, проявляется ли эта цена в том измерении, которое вам действительно важно.