Два профила се тестват на един и същ шлюз, единият с криптиране, другият без, и криптираният не се оказва по-бавен. Понякога е по-бърз, което обикновено поражда дълъг спор дали тестът е проведен правилно. Резултатът е правдоподобен, защото цената на един пакет не е броят на криптографските думи в конфигурацията. Това е наборът от операции, които реализацията извършва, върху хардуера, с който разполага, и по схемата на буфера, която е избрала.

Симптомът: бавният не е криптираният профил

Да предположим, че исторически тест сравнява 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

Тези две команди ви дават грубо локално сравнение на примитивите на машината пред вас и са честни, че са микротестове. Те не казват нищо за пропускателната способност на тунела ви и никога не бива да се цитират като такава.

След това измерете натоварването, което има значение, като държите всичко друго постоянно: същата крайна точка, същите размери на пакетите, същият транспорт, същата политика за компресия. Ако промяната на профила е променила и транспорта или мястото на обработка, резултатът описва този пакет, а не криптографията.

Дръжте целта пред очите си също. Път за данни със свободен криптографски капацитет може все още да е ограничен от закъснение, защото приложението чака двупосочни обмени, а печалбите в общия капацитет не поправят приказлив протокол. Измерете поддържаната и одобрена от политиката конфигурация като цяло и третирайте „по-малко кутии трябва да е по-бързо“ като хипотезата, която е. Полезният въпрос не е дали криптирането струва нещо, а дали цената се показва в измерването, което наистина ви интересува.

Подобни статии