AES-GCM yoxsa ChaCha20-Poly1305: VPN məlumat şifrəsini seçmək
AES-GCM aparat sürətləndirməsi olan serverlərdə aşkar seçimdir, ChaCha20-Poly1305 isə onsuz yaxşı işləyir. Protokolunuz sizin əvəzinizə qərar verə bilər.
Hər iki ad AEAD quruluşudur, hər ikisi standartlaşdırılıb və müasir x86 serverdə hansısa biri gigabitlik kanalı nəzərəçarpan səy göstərmədən doyurur. Seçim yalnız o serverdən çıxanda özbaşına olur: ucuz routerlər, köhnə telefonlar və virtual cihazlarda çox vaxt AES sürətləndirməsi olmur və orada fərq böyükdür. Yəni müqayisə hansı şifrin daha sürətli olması deyil, hansı şifrin bu son nöqtələr dəstində yaxşı işləməsi və protokolun ümumiyyətlə seçim təklif edib-etməməsidir.
Eyni iş, fərqli nüvələr
Hər iki quruluş məxfilik və bütövlüyü bir keçiddə verir və əlaqəli məlumatı təsdiqləyir, buna görə VPN protokolları onları məlumat kanalı üçün istifadə edir. Fərq içəridədir: AES-GCM sayğac rejimində AES blok şifridir və GF(2^128) üzərində çoxhədli təsdiqləyicisi var, ChaCha20-Poly1305 isə 256 bit açarı olan axın şifridir və ayrıca birdəfəlik təsdiqləyicisi var.
Əməliyyat baxımından vacib olan ortaqdır: hər ikisi nonce təkrar istifadəsində fəlakətli şəkildə sıradan çıxır, hər ikisi hər açar üçün nonce sahəsinin idarə edilməsini tələb edir və heç biri səhv şeyi təsdiqləyən tərəfdaşı düzəltmir. AES-256-GCM deyən profil CHACHA20-POLY1305 deyəndən daha təhlükəsiz deyil; tətbiq düzgün olduqda hər ikisi güclüdür.
AES-GCM harada qalib gəlir
AES əksər müasir prosessorlarda xüsusi təlimatara malikdir: x86 üzərində AES-NI, ARMv8 üzərində kripto genişlənmələri, həmçinin yeni POWER və RISC-V dizaynlarında ekvivalentlər. Bunlar olduqda GCM hər dövr sinfində bir neçə bloku paralel işlədir və proqram tətbiqi əhəmiyyətsiz olur. Bu, serverlər, masaüstü kompüterlər və mövcud telefonlar üçün adi haldır və buna görə məlumat mərkəzində AES istifadə et məsləhəti ağlabatan standartdır.
Problem ikinci dərəcəli haldır. Xüsusi təlimatlar olmadan proqramda AES yavaşdır və cədvəl əsaslı proqram tətbiqləri uzun keş-vaxt problemləri tarixinə malik olanlardır. Hostun qonağa AES bayraqlarını göstərmədiyi virtual maşında işləyən VPN konsentratoru məhz bu haldır və host prosessorunda funksiya olduğu üçün asanlıqla gözdən qaçır.
Prosessorun nə dəstəklədiyinə deyil, prosesin həqiqətən nə gördüyünə baxın: Linuxda grep -o aes /proc/cpuinfo | head -1 və ya hipervizarda prosessor modelindəki ekvivalent funksiya bayrağı.
ChaCha20-Poly1305 harada qalib gəlir
ChaCha20 daşınan proqramda sürətlidir, çünki yalnız toplama, fırlatma və XOR istifadə edir və tətbiqləri dizayn üzrə sirrdən asılı cədvəl axtarışlarından çəkinir. AES sürətləndirməsi olmayan cihazda bu maddi üstünlükdür və WireGuard məhz buna görə onu seçdi: WireGuard protokolunun təsviri ChaCha20-Poly1305-i alternativsiz məlumat şifrəsi kimi sadalayır.
Bu tək seçim faydalı bir şey deyir: AES sürətləndirilən aparatda WireGuard AES-GCM ilə müqayisədə bir qədər ötürmə qabiliyyətindən imtina edir və müəllifləri telefonlar, ev routerləri və konteyner hostları arasında proqnozlaşdırıla bilən davranış müqabilində bunu qəbul ediblər. Donanmanız əsasən kiçik ARM qutularıdırsa, bu mübadilə sizin xeyrinizədir.
Əks hal məşğul x86 konsentratorudur; orada AES-NI ilə AES-GCM daha sürətli və daha yaxşı dəstəklənən yoldur və ChaCha20 hər gigabit üçün ölçülə bilən prosessor vaxtı aparır. Heç bir quruluş zəiflik deyil; sual aparatınızın hansını ucuz icra etməsidir.
Protokolunuz əslində nəyi seçməyə imkan verir
| 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-dəki bölünməyə diqqət edin: idarəetmə kanalı və məlumat kanalı ayrıca razılaşdırılır, yəni TLS üçün gördüyünüz dəst yükünüzü qoruyan şifrə haqqında heç nə demir. Sessiya xülasəsi hər ikisini bildirir və ikisindən yalnız birini oxumaq adi çaşqınlıq mənbəyidir.
OpenVPN-də məlumat kanalının şifri hər iki tərəfdə data-ciphers siyahısından gəlir. Serverin siyahısı ilə müştərinin siyahısı kəsişmirsə, bağlantı ya data-ciphers-fallback icazə verdiyinə qayıdır, ya da tamamilə uğursuz olur və bu uğursuzluq adətən yanlış təbəqədə günahlandırılır. Hər iki tərəfdə eyni siyahını qoyun, sonra siyahının sırasına əməl olunduğunu güman etmək əvəzinə razılaşdırılmış nəticəni jurnalda təsdiqləyin.
Yerləşdirmə haqqında üç faktdan qərar verin
Birincisi, son nöqtələrdə AES sürətləndirməsi varmı? Hər tərəfdaşda varsa, AES-GCM daha ucuz seçimdir və əksər saxlanılan konfiqurasiyalarda standartdır. Əhəmiyyətli bir hissə kiçik routerlər və ya köhnə telefonlardırsa, ChaCha20-Poly1305 donanmanın quyruğunun tutum həddinə çevrilməsinin qarşısını alır.
İkincisi, protokol ümumiyyətlə seçim təklif edirmi? WireGuard-da qərar sizin əvəzinizə verilib və faydalı iş ətrafdakı alətlərin səssizcə başqa bir şey qoymadığını yoxlamaqdır. OpenVPN və IPsec-də cavab bir konfiqurasiya sətri və qeyd edilməli razılaşdırılmış nəticədir.
Üçüncüsü, hər iki tərəf razılaşa bilirmi? Bir tərəfdaşın tətbiq etmədiyi şifrə performans qərarı deyil, kəsintidir. Buna görə tərəfdaş siyahısı hər hansı benchmarkdan vacibdir: qarışıq donanma imkanların kəsişməsini tələb edir, ən sürətli maşının üstünlüyünü deyil.
Əgər ölçsəniz, cihazı, son nöqtəni və yükü eyni saxlayın və bir şeyi dəyişin. Fərqli regionlardakı iki serveri müqayisə edən test marşrutu ölçür, şifri deyil, noutbuk benchmarkı isə prosessor bayraqları maskalanmış konteyner hostu haqqında heç nə demir. Müqayisə edin, sonra hansı şifrin həqiqətən razılaşdırıldığını yazın: bu qeyd benchmarkdan daha dəyərlidir.