Miért kerülhet kevesebbe egy titkosított VPN-csomag, mint gondolná
Egy újabb kriptográfiai címke nem egy újabb munkaegység. Hasonlítsa össze a teljes útvonalat: AEAD-konstrukció, CPU-támogatás, pufferelés és az egyeztetett adatmód.
Két profilt mérnek ugyanazon az átjárón, az egyiket titkosítással, a másikat anélkül, és a titkosított nem lassabb. Néha gyorsabb, ami általában hosszú vitát indít arról, hogy a tesztet megfelelően futtatták-e. Az eredmény hihető, mert egy csomag költsége nem a konfiguráció kriptográfiai szavainak száma. Hanem azoknak a műveleteknek a halmaza, amelyeket a megvalósítás végrehajt, a rendelkezésére álló hardveren, a választott pufferkiosztás szerint.
A tünet: nem a titkosított profil a lassú
Tegyük fel, hogy egy korábbi teszt egy AEAD-rejtjelet hasonlít össze egy „titkosítás nélküli“ móddal, amely még mindig külön hitelesítő kódot számít csomagonként. A második profil elrejti a hasznos teher tartalmát, de csomagonkénti hash-t tart, és egy olyan processzoron, amelynek nincs gyorsítása ehhez a hash-hez, többe kerülhet, mint az az integrált konstrukció, amelyet le kellett volna győznie.
A konfigurációban lévő címke „titkosítást“ mond, és a legtöbb összehasonlítás csak a címkét nézi. A csomag útvonala mást mond: az egyik profil olyan kombinált műveletet végez, amelyhez a CPU-nak vannak utasításai, a másik pedig olyan különállót, amelyhez nincsenek. A konfigurációs fájl önmagában való olvasása soha nem tárja fel ezt a különbséget, mert mindkét bejegyzés egy sornak tűnik. Csak az egyeztetett mód és a mögötte lévő kódútvonal magyarázza az eredményt.
Ez a teljes magyarázat, és nem igényel semmilyen állítást arról, melyik primitív univerzálisan gyorsabb. Mindkettő lehet gyors, mindkettő lehet lassú, és a sorrend a géptől és a kódtól függ.
Műveleteket számoljon, ne címkéket
Az AEAD-konstrukció, ahogyan az RFC 5116 leírja, egyetlen interfészt ad a megvalósításnak, amely a rejtjelszöveget és a címkét együtt adja vissza. Az AES-GCM egy példa: számláló módú titkosítás Galois-hitelesítővel kombinálva. Az interfész nem teszi ingyenessé az integritást; jól definiálttá teszi a kombinációt, és ez az, ami lehetővé teszi a megvalósítás számára, hogy a párt egy egységként optimalizálja.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Ezek feldolgozási vázlatok, nem konfigurációs tanácsok. Az elsőnek nincs bizalmassága, de mégis CPU-t költ a hitelesítésre, és éppen ezért a „kapcsold ki a titkosítást“ nem szinonimája a „kapcsold ki a kriptográfiai munkát“ kifejezésnek.
A második olcsóbb lehet, mert a processzorok utasításokat adnak mindkét félhez: AES-körök és a Galois-mező által használt átvitel nélküli szorzás. A könyvtárak a független puffereket párhuzamosan dolgozzák fel, ami ezeket az utasításokat elfoglaltan tartja a memóriára várás helyett.
Mit tesz valójában lehetővé az egyeztetett mód
A Community OpenVPN esetében az AEAD adatrejtjel azt jelenti, hogy a auth opció már nem járul hozzá saját külön adatcsatorna-HMAC-kal. A titkosítási opció referenciája leírja ezt a hatókört, és ez az oka annak, hogy két szöveges fájlban hasonlónak tűnő konfiguráció eltérhet a csomagonkénti munkában.
Az egyeztetett módot olvassa, ne a kívánságlistát. Az engedélyezett rejtjelek listája és egy TLS-csomag neve nem mondja meg, milyen műveletek futnak a hasznos teheren, és egy régi cipher sor nem feltétlenül írja le, mit választott a jelenlegi kapcsolat.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
Az első parancs felsorolja a bináris által támogatott rejtjeleket, ami képességlista, nem az egyeztetett eredmény. A második megmutatja, mit kér valójában a kiszolgáló. A kapcsolatnapló az a hely, ahol a végső választást megerősítjük, mert egy kliens visszaeshet valamire, amit a kiszolgáló engedélyez, de senki sem szándékozott.
Mérje azt a terhelést, amelyet valóban futtat
Egy kriptográfiai mikromérés egy primitívet a saját feltételei között mér. Egy VPN-átvitel puffereket is másol, szálakat vagy megszakításokat ütemez, házirendet ellenőriz és áthalad a hálózaton. Ezek a részek gyakran dominálnak, ezért egy gyorsabb primitív nem mindig eredményez gyorsabb alagutat.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Ez a két parancs durva helyi összehasonlítást ad a primitívekről az Ön előtt álló gépen, és őszinték abban, hogy mikromérések. Semmit sem mondanak az alagút áteresztőképességéről, és soha nem szabadna annak nevezni őket.
Ezután mérje azt a terhelést, amely számít, minden mást változatlanul tartva: ugyanaz a végpont, ugyanazok a csomagméretek, ugyanaz a szállítás, ugyanaz a tömörítési házirend. Ha a profilváltás a szállítást vagy a feldolgozási helyet is megváltoztatta, az eredmény ezt a csomagot írja le, nem a kriptográfiát.
Tartsa a célt is szem előtt. Egy szabad kriptográfiai kapacitással rendelkező adatútvonal még mindig késleltetéshez kötött lehet, mert az alkalmazás oda-vissza utakra vár, és a nagy kapacitás nyeresége nem javít egy beszédes protokollt. Mérje a támogatott és házirend által jóváhagyott konfigurációt egészként, és kezelje a „kevesebb doboznak gyorsabbnak kell lennie“ állítást azzal a hipotézissel, ami valójában. A hasznos kérdés nem az, hogy a titkosítás kerül-e valamibe, hanem hogy a költség megjelenik-e abban a mérésben, amely igazán számít Önnek.