AES-GCM эсвэл ChaCha20-Poly1305: VPN-ийн өгөгдлийн шифрийг сонгох
AES-GCM нь техник хангамжийн хурдасгууртай серверт тодорхой сонголт бөгөөд ChaCha20-Poly1305 нь түүнгүйгээр ч сайн ажилладаг. Таны протокол таны оронд шийдэж магадгүй.
Хоёр нэр хоёулаа AEAD бүтэц, хоёулаа стандартлагдсан, одоогийн x86 сервер дээр аль нь ч харагдах хүчин чармайлтгүйгээр гигабит холбоосыг дүүргэнэ. Тэр серверээс гарах үед л сонголт дур зоргоороо байхаа болино: хямд чиглүүлэгч, хуучин утас, виртуал төхөөрөмжүүдэд AES хурдасгуур ихэвчлэн байхгүй бөгөөд тэнд ялгаа их. Тиймээс харьцуулалт нь аль шифр хурдан бэ гэсэн биш, аль шифр энэ төгсгөлийн цэгүүдийн багц дээр сайн ажилладаг, протокол сонголт санал болгодог уу гэсэн юм.
Нэг ажил, өөр цөм
Хоёр бүтэц нь нэг дамжуулалтад нууцлал, бүрэн бүтэн байдлыг өгч, холбогдох өгөгдлийг баталгаажуулдаг тул VPN протоколууд тэдгээрийг өгөгдлийн сувагт ашигладаг. Ялгаа нь дотор байна: AES-GCM нь GF(2^128) дээр олон гишүүнт баталгаажуулагчтай тоолуурын горим дахь AES блок шифр, харин ChaCha20-Poly1305 нь 256 битийн түлхүүртэй урсгал шифр бөгөөд тусдаа нэг удаагийн баталгаажуулагчтай.
Үйл ажиллагааны хувьд чухал зүйл нийтлэг: хоёулаа nonce-г дахин ашиглахад гамшигтайгаар бүтэлгүйтдэг, хоёуланд нь түлхүүр бүрт nonce орон зайг удирдах шаардлагатай, аль нь ч буруу зүйлийг баталгаажуулж буй түншийг засдаггүй. AES-256-GCM гэж хэлсэн профайл CHACHA20-POLY1305 гэж хэлсэнээс аюулгүй биш; хэрэгжүүлэлт зөв бол хоёулаа хүчтэй.
AES-GCM хаана ялдаг
AES нь ихэнх орчин үеийн CPU дээр тусгай заавартай: x86 дээр AES-NI, ARMv8 дээр крипто өргөтгөлүүд, сүүлийн POWER ба RISC-V загваруудад тэнцэх зүйлс. Эдгээр байвал GCM циклийн ангилал тутамд хэд хэдэн блокийг зэрэгцээ гүйцэтгэдэг бөгөөд програм хангамжийн хэрэгжүүлэлт хамаагүй болно. Энэ нь сервер, ширээний компьютер, одоогийн утаснуудад ердийн тохиолдол бөгөөд өгөгдлийн төвд AES ашигла гэсэн зөвлөгөө үндэслэлтэй өгөгдмөл байдаг шалтгаан юм.
Асуудал нь хоёрдугаар зэргийн тохиолдол. Тусгай зааваргүйгээр програм хангамжийн AES удаан, хүснэгтэд суурилсан програм хангамжийн хэрэгжүүлэлтүүд нь cache-ийн цаг хугацааны асуудлын урт түүхтэй. Хост нь зочинд AES туг харуулдаггүй виртуал машин дахь VPN төвлөрүүлэгч яг энэ тохиолдол бөгөөд хостын CPU-д энэ боломж байдаг тул анзаарахад хэцүү.
CPU юуг дэмждэг биш, процесс юуг үнэхээр харж байгааг шалгана уу: Linux дээр grep -o aes /proc/cpuinfo | head -1, эсвэл гипервизорын CPU загвар дахь тэнцэх боломжийн туг.
ChaCha20-Poly1305 хаана ялдаг
ChaCha20 зөөврийн програм хангамжид хурдан, учир нь зөвхөн нэмэх, эргүүлэх, XOR ашигладаг бөгөөд түүний хэрэгжүүлэлтүүд зохион байгуулалтаараа нууцаас хамааралтай хүснэгт хайлтаас зайлсхийдэг. AES хурдасгуургүй төхөөрөмж дээр энэ нь бодит давуу тал бөгөөд WireGuard үүнийг сонгосон шалтгаан юм: WireGuard протоколын тайлбар ChaCha20-Poly1305-ыг өөр хувилбаргүйгээр түүний өгөгдлийн шифр гэж жагсаасан.
Тэр нэг сонголт хэрэгтэй зүйл хэлдэг: AES хурдасгагдсан техник хангамж дээр WireGuard AES-GCM-тэй харьцуулахад бага зэрэг дамжуулах чадвараа алддаг бөгөөд зохиогчид нь утас, гэрийн чиглүүлэгч, контейнер хост дээр урьдчилан таамаглах боломжтой зан үйлийн төлөө үүнийг хүлээн зөвшөөрсөн. Хэрэв таны флот голчлон жижиг ARM хайрцаг бол энэ солилцоо таны талд.
Эсрэг тохиолдол нь завгүй x86 төвлөрүүлэгч бөгөөд тэнд AES-NI-тэй AES-GCM нь илүү хурдан, илүү сайн дэмжигдсэн зам, ChaCha20 нь гигабит тутамд хэмжигдэх процессор зарцуулдаг. Аль ч бүтэц сул тал биш; асуулт нь таны техник хангамж аль нэгийг хямд гүйцэтгэдэг вэ гэдэг.
Таны протокол үнэхээр юу сонгохыг зөвшөөрдөг
| 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 |
OpenVPN дахь хуваагдлыг анхаарна уу: хяналтын суваг ба өгөгдлийн суваг тус тусад нь хэлэлцэгддэг, тиймээс TLS-д харж буй багц таны ачааллыг хамгаалах шифрийн талаар юу ч хэлэхгүй. Сессийн хураангуй хоёуланг нь мэдээлдэг бөгөөд хоёрын зөвхөн нэгийг унших нь төөрөгдлийн нийтлэг эх сурвалж.
OpenVPN-д өгөгдлийн сувгийн шифр нь хоёр төгсгөлийн data-ciphers жагсаалтаас ирдэг. Серверийн жагсаалт ба клиентийн жагсаалт огтлолцохгүй бол холболт data-ciphers-fallback зөвшөөрсөн зүйл рүү буцах эсвэл бүрмөсөн бүтэлгүйтэх бөгөөд тэр бүтэлгүйтлийг ихэвчлэн буруу давхаргад тохоодог. Хоёр талд ижил жагсаалт тавьж, дараа нь жагсаалтын дараалал сахигдсан гэж таамаглахын оронд хэлэлцсэн үр дүнг лог дээр баталгаажуулаарай.
Байршуулалтын гурван баримтаас шийд
Нэгд, төгсгөлийн цэгүүдэд AES хурдасгуур байгаа юу? Түнш бүрт байвал AES-GCM нь хямд сонголт бөгөөд ихэнх арчилгаатай тохиргоонд өгөгдмөл. Хэрэв чухал хэсэг нь жижиг чиглүүлэгч эсвэл хуучин утас бол ChaCha20-Poly1305 нь флотын сүүлийг багтаамжийн хязгаар болохоос сэргийлдэг.
Хоёрт, протокол сонголт санал болгодог уу? WireGuard-тай бол шийдвэрийг таны оронд гаргасан бөгөөд ашигтай ажил нь түүний эргэн тойрны хэрэгслүүд чимээгүйгээр өөр зүйл орлуулж байгаа эсэхийг шалгах юм. OpenVPN ба IPsec-тэй бол хариулт нь тохиргооны мөр ба бүртгэх ёстой хэлэлцсэн үр дүн.
Гуравт, хоёр тал тохиролцож чадах уу? Нэг түнш хэрэгжүүлээгүй шифр нь гүйцэтгэлийн шийдвэр биш, тасалдал юм. Тиймээс түншүүдийн жагсаалт аливаа хэмжүүрээс чухал: холимог флотод чадваруудын огтлолцол хэрэгтэй, хамгийн хурдан машины сонголт биш.
Хэрэв хэмжих бол төхөөрөмж, төгсгөлийн цэг, ачааллыг ижил байлгаж нэг зүйлийг өөрчил. Өөр бүс нутгийн хоёр серверийг харьцуулсан туршилт зам хэмждэг, шифр биш, зөөврийн компьютер дээрх хэмжүүр нь CPU туг нь далдлагдсан контейнер хост тухай юу ч хэлэхгүй. Харьцуул, дараа нь аль шифр үнэхээр хэлэлцэгдсэнийг бичиж үлдээ: тэр бүртгэл хэмжүүрээс илүү үнэ цэнэтэй.