Zašto šifrirani VPN paket može koštati manje nego što mislite
Još jedna kriptografska oznaka nije još jedna jedinica rada. Uporedite cijeli put: AEAD konstrukcija, podrška procesora, baferovanje i dogovoreni režim podataka.
Dva profila se testiraju na istom mrežnom prolazu, jedan sa šifriranjem i jedan bez, i šifrirani nije sporiji. Ponekad je brži, što obično izaziva dugu raspravu o tome je li test ispravno izveden. Rezultat je uvjerljiv, jer cijena paketa nije broj kriptografskih riječi u konfiguraciji. To je skup operacija koje implementacija izvodi, na hardveru koji ima, po rasporedu bafera koji je odabrala.
Simptom: spori nije šifrirani profil
Pretpostavimo da istorijski test poredi AEAD šifru sa režimom „bez šifriranja“ koji ipak računa zaseban kontrolni kod po paketu. Drugi profil skriva sadržaj tereta ali zadržava heš po paketu, a na procesoru bez ubrzanja za taj heš može koštati više od integrisane konstrukcije koju je trebao pobijediti.
Oznaka u konfiguraciji kaže „šifriranje“, a oznaka je sve što većina poređenja gleda. Put paketa govori nešto drugo: jedan profil izvodi kombinovanu operaciju za koju procesor ima instrukcije, a drugi izvodi zasebnu za koju ih nema. Čitanje samo konfiguracijske datoteke nikada neće otkriti tu razliku, jer oba unosa izgledaju kao jedan red. Samo dogovoreni režim i kodni put iza njega objašnjavaju rezultat.
To je cijelo objašnjenje i ono ne zahtijeva nikakvu tvrdnju o tome koja je primitiva univerzalno brža. Obje mogu biti brze, obje mogu biti spore, a redoslijed zavisi od mašine i koda.
Brojite operacije, ne oznake
AEAD konstrukcija, kako je opisana u RFC 5116, daje implementaciji jedan interfejs koji vraća šifrat i oznaku zajedno. AES-GCM je jedan primjer: šifriranje u režimu brojača kombinovano sa Galois autentifikatorom. Interfejs ne čini integritet besplatnim; čini kombinaciju dobro definisanom, a to je ono što implementaciji omogućava da par optimizuje kao jednu cjelinu.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
To su skice obrade, a ne savjeti za konfiguraciju. Prva nema povjerljivost ali ipak troši procesor na autentifikaciju, i upravo zato „isključi šifriranje“ nije sinonim za „isključi kriptografski rad“.
Druga može biti jeftinija jer procesori daju instrukcije za obje polovine: AES runde i množenje bez prenosa koje koristi Galoisovo polje. Biblioteke takođe obrađuju nezavisne bafera paralelno, što te instrukcije drži zauzetim umjesto čekanja na memoriju.
Šta dogovoreni režim zapravo omogućava
U Community OpenVPN, AEAD šifra podataka znači da opcija auth više ne doprinosi vlastitim zasebnim HMAC-om kanala podataka. Referenca za opciju šifriranja opisuje taj obim, i to je razlog zašto se dvije konfiguracije koje u tekstualnoj datoteci izgledaju slično mogu razlikovati u radu po paketu.
Čitajte dogovoreni režim, a ne listu želja. Dozvoljena lista šifri i naziv TLS skupa ne govore koje se operacije izvode na teretu, a stari red cipher možda ne opisuje šta je trenutna veza odabrala.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
Prva komanda ispisuje šifre koje binarna datoteka podržava, što je lista mogućnosti, a ne dogovoreni rezultat. Druga pokazuje šta server zapravo traži. Dnevnik veze je mjesto za potvrdu konačnog izbora, jer klijent može pasti na nešto što server dozvoljava ali niko nije namjeravao.
Mjerite posao koji zaista izvodite
Kriptografski mikromjerak mjeri primitivu pod njenim vlastitim uslovima. VPN prenos takođe kopira bafore, raspoređuje niti ili prekide, provjerava pravila i prelazi mrežu. Ti dijelovi često dominiraju, i zato brža primitiva ne daje uvijek brži tunel.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Te dvije komande daju vam grubo lokalno poređenje primitiva na mašini pred vama i iskrene su u tome da su mikromjerci. One ne govore ništa o propusnosti vašeg tunela i nikada se ne smiju citirati kao takve.
Zatim mjerite posao koji je važan, držeći sve ostalo konstantnim: istu krajnju tačku, iste veličine paketa, isti transport, istu politiku kompresije. Ako je promjena profila promijenila i transport ili mjesto obrade, rezultat opisuje taj paket, a ne kriptografiju.
Držite i cilj na umu. Put podataka sa rezervnim kriptografskim kapacitetom i dalje može biti ograničen latencijom jer aplikacija čeka povratne kruge, a dobici u ukupnom kapacitetu ne popravljaju brbljivi protokol. Mjerite podržanu i politikom odobrenu konfiguraciju kao cjelinu, i tretirajte „manje kutija mora biti brže“ kao hipotezu koja to i jeste. Korisno pitanje nije da li šifriranje nešto košta, nego da li se taj trošak vidi u mjerenju do kojeg vam je zaista stalo.