AES-GCM કે ChaCha20-Poly1305: VPN ડેટા સાઇફર પસંદ કરવો
હાર્ડવેર પ્રવેગવાળા સર્વર પર AES-GCM સ્પષ્ટ પસંદગી છે, અને ChaCha20-Poly1305 તેના વિના પણ સારી રીતે ચાલે છે. કદાચ તમારો પ્રોટોકોલ તમારા વતી નિર્ણય લેશે.
બંને નામ AEAD રચનાઓ છે, બંને માનકીકૃત છે, અને આધુનિક x86 સર્વર પર બંનેમાંથી કોઈપણ દૃશ્યમાન પરિશ્રમ વિના ગીગાબિટ લિંક ભરી દેશે. જ્યારે તમે તે સર્વર છોડો છો ત્યારે પસંદગી મનસ્વી રહેતી નથી: સસ્તા રાઉટર, જૂના ફોન અને વર્ચ્યુઅલ ઉપકરણોમાં ઘણી વાર AES પ્રવેગ હોતો નથી, અને ત્યાં તફાવત મોટો છે. તેથી સરખામણી એ નથી કે કયો સાઇફર ઝડપી છે, પરંતુ એ છે કે આ એન્ડપોઇન્ટ સમૂહ પર કયો સાઇફર સારી રીતે ચાલે છે અને પ્રોટોકોલ પસંદગી આપે છે કે નહીં.
એક જ કામ, જુદા કોર
બંને રચનાઓ એક જ પાસમાં ગોપનીયતા અને અખંડિતતા આપે છે અને સંકળાયેલ ડેટાને પ્રમાણિત કરે છે, તેથી VPN પ્રોટોકોલ તેમને ડેટા ચેનલ માટે વાપરે છે. ફરક અંદર છે: AES-GCM એ કાઉન્ટર મોડમાં AES બ્લોક સાઇફર છે જેમાં GF(2^128) પર બહુપદી પ્રમાણકર્તા છે, જ્યારે ChaCha20-Poly1305 એ 256 બિટ કીવાળો સ્ટ્રીમ સાઇફર છે જેમાં અલગ એકવાર પ્રમાણકર્તા છે.
ઓપરેશનલ રીતે મહત્વનું સામાન્ય છે: બંને nonce ફરી વાપરવાથી આપત્તિજનક રીતે નિષ્ફળ જાય છે, બંનેને દરેક કી માટે nonce જગ્યાનું સંચાલન જોઈએ છે, અને કોઈ પણ ખોટી વસ્તુ પ્રમાણિત કરતા સાથીને સુધારતું નથી. AES-256-GCM કહેતી પ્રોફાઇલ CHACHA20-POLY1305 કહેતી કરતાં વધુ સુરક્ષિત નથી; અમલ સાચો હોય ત્યારે બંને મજબૂત છે.
AES-GCM ક્યાં જીતે છે
મોટાભાગના આધુનિક CPU પર AES માટે સમર્પિત સૂચનાઓ છે: x86 પર AES-NI, ARMv8 પર ક્રિપ્ટો એક્સ્ટેન્શન, અને તાજેતરના POWER અને RISC-V ડિઝાઇન પર સમકક્ષ. જ્યારે તે હાજર હોય ત્યારે GCM દરેક ચક્ર-વર્ગ દીઠ અનેક બ્લોક સમાંતર ચલાવે છે અને સોફ્ટવેર અમલ અપ્રસ્તુત બની જાય છે. આ સર્વર, ડેસ્કટોપ અને હાલના ફોન માટે સામાન્ય કેસ છે, અને તેથી ડેટા સેન્ટરમાં AES વાપરો એ સલાહ વાજબી ડિફોલ્ટ છે.
સમસ્યા બીજા ક્રમનો કેસ છે. સમર્પિત સૂચનાઓ વિના સોફ્ટવેરમાં AES ધીમો છે, અને ટેબલ-સંચાલિત સોફ્ટવેર અમલ એ છે જેમનો cache-સમય સમસ્યાઓનો લાંબો ઇતિહાસ છે. જે વર્ચ્યુઅલ મશીનમાં ચાલતા VPN કોન્સન્ટ્રેટરનો હોસ્ટ મહેમાનને AES ફ્લેગ બતાવતો નથી તે બરાબર આ કેસ છે, અને હોસ્ટ 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 પ્રતિ ગીગાબિટ માપી શકાય તેવો CPU ખર્ચે છે. બંનેમાંથી કોઈ રચના નબળાઈ નથી; પ્રશ્ન એ છે કે તમારું હાર્ડવેર કઈને સસ્તામાં ચલાવે છે.
તમારો પ્રોટોકોલ ખરેખર શું પસંદ કરવા દે છે
| 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 ફ્લેગ ઢંકાયેલા છે તેવા કન્ટેનર હોસ્ટ વિશે કંઈ કહેતું નથી. સરખામણી કરો, પછી ખરેખર કયો સાઇફર વાટાઘાટ થયો તે લખી રાખો: તે નોંધ બેન્ચમાર્ક કરતાં વધુ મૂલ્યવાન છે.