Два профила се мере на истом гејтвеју, један са шифровањем и један без, и шифрирани није спорији. Понекад је бржи, што обично изазива дугу расправу о томе да ли је тест исправно изведен. Резултат је уверљив, јер цена пакета није број криптографских речи у конфигурацији. То је скуп операција које извршава имплементација, на хардверу који има, према распореду бафера који је изабрала.

Симптом: спор није шифрирани профил

Претпоставимо да историјски тест пореди AEAD шифру са режимом „без шифровања“ који и даље израчунава засебан код за аутентикацију по пакету. Други профил скрива садржај корисног терета, али задржава хеш по пакету, и на процесору без убрзања за тај хеш може да кошта више од интегрисане конструкције коју је требало да победи.

Ознака у конфигурацији каже „шифровање“, и ознака је све на шта већина поређења гледа. Пут пакета каже нешто друго: један профил извршава комбиновану операцију за коју процесор има инструкције, а други засебну за коју их нема. Читање само конфигурационе датотеке никада неће открити ту разлику, јер оба уноса изгледају као један ред. Само договорени режим и пут кода иза њега објашњавају резултат.

То је цело објашњење, и оно не захтева никакву тврдњу о томе која је примитива универзално бржа. Обе могу бити брзе, обе могу бити споре, а редослед зависи од машине и кода.

Бројте операције, не ознаке

AEAD конструкција, како је описује RFC 5116, даје имплементацији један интерфејс који враћа шифрат и ознаку заједно. AES-GCM је један пример: шифровање у режиму бројача комбиновано са Galois аутентикатором. Интерфејс не чини интегритет бесплатним; чини комбинацију добро дефинисаном, и то је оно што омогућава имплементацији да пар оптимизује као једну целину.

Separate authentication path:
  payload -> independent HMAC -> framed packet

AEAD path:
  payload -> authenticated encryption with tag -> framed packet

Ово су скице обраде, не савети за конфигурацију. Први нема поверљивост, али и даље троши процесор на аутентикацију, и управо зато „искључи шифровање“ није синоним за „искључи криптографски рад“.

Други може бити јефтинији јер процесори дају инструкције за обе половине: AES рунде и множење без преноса које користи Galois поље. Библиотеке такође обрађују независне бафере паралелно, што те инструкције држи заузетим уместо да чекају меморију.

Шта договорени режим заправо омогућава

У 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

Ове две команде вам дају грубо локално поређење примитива на машини пред вама, и искрене су да су микромерила. Оне не говоре ништа о пропусној моћи вашег тунела, и никада не треба да се цитирају као такве.

Затим мерите оптерећење које је важно, држећи све остало константним: иста крајња тачка, исте величине пакета, исти транспорт, иста политика компресије. Ако је промена профила променила и транспорт или место обраде, резултат описује тај пакет, а не криптографију.

Држите и циљ на видику. Пут података са слободним криптографским капацитетом и даље може бити ограничен кашњењем, јер апликација чека путовања напред и назад, а добици у масовном капацитету не поправљају брбљиви протокол. Мерите подржане и од политике одобрене конфигурације као целину, и третирајте „мање кутија мора бити брже“ као хипотезу која то јесте. Корисно питање није да ли шифровање нешто кошта, већ да ли се трошак појављује у мерењу до којег вам је заиста стало.

Повезани чланци