Majina yote mawili ni miundo ya AEAD, yote mawili yamewekwa kiwango, na kwenye seva ya x86 ya sasa kila moja itajaza kiungo cha gigabiti bila jitihada inayoonekana. Uchaguzi unaacha kuwa wa kiholela unapoondoka kwenye seva hiyo: ruta za bei rahisi, simu za zamani na vifaa pepe mara nyingi hazina uharakishaji wa AES, na huko tofauti ni kubwa. Kwa hiyo ulinganisho si wa siri ipi ni haraka zaidi, bali ni siri ipi inafanya kazi vizuri kwenye kundi hili la vituo vya mwisho, na kama itifaki inatoa uchaguzi hata kidogo.

Kazi moja, viini tofauti

Miundo yote mawili inatoa usiri na uadilifu katika hatua moja na inathibitisha data inayohusiana, ndiyo sababu itifaki za VPN zinazitumia kwa kituo cha data. Tofauti iko ndani: AES-GCM ni siri ya kizuizi ya AES katika hali ya kihesabu yenye kithibitishaji cha polinomia juu ya GF(2^128), wakati ChaCha20-Poly1305 ni siri ya mtiririko yenye ufunguo wa biti 256 na kithibitishaji tofauti cha mara moja.

Kinachojalisha kiutendaji ni cha pamoja: zote mbili zinashindwa vibaya sana wakati nonce inatumiwa tena, zote mbili zinahitaji usimamizi wa nafasi ya nonce kwa kila ufunguo, na hakuna inayotengeneza mwenza anayethibitisha kitu kibaya. Wasifu unaosema AES-256-GCM si salama zaidi kuliko unaosema CHACHA20-POLY1305; zote mbili ni imara wakati utekelezaji ni sahihi.

Mahali AES-GCM inashinda

AES ina maagizo maalum kwenye CPU nyingi za kisasa: AES-NI kwenye x86, viendelezi vya crypto kwenye ARMv8 na vinavyofanana kwenye miundo ya hivi karibuni ya POWER na RISC-V. Zikiwepo, GCM huendesha vizuizi kadhaa kwa wakati mmoja kwa kila daraja la mzunguko, na utekelezaji wa programu hauna umuhimu. Hii ni hali ya kawaida kwa seva, kompyuta za mezani na simu za sasa, na ndiyo sababu ushauri wa kutumia AES ni chaguo la kawaida linalofaa katika kituo cha data.

Tatizo ni hali ya daraja la pili. Bila maagizo maalum AES katika programu ni polepole, na utekelezaji wa programu unaoendeshwa na majedwali ndio wenye historia ndefu ya matatizo ya muda wa cache. Kikusanyaji cha VPN kilicho ndani ya mashine pepe ambayo mwenyeji wake haionyeshi bendera za AES kwa mgeni ndiyo hali hii hasa, na ni rahisi kuikosa kwa sababu CPU ya mwenyeji ina kipengele hicho.

Angalia kile mchakato unaona kwa kweli, si kile CPU inasaidia: grep -o aes /proc/cpuinfo | head -1 kwenye Linux, au bendera ya kipengele inayofanana katika modeli ya CPU ya hypervisor.

Mahali ChaCha20-Poly1305 inashinda

ChaCha20 ni haraka katika programu inayobebeka kwa sababu inatumia tu kujumlisha, kuzungusha na XOR, na utekelezaji wake unaepuka kwa muundo utafutaji wa majedwali unaotegemea siri. Kwenye kifaa kisicho na uharakishaji wa AES hiyo ni faida ya kweli, na ndiyo sababu WireGuard iliichagua: maelezo ya itifaki ya WireGuard yanataja ChaCha20-Poly1305 kama siri yake ya data bila mbadala.

Uchaguzi huo mmoja unasema jambo lenye manufaa: kwenye maunzi ambapo AES inaharakishwa, WireGuard inaachia kiasi cha upitishaji ikilinganishwa na AES-GCM, na waandishi wake wamekubali hilo badala ya tabia inayotabirika kwenye simu, ruta za nyumbani na wenyeji wa kontena. Ikiwa kundi lako ni hasa masanduku madogo ya ARM, ubadilishanaji huo uko upande wako.

Hali kinyume ni kikusanyaji cha x86 chenye shughuli nyingi, ambapo AES-GCM pamoja na AES-NI ni njia ya haraka na inayosaidiwa vizuri zaidi, na ambapo ChaCha20 hutumia CPU inayoweza kupimwa kwa kila gigabiti. Hakuna muundo wowote ulio udhaifu; swali ni upi maunzi yako hutekeleza kwa bei ndogo.

Kile itifaki yako inakuruhusu kuchagua kwa kweli

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

Angalia mgawanyiko katika OpenVPN: kituo cha udhibiti na kituo cha data hujadiliwa kwa tofauti, kwa hiyo seti unayoona kwa TLS haisemi chochote kuhusu siri inayolinda mzigo wako. Muhtasari wa kipindi unaripoti zote mbili, na kusoma moja tu kati ya mbili ni chanzo cha kawaida cha mkanganyiko.

Katika OpenVPN siri ya kituo cha data inatoka kwenye orodha ya data-ciphers kwenye ncha zote mbili. Ikiwa orodha ya seva na orodha ya mteja haziingiliani, muunganisho ama unarudi kwenye kile data-ciphers-fallback inaruhusu au unashindwa kabisa, na kushindwa huko kwa kawaida kunasingiziwa tabaka lisilofaa. Weka orodha hiyo hiyo pande zote mbili, kisha thibitisha matokeo yaliyojadiliwa kwenye kumbukumbu badala ya kudhani mpangilio wa orodha uliheshimiwa.

Amua kutokana na ukweli tatu kuhusu usambazaji

Kwanza, ncha za mwisho zina uharakishaji wa AES? Ikiwa kila mwenza anao, AES-GCM ni chaguo la bei ndogo na la kawaida katika usanidi mwingi unaotunzwa. Ikiwa sehemu kubwa ni ruta ndogo au simu za zamani, ChaCha20-Poly1305 inazuia mkia wa kundi kuwa kikomo cha uwezo.

Pili, itifaki inatoa uchaguzi hata kidogo? Kwa WireGuard uamuzi umeshafanywa kwa niaba yako, na kazi yenye manufaa ni kuthibitisha kuwa zana zinazozunguka haziweki kitu kingine kwa utulivu. Kwa OpenVPN na IPsec jibu ni mstari wa usanidi na matokeo yaliyojadiliwa yanayopaswa kuandikwa.

Tatu, ncha zote mbili zinaweza kukubaliana? Siri ambayo mwenza mmoja haitekelezi si uamuzi wa utendaji, ni kusimama. Ndiyo sababu orodha ya wenzi ni muhimu kuliko kipimo chochote: kundi mchanganyiko linahitaji makutano ya uwezo, si upendeleo wa mashine yenye kasi zaidi.

Ikiwa unapima, weka kifaa, ncha ya mwisho na mzigo sawa na ubadilishe kitu kimoja. Jaribio linalolinganisha seva mbili katika mikoa tofauti hupima njia, si siri, na kipimo kwenye kompyuta ya mkono haisemi chochote kuhusu mwenyeji wa kontena ambaye bendera zake za CPU zimefichwa. Linganisha, kisha andika siri ipi ilijadiliwa kwa kweli: kumbukumbu hiyo ina thamani zaidi kuliko kipimo.

Makala zinazohusiana