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-тің көптеген заманауи процессорларда арнайы нұсқаулары бар: x86-да AES-NI, ARMv8-де крипто кеңейтімдері және жаңа POWER мен RISC-V жобаларында баламалары. Олар болған кезде GCM әр цикл класына бірнеше блокты параллель орындайды және бағдарламалық іске асыру маңызсыз болады. Бұл серверлер, үстел компьютерлері және қазіргі телефондар үшін әдеттегі жағдай, сондықтан деректер орталығында AES пайдаланыңыз деген кеңес орынды әдепкі болып табылады.
Мәселе екінші деңгейдегі жағдай. Арнайы нұсқауларсыз AES бағдарламалық жасақтамада баяу, ал кестеге негізделген бағдарламалық іске асырулар cache уақыты мәселелерінің ұзақ тарихына ие. Хост қонаққа AES жалаушаларын көрсетпейтін виртуалды машинадағы VPN концентраторы дәл осы жағдай және хост процессорында функция болғандықтан оны байқамау оңай.
Процессордың нені қолдайтынын емес, процестің шын мәнінде нені көретінін тексеріңіз: Linux-та grep -o aes /proc/cpuinfo | head -1 немесе гипервизордың процессор үлгісіндегі балама функция жалаушасы.
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-те жауап — конфигурация жолы және жазылуы тиіс келісілген нәтиже.
Үшіншіден, екі жақ келісе ала ма? Бір серіктес іске асырмайтын шифр — өнімділік шешімі емес, бұл үзіліс. Сондықтан серіктестер тізімі кез келген өлшемнен маңыздырақ: аралас паркке мүмкіндіктердің қиылысы қажет, ең жылдам машинаның қалауы емес.
Егер өлшесеңіз, құрылғыны, соңғы нүктені және жүктемені бірдей ұстап, бір нәрсені өзгертіңіз. Әртүрлі аймақтардағы екі серверді салыстыратын сынақ маршрутты өлшейді, шифрды емес, ал ноутбуктегі өлшем процессор жалаушалары жасырылған контейнер хост туралы ештеңе айтпайды. Салыстырыңыз, содан кейін қай шифр шын мәнінде келісілгенін жазып қойыңыз: бұл жазба өлшемнен құндырақ.