ഒരേ ഗേറ്റ്‌വേയിൽ രണ്ട് പ്രൊഫൈലുകൾ അളക്കുന്നു, ഒന്ന് എൻക്രിപ്ഷനോടെ ഒന്ന് അതില്ലാതെ, എൻക്രിപ്റ്റ് ചെയ്തത് വേഗത കുറഞ്ഞതല്ല. ചിലപ്പോൾ അത് വേഗമേറിയതാണ്, അത് സാധാരണയായി പരീക്ഷ ശരിയായി നടത്തിയോ എന്ന ദീർഘചർച്ചയ്ക്ക് വഴിവയ്ക്കുന്നു. ഫലം വിശ്വസനീയമാണ്, കാരണം ഒരു പാക്കറ്റിന്റെ ചെലവ് കോൺഫിഗറേഷനിലെ ക്രിപ്റ്റോഗ്രാഫിക് വാക്കുകളുടെ എണ്ണമല്ല. അത് ഇംപ്ലിമെന്റേഷൻ നിർവഹിക്കുന്ന പ്രവർത്തനങ്ങളുടെ കൂട്ടമാണ്, അതിനുള്ള ഹാർഡ്‌വെയറിൽ, അത് തിരഞ്ഞെടുത്ത ബഫർ വിന്യാസത്തിൽ.

ലക്ഷണം: വേഗത കുറഞ്ഞത് എൻക്രിപ്റ്റ് ചെയ്ത പ്രൊഫൈലല്ല

ഒരു പഴയ പരീക്ഷ AEAD സൈഫറിനെ „എൻക്രിപ്ഷൻ ഇല്ലാത്ത“ മോഡുമായി താരതമ്യം ചെയ്യുന്നു എന്ന് കരുതുക, അത് ഇപ്പോഴും ഓരോ പാക്കറ്റിനും വെവ്വേറെ ഓതന്റിക്കേഷൻ കോഡ് കണക്കാക്കുന്നു. രണ്ടാമത്തെ പ്രൊഫൈൽ പേലോഡിന്റെ ഉള്ളടക്കം മറയ്ക്കുന്നു പക്ഷേ പാക്കറ്റിന് ഒരു ഹാഷ് സൂക്ഷിക്കുന്നു, ആ ഹാഷിന് ത്വരകം ഇല്ലാത്ത പ്രോസസറിൽ അത് തോൽപ്പിക്കേണ്ടിയിരുന്ന സംയോജിത ഘടനയെക്കാൾ ചെലവേറിയതാകാം.

കോൺഫിഗറേഷനിലെ ലേബൽ „എൻക്രിപ്ഷൻ“ എന്ന് പറയുന്നു, ഭൂരിഭാഗം താരതമ്യങ്ങളും നോക്കുന്നത് ആ ലേബൽ മാത്രമാണ്. പാക്കറ്റിന്റെ പാത മറ്റൊന്ന് പറയുന്നു: ഒരു പ്രൊഫൈൽ CPU-ക്ക് നിർദ്ദേശങ്ങളുള്ള സംയുക്ത പ്രവർത്തനം നടത്തുന്നു, മറ്റേത് നിർദ്ദേശങ്ങളില്ലാത്ത വേറിട്ട ഒന്ന് നടത്തുന്നു. കോൺഫിഗറേഷൻ ഫയൽ മാത്രം വായിച്ചാൽ ആ വ്യത്യാസം ഒരിക്കലും വെളിപ്പെടുകയില്ല, കാരണം രണ്ട് എൻട്രികളും ഒരു വരി പോലെ തോന്നുന്നു. ഫലം വിശദീകരിക്കുന്നത് ചർച്ച ചെയ്ത മോഡും അതിന് പിന്നിലെ കോഡ് പാതയും മാത്രമാണ്.

അതാണ് മുഴുവൻ വിശദീകരണം, ഏത് പ്രിമിറ്റീവ് സാർവത്രികമായി വേഗമേറിയതാണ് എന്ന വാദം അതിന് ആവശ്യമില്ല. രണ്ടും വേഗമേറിയതാകാം, രണ്ടും മന്ദഗതിയിലാകാം, ക്രമം യന്ത്രത്തെയും കോഡിനെയും ആശ്രയിച്ചിരിക്കുന്നു.

ലേബലുകളല്ല, പ്രവർത്തനങ്ങൾ എണ്ണുക

AEAD ഘടന, RFC 5116 വിവരിക്കുന്നതുപോലെ, സൈഫർടെക്സ്റ്റും ടാഗും ഒരുമിച്ച് തിരികെ നൽകുന്ന ഒരു ഇന്റർഫേസ് ഇംപ്ലിമെന്റേഷന് നൽകുന്നു. AES-GCM ഒരു ഉദാഹരണമാണ്: കൗണ്ടർ മോഡ് എൻക്രിപ്ഷൻ Galois ഓതന്റിക്കേറ്ററുമായി സംയോജിപ്പിച്ചത്. ഇന്റർഫേസ് അഖണ്ഡത സൗജന്യമാക്കുന്നില്ല; അത് സംയോജനത്തെ നന്നായി നിർവചിച്ചതാക്കുന്നു, അതാണ് ഇംപ്ലിമെന്റേഷന് ജോടിയെ ഒരു യൂണിറ്റായി മെച്ചപ്പെടുത്താൻ അനുവദിക്കുന്നത്.

Separate authentication path:
  payload -> independent HMAC -> framed packet

AEAD path:
  payload -> authenticated encryption with tag -> framed packet

ഇവ പ്രോസസ്സിംഗ് രേഖാചിത്രങ്ങളാണ്, കോൺഫിഗറേഷൻ നിർദ്ദേശങ്ങളല്ല. ആദ്യത്തേതിന് രഹസ്യാത്മകതയില്ല പക്ഷേ അത് ഇപ്പോഴും ഓതന്റിക്കേഷനിൽ CPU ചെലവാക്കുന്നു, അതുകൊണ്ടാണ് „എൻക്രിപ്ഷൻ ഓഫാക്കുക“ എന്നത് „ക്രിപ്റ്റോഗ്രാഫിക് ജോലി ഓഫാക്കുക“ എന്നതിന്റെ പര്യായമല്ല.

രണ്ടാമത്തേത് വിലകുറഞ്ഞതാകാം കാരണം പ്രോസസറുകൾ ഇരു പകുതികൾക്കും നിർദ്ദേശങ്ങൾ നൽകുന്നു: AES റൗണ്ടുകളും Galois ഫീൽഡ് ഉപയോഗിക്കുന്ന കാരി ഇല്ലാത്ത ഗുണനവും. ലൈബ്രറികൾ സ്വതന്ത്ര ബഫറുകളും സമാന്തരമായി പ്രോസസ്സ് ചെയ്യുന്നു, അത് ആ നിർദ്ദേശങ്ങളെ മെമ്മറിക്കായി കാത്തിരിക്കുന്നതിനുപകരം തിരക്കിലാക്കുന്നു.

ചർച്ച ചെയ്ത മോഡ് യഥാർത്ഥത്തിൽ എന്ത് സാധ്യമാക്കുന്നു

Community OpenVPN-ൽ, AEAD ഡാറ്റാ സൈഫർ എന്നാൽ auth ഓപ്ഷൻ ഇനി സ്വന്തം വേറിട്ട ഡാറ്റാ-ചാനൽ HMAC നൽകുന്നില്ല. എൻക്രിപ്ഷൻ ഓപ്ഷന്റെ റഫറൻസ് ആ പരിധി വിവരിക്കുന്നു, ടെക്സ്റ്റ് ഫയലിൽ സമാനമായി തോന്നുന്ന രണ്ട് കോൺഫിഗറേഷനുകൾ പാക്കറ്റിലെ ജോലിയിൽ വ്യത്യാസപ്പെടാനുള്ള കാരണം അതാണ്.

ആഗ്രഹപ്പട്ടികയല്ല, ചർച്ച ചെയ്ത മോഡ് വായിക്കുക. അനുവദിച്ച സൈഫറുകളുടെ പട്ടികയും TLS സ്യൂട്ടിന്റെ പേരും പേലോഡിൽ ഏത് പ്രവർത്തനങ്ങൾ നടക്കുന്നു എന്ന് പറയുന്നില്ല, പഴയ cipher വരി ഇപ്പോഴത്തെ കണക്ഷൻ തിരഞ്ഞെടുത്തത് വിവരിച്ചെന്നും വരില്ല.

openvpn --show-ciphers | head -20
sudo grep -E 'cipher|auth' /etc/openvpn/server.conf

ആദ്യ കമാൻഡ് ബൈനറി പിന്തുണയ്ക്കുന്ന സൈഫറുകൾ ലിസ്റ്റ് ചെയ്യുന്നു, അത് കഴിവുകളുടെ പട്ടികയാണ്, ചർച്ച ചെയ്ത ഫലമല്ല. രണ്ടാമത്തേത് സെർവർ യഥാർത്ഥത്തിൽ എന്ത് ആവശ്യപ്പെടുന്നു എന്ന് കാണിക്കുന്നു. അന്തിമ തിരഞ്ഞെടുപ്പ് സ്ഥിരീകരിക്കാനുള്ള സ്ഥലം കണക്ഷൻ ലോഗ് ആണ്, കാരണം ക്ലയന്റ് സെർവർ അനുവദിക്കുന്നതും പക്ഷേ ആരും ഉദ്ദേശിക്കാത്തതുമായ ഒന്നിലേക്ക് വീഴാം.

നിങ്ങൾ യഥാർത്ഥത്തിൽ പ്രവർത്തിപ്പിക്കുന്ന ലോഡ് അളക്കുക

ഒരു ക്രിപ്റ്റോഗ്രാഫിക് മൈക്രോബെഞ്ച്മാർക്ക് ഒരു പ്രിമിറ്റീവിനെ അതിന്റെ സ്വന്തം സാഹചര്യങ്ങളിൽ അളക്കുന്നു. ഒരു VPN കൈമാറ്റം ബഫറുകളും പകർത്തുന്നു, ത്രെഡുകളോ ഇന്ററപ്റ്റുകളോ ഷെഡ്യൂൾ ചെയ്യുന്നു, നയം പരിശോധിക്കുന്നു, നെറ്റ്‌വർക്ക് കടക്കുന്നു. ആ ഭാഗങ്ങളാണ് പലപ്പോഴും ആധിപത്യം പുലർത്തുന്നത്, അതുകൊണ്ടാണ് വേഗമേറിയ പ്രിമിറ്റീവ് എപ്പോഴും വേഗമേറിയ ടണൽ നൽകാത്തത്.

openssl speed -evp aes-256-gcm
openssl speed -evp sha1

ആ രണ്ട് കമാൻഡുകൾ നിങ്ങളുടെ മുന്നിലുള്ള യന്ത്രത്തിൽ പ്രിമിറ്റീവുകളുടെ ഒരു പരുക്കൻ പ്രാദേശിക താരതമ്യം നൽകുന്നു, അവ മൈക്രോബെഞ്ച്മാർക്കുകളാണെന്ന് സത്യസന്ധമാണ്. അവ നിങ്ങളുടെ ടണലിന്റെ ത്രൂപുട്ടിനെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല, അവയെ ഒരിക്കലും അങ്ങനെ ഉദ്ധരിക്കരുത്.

തുടർന്ന് പ്രധാനമായ ലോഡ് അളക്കുക, ബാക്കിയെല്ലാം സ്ഥിരമായി നിർത്തി: അതേ അന്തിമ പോയിന്റ്, അതേ പാക്കറ്റ് വലിപ്പങ്ങൾ, അതേ ഗതാഗതം, അതേ കംപ്രഷൻ നയം. പ്രൊഫൈൽ മാറ്റം ഗതാഗതമോ പ്രോസസ്സിംഗ് സ്ഥലമോ മാറ്റിയെങ്കിൽ, ഫലം ആ കൂട്ടത്തെ വിവരിക്കുന്നു, ക്രിപ്റ്റോഗ്രാഫിയെയല്ല.

ലക്ഷ്യവും കണ്ണിൽ സൂക്ഷിക്കുക. സ്പെയർ ക്രിപ്റ്റോഗ്രാഫിക് ശേഷിയുള്ള ഒരു ഡാറ്റാ പാത ഇപ്പോഴും കാലതാമസത്താൽ പരിമിതമാകാം, കാരണം അപ്ലിക്കേഷൻ യാത്രകൾക്കായി കാത്തിരിക്കുന്നു, ബൾക്ക് ശേഷിയിലെ നേട്ടങ്ങൾ സംസാരിക്കുന്ന പ്രോട്ടോക്കോൾ ശരിയാക്കുന്നില്ല. പിന്തുണയുള്ളതും നയം അംഗീകരിച്ചതുമായ കോൺഫിഗറേഷൻ മൊത്തമായി അളക്കുക, „കുറഞ്ഞ പെട്ടികൾ വേഗമേറിയതായിരിക്കണം“ എന്നതിനെ അതിനുള്ള പരികൽപ്പനയായി കാണുക. ഉപയോഗപ്രദമായ ചോദ്യം എൻക്രിപ്ഷന് എന്തെങ്കിലും ചെലവുണ്ടോ എന്നതല്ല, മറിച്ച് ആ ചെലവ് നിങ്ങൾ യഥാർത്ഥത്തിൽ ശ്രദ്ധിക്കുന്ന അളവിൽ കാണുന്നുണ്ടോ എന്നതാണ്.

അനുബന്ധ ലേഖനങ്ങൾ