Oba naziva su AEAD konstrukcije, oba su standardizovana, i na savremenom serveru x86 svaka od njih će zasititi gigabitnu vezu bez vidljivog napora. Izbor prestaje da bude proizvoljan kada napustite taj server: jeftini ruteri, stariji telefoni i virtuelni uređaji često nemaju AES ubrzanje, a tamo je razlika velika. Zato poređenje nije koja je šifra brža, nego koja šifra dobro radi na ovom skupu krajnjih tačaka i nudi li protokol uopšte izbor.

Isti posao, druga jezgra

Obe konstrukcije daju poverljivost i integritet u jednom prolazu i autentifikuju pridružene podatke, zbog čega ih VPN protokoli koriste za kanal podataka. Razlika je unutra: AES-GCM je AES blok šifra u režimu brojača sa polinomskim autentifikatorom nad GF(2^128), dok je ChaCha20-Poly1305 protočna šifra sa 256-bitnim ključem i odvojenim jednokratnim autentifikatorom.

Ono što je operativno važno je zajedničko: obe katastrofalno padaju pri ponovnoj upotrebi nonce vrednosti, obe zahtevaju upravljanje prostorom nonce vrednosti po ključu, i nijedna ne popravlja partnera koji autentifikuje pogrešnu stvar. Profil koji kaže AES-256-GCM nije sigurniji od onog koji kaže CHACHA20-POLY1305; oba su jaka kada je implementacija ispravna.

Gde pobeđuje AES-GCM

AES ima namenske instrukcije na većini modernih procesora: AES-NI na x86, kripto ekstenzije na ARMv8 i ekvivalente na novijim POWER i RISC-V dizajnima. Kada su prisutne, GCM izvršava nekoliko blokova paralelno po klasi ciklusa i softverska implementacija postaje nevažna. To je uobičajen slučaj za servere, stona računala i sadašnje telefone, i zato je savet da se koristi AES razuman podrazumevani izbor u data centru.

Problem je slučaj drugog reda. Bez namenskih instrukcija AES je u softveru spor, a softverske implementacije vođene tabelama imaju dugu istoriju problema sa vremenom pristupa kešu. VPN koncentrator u virtuelnoj mašini čiji host ne izlaže AES zastavice gostu je upravo taj slučaj, i lako se propusti jer procesor hosta ima tu funkciju.

Proverite šta proces zaista vidi, a ne šta procesor podržava: grep -o aes /proc/cpuinfo | head -1 na Linuxu, ili odgovarajuću zastavicu funkcije u modelu procesora hipervizora.

Gde pobeđuje ChaCha20-Poly1305

ChaCha20 je brz u prenosivom softveru jer koristi samo sabiranje, rotaciju i XOR, a njegove implementacije po dizajnu izbegavaju pretrage tabela zavisne od tajne. Na uređaju bez AES ubrzanja to je bitna prednost, i zato ga je WireGuard izabrao: opis WireGuard protokola navodi ChaCha20-Poly1305 kao njegovu šifru podataka bez alternative.

Ta jedna odluka govori nešto korisno: na hardveru gde je AES ubrzan, WireGuard odustaje od dela propusnosti u poređenju sa AES-GCM, a njegovi autori su to prihvatili u zamenu za predvidivo ponašanje na telefonima, kućnim ruterima i hostovima kontejnera. Ako je vaša flota uglavnom mala ARM kutija, ta razmena ide u vašu korist.

Suprotan slučaj je zauzet x86 koncentrator, gde je AES-GCM sa AES-NI brži i bolje podržan put, i gde ChaCha20 košta merljiv procesor po gigabitu. Nijedna konstrukcija nije slabost; pitanje je koju vaš hardver izvršava jeftino.

Šta vam protokol zapravo dozvoljava da izaberete

ProtocolWhat you get
WireGuardChaCha20-Poly1305 only; no negotiation
OpenVPN 2.5 and laterData channel negotiated from data-ciphers: AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305
IPsec / IKEv2AES-GCM as a combined-mode transform, or ChaCha20-Poly1305 where both peers implement it
OpenVPN control channelTLS decides; TLS 1.3 offers AES-GCM and ChaCha20-Poly1305 suites

Obratite pažnju na podelu u OpenVPN-u: kontrolni kanal i kanal podataka pregovaraju se odvojeno, pa skup koji vidite za TLS ne govori ništa o šifri koja štiti vaš teret. Sažetak sesije prijavljuje oba, a čitanje samo jednog od dva je čest izvor zabune.

U OpenVPN-u šifra kanala podataka dolazi sa liste data-ciphers na oba kraja. Ako se serverska i klijentska lista ne seku, veza se ili vraća na ono što dozvoljava data-ciphers-fallback, ili potpuno pada, a taj neuspeh se obično pripisuje pogrešnom sloju. Postavite istu listu na obe strane, pa potvrdite pregovarani rezultat u dnevniku umesto da pretpostavljate da je redosled liste ispoštovan.

Odlučite na osnovu tri činjenice o postavljanju

Prvo, imaju li krajnje tačke AES ubrzanje? Ako ima svaki partner, AES-GCM je jeftiniji izbor i podrazumevani u većini održavanih konfiguracija. Ako je značajan deo male ruteri ili stariji telefoni, ChaCha20-Poly1305 sprečava da rep flote postane granica kapaciteta.

Drugo, nudi li protokol uopšte izbor? Kod WireGuard-a je odluka donesena umesto vas, a koristan posao je proveriti da alati oko njega tiho ne podmeću nešto drugo. Kod OpenVPN-a i IPsec-a odgovor je linija konfiguracije i pregovarani rezultat koji treba zabeležiti.

Treće, mogu li se obe strane složiti? Šifra koju jedan partner ne implementira nije odluka o performansama, nego prekid. Zato je lista partnera važnija od bilo kog merenja: mešovita flota treba presek mogućnosti, a ne sklonost najbrže mašine.

Ako merite, držite uređaj, krajnju tačku i opterećenje istim i menjajte jednu stvar. Test koji poredi dva servera u različitim regijama meri rutu, a ne šifru, a merenje na laptopu ne govori ništa o hostu kontejnera čije su procesorske zastavice maskirane. Uporedite, pa zapišite koja je šifra zaista pregovarana: taj zapis vredi više od merenja.

Povezani članci