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

Симптомот: бавниот не е шифрираниот профил

Да претпоставиме дека историски тест споредува 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

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

Потоа мерете го товарот што е важен, држејќи сѐ друго константно: иста крајна точка, исти големини на пакети, ист транспорт, иста политика на компресија. Ако промената на профилот го сменила и транспортот или местото на обработка, резултатот го опишува тој пакет, а не криптографијата.

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

Поврзани статии