Dy profile maten në të njëjtën portë, njëri me kriptim dhe tjetri pa, dhe ai i kriptuar nuk është më i ngadaltë. Ndonjëherë është më i shpejtë, gjë që zakonisht shkakton një debat të gjatë nëse testi u krye saktë. Rezultati është i besueshëm, sepse kostoja e një pakete nuk është numri i fjalëve kriptografike në konfigurim. Është grupi i veprimeve që kryen implementimi, në harduerin që ka, sipas strukturës së buferit që zgjodhi.

Simptoma: i ngadalti nuk është profili i kriptuar

Supozoni se një test historik krahason një shifër AEAD me një modalitet „pa kriptim“ që ende llogarit një kod vërtetimi të veçantë për çdo paketë. Profili i dytë fsheh përmbajtjen e ngarkesës, por mban një hash për paketë, dhe në një procesor pa përshpejtim për atë hash mund të kushtojë më shumë sesa ndërtimi i integruar që duhej të mundte.

Etiketa në konfigurim thotë „kriptim“, dhe etiketa është gjithçka që shikon shumica e krahasimeve. Rruga e paketës thotë diçka tjetër: një profil kryen një veprim të kombinuar për të cilin CPU-ja ka udhëzime, dhe tjetri kryen një të veçantë për të cilin nuk ka. Leximi i vetëm i skedarit të konfigurimit nuk do ta zbulojë kurrë atë ndryshim, sepse të dy zërat duken si një rresht. Vetëm modaliteti i negociuar dhe rruga e kodit pas tij e shpjegojnë rezultatin.

Ky është i gjithë shpjegimi, dhe nuk kërkon asnjë pohim se cila primitivë është universalisht më e shpejtë. Të dyja mund të jenë të shpejta, të dyja mund të jenë të ngadalta, dhe renditja varet nga makina dhe kodi.

Numëroni veprime, jo etiketa

Një ndërtim AEAD, siç e përshkruan RFC 5116, i jep implementimit një ndërfaqe të vetme që kthen tekstin e shifruar dhe etiketën së bashku. AES-GCM është një shembull: kriptim në modalitet numëruesi i kombinuar me një vërtetues Galois. Ndërfaqja nuk e bën integritetin falas; e bën kombinimin të përcaktuar mirë, dhe kjo është ajo që i lejon një implementimi të optimizojë çiftin si një njësi.

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

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

Këto janë skica përpunimi, jo këshilla konfigurimi. I pari nuk ka konfidencialitet, por gjithsesi shpenzon CPU për vërtetim, dhe pikërisht për këtë „fik kriptimin“ nuk është sinonim i „fik punën kriptografike“.

I dyti mund të jetë më i lirë, sepse procesorët ofrojnë udhëzime për të dyja gjysmat: raundet AES dhe shumëzimi pa bartje që përdor fusha Galois. Bibliotekat përpunojnë gjithashtu buferë të pavarur paralelisht, gjë që i mban ato udhëzime të zëna në vend që të presin memorien.

Çfarë mundëson në të vërtetë modaliteti i negociuar

Me Community OpenVPN, një shifër e dhënave AEAD do të thotë që opsioni auth nuk kontribuon më me HMAC-në e vet të veçantë të kanalit të dhënave. Referenca e opsionit të kriptimit përshkruan atë shtrirje, dhe kjo është arsyeja pse dy konfigurime që duken të ngjashme në një skedar teksti mund të ndryshojnë në punën për paketë.

Lexoni modalitetin e negociuar, jo listën e dëshirave. Një listë e shifrave të lejuara dhe një emër suite TLS nuk ju tregojnë se cilat veprime ekzekutohen mbi ngarkesën, dhe një rresht cipher i vjetër mund të mos përshkruajë atë që zgjodhi lidhja aktuale.

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

Komanda e parë liston shifrat që mbështet binari, që është një listë aftësish dhe jo rezultati i negociuar. E dyta tregon çfarë kërkon në të vërtetë serveri. Regjistri i lidhjes është vendi për të konfirmuar zgjedhjen përfundimtare, sepse klienti mund të bjerë në diçka që serveri lejon, por që askush nuk e kishte ndërmend.

Matni ngarkesën që ekzekutoni vërtet

Një mikrokriter kriptografik mat një primitivë në kushtet e saj. Një transferim VPN kopjon gjithashtu buferë, planifikon fije ose ndërprerje, kontrollon politikën dhe kalon rrjetin. Këto pjesë shpesh dominojnë, dhe për këtë një primitivë më e shpejtë nuk prodhon gjithmonë një tunel më të shpejtë.

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

Këto dy komanda ju japin një krahasim lokal të përafërt të primitivave në makinën përpara jush, dhe janë të sinqerta se janë mikrokritere. Nuk thonë asgjë për qarkullimin e tunelit tuaj, dhe nuk duhet të citohen kurrë si i tillë.

Më pas matni ngarkesën që ka rëndësi, duke mbajtur gjithçka tjetër konstante: i njëjti pikë fundore, të njëjtat madhësi pakete, i njëjti transport, e njëjta politikë kompresimi. Nëse ndryshimi i profilit ndryshoi edhe transportin ose vendndodhjen e përpunimit, rezultati përshkruan atë pako dhe jo kriptografinë.

Mbani edhe objektivin në sy. Një rrugë të dhënash me kapacitet kriptografik të tepërt mund të jetë ende e kufizuar nga vonesa, sepse aplikacioni pret udhëtime vajtje-ardhje, dhe fitimet në kapacitet masiv nuk e rregullojnë një protokoll llafazan. Matni konfigurimin e mbështetur dhe të miratuar nga politika në tërësi, dhe trajtojeni „më pak kuti duhet të jetë më e shpejtë“ si hipotezën që është. Pyetja e dobishme nuk është nëse kriptimi kushton diçka, por nëse kostoja shfaqet në matjen që ju intereson vërtet.

Artikuj të ngjashëm