AES-GCM edo ChaCha20-Poly1305: VPN baten datu-zifratzea aukeratzen
AES-GCM aukera begi-bistakoa da hardwarearen azelerazioa duten zerbitzarietan, eta ChaCha20-Poly1305 da hori gabe ondo dabilena. Agian zure protokoloak erabakiko du zure ordez.
Bi izenak AEAD eraikuntzak dira, biak estandarizatuta daude, eta gaur egungo x86 zerbitzari batean edozeinek gigabit lotura bat beteko du ahalegin ikusgarririk gabe. Aukera arbitrarioa izateari uzten dio zerbitzari hori uzten duzunean: router merkeek, telefono zaharrek eta gailu birtualek sarritan ez dute AES azeleraziorik, eta han aldea handia da. Beraz, konparazioa ez da zein zifratze den azkarrena, baizik eta zein zifratze dabilen ondo amaiera-puntu multzo honetan eta protokoloak aukera eskaintzen duen ala ez.
Lan bera, nukleo desberdinak
Bi eraikuntzek konfidentzialtasuna eta osotasuna ematen dituzte pase bakarrean eta datu elkartuak autentifikatzen dituzte, horregatik erabiltzen dituzte VPN protokoloek datu-kanalerako. Aldea barrurukoa da: AES-GCM AES bloke-zifratzea da kontagailu moduan, GF(2^128) gaineko autentifikatzaile polinomikoarekin, eta ChaCha20-Poly1305 256 biteko gakoa duen fluxu-zifratzea da, erabilera bakarreko autentifikatzaile bereiziarekin.
Operatiboki garrantzitsua dena komuna da: biek huts egiten dute modu katastrofikoan nonce-a berrerabiltzean, biek nonce espazioa kudeatu behar dute gako bakoitzeko, eta batek ere ez du gaizki autentifikatzen duen kidea konpontzen. AES-256-GCM dioen profil bat ez da CHACHA20-POLY1305 dioena baino seguruagoa; biak indartsuak dira inplementazioa zuzena denean.
Non irabazten duen AES-GCM-ek
AESek instrukzio dedikatuak ditu CPU moderno gehienetan: AES-NI x86-n, kriptografia luzapenak ARMv8-n eta baliokideak azken POWER eta RISC-V diseinuetan. Hauek daudenean, GCMek hainbat bloke paraleloan exekutatzen ditu ziklo-klase bakoitzeko, eta software inplementazioa garrantzirik gabea da. Hau ohiko kasua da zerbitzarietan, mahaigainetan eta gaur egungo telefonoetan, eta horregatik AES erabiltzea aholku lehenetsi zentzuzkoa da datu-zentro batean.
Arazoa bigarren mailako kasua da. Instrukzio dedikaturik gabe, AES geldoa da softwarean, eta taulen bidez gidatutako software inplementazioek cache-denboraren arazoen historia luzea dute. Ostalariak gonbidatuari AES banderak erakusten ez dizkion makina birtual batean dabilen VPN kontzentratzailea kasu hori da zehazki, eta erraza da ahaztea ostalariaren CPUak funtzioa duelako.
Egiaztatu prozesuak benetan zer ikusten duen, ez CPUak zer onartzen duen: grep -o aes /proc/cpuinfo | head -1 Linuxen, edo baliokidea den ezaugarri-bandera hiperbisorearen CPU ereduan.
Non irabazten duen ChaCha20-Poly1305-ek
ChaCha20 azkarra da software eramangarrian, batuketa, errotazioa eta XOR besterik ez dituelako erabiltzen, eta haren inplementazioek sekretuaren mende dauden taula-bilaketak diseinuz saihesten dituzte. AES azeleraziorik gabeko gailu batean abantaila materiala da, eta horregatik aukeratu zuen WireGuardek: WireGuard protokoloaren deskribapenak ChaCha20-Poly1305 zerrendatzen du datu-zifratze gisa, alternatibarik gabe.
Aukera bakar horrek zerbait erabilgarria esaten du: AES azeleratuta dagoen hardwarean, WireGuardek zertxobait galduko du errendimenduan AES-GCM-rekin alderatuta, eta egileek hori onartu zuten telefonoetan, etxeko routerretan eta edukiontzien ostalaritan portaera aurreikusgarriaren truke. Zure flota ARM kutxa txikiak badira batez ere, truke hori zure alde dago.
Aurkako kasua x86 kontzentratzaile lanpetua da, non AES-GCM AES-NI-rekin bidea azkarragoa eta hobeto onartua den, eta non ChaCha20ek gigabit bakoitzeko neurtu daitekeen CPUa kostatzen duen. Bi eraikuntzetako bat ere ez da ahulezia; galdera zure hardwareak zein exekutatzen duen merkean da.
Zure protokoloak benetan zer aukeratzen uzten dizun
| Protocol | What you get |
|---|---|
| WireGuard | ChaCha20-Poly1305 only; no negotiation |
| OpenVPN 2.5 and later | Data channel negotiated from data-ciphers: AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305 |
| IPsec / IKEv2 | AES-GCM as a combined-mode transform, or ChaCha20-Poly1305 where both peers implement it |
| OpenVPN control channel | TLS decides; TLS 1.3 offers AES-GCM and ChaCha20-Poly1305 suites |
Kontuan hartu OpenVPN-eko banaketa: kontrol-kanala eta datu-kanala bereiz negoziatzen dira, beraz TLSrako ikusten duzun multzoak ez du ezer esaten zure karga babesten duen zifratzeari buruz. Saioaren laburpenak biak jakinarazten ditu, eta bietatik bakarra irakurtzea nahaste-iturri ohikoa da.
OpenVPN-en datu-kanalaren zifratzea bi muturretako data-ciphers zerrendatik dator. Zerbitzariaren zerrenda eta bezeroaren zerrenda elkartzen ez badira, konexioa data-ciphers-fallback-ek uzten duenera itzultzen da edo erabat huts egiten du, eta huts egite hori normalean geruza okerri egozten zaio. Jarri zerrenda bera bi aldeetan, eta gero berretsi negoziatutako emaitza erregistroan, zerrendaren ordena errespetatu dela suposatu beharrean.
Erabaki ezarpenari buruzko hiru egitatetik
Lehenik, amaiera-puntek AES azelerazioa dute? Kide bakoitzak badu, AES-GCM da aukera merkeena eta mantentzen diren konfigurazio gehienetan lehenetsia. Zati esanguratsu bat router txikiak edo telefono zaharrak badira, ChaCha20-Poly1305ek flotaren isatsa gaitasun-muga bihurtzea eragozten du.
Bigarrenik, protokoloak aukera eskaintzen du? WireGuardekin erabakia zure ordez hartu da, eta lan erabilgarria inguruko tresnek isilpean beste zerbait ordezkatzen ez dutela egiaztatzea da. OpenVPN eta IPsec-ekin, erantzuna konfigurazio-lerro bat eta erregistratu beharreko negoziatutako emaitza bat da.
Hirugarrenik, bi aldeak ados jar daitezke? Kide batek inplementatzen ez duen zifratze bat ez da errendimendu-erabakia, etenaldia baizik. Horregatik kideen zerrendak edozein erreferentzia-neurketak baino gehiago balio du: flota mistoak gaitasunen ebakidura behar du, ez makinarik azkarrenaren lehentasuna.
Neurtzen baduzu, eduki gailua, amaiera-puntua eta karga berdin eta aldatu gauza bat. Eskualde desberdinetako bi zerbitzari alderatzen dituen probak ibilbidea neurtzen du, ez zifratzea, eta eramangarri baten neurketak ez du ezer esaten CPU banderak maskaratuta dituen edukiontzi-ostalari bati buruz. Konparatu, eta gero idatzi zein zifratze negoziatu zen benetan: erregistro horrek neurketak baino gehiago balio du.