Pse një paketë VPN e kriptuar mund të kushtojë më pak nga sa mendoni
Një etiketë tjetër kriptografike nuk është një njësi tjetër pune. Krahasoni të gjithë rrugën: ndërtimi AEAD, mbështetja e CPU-së, buferimi dhe modaliteti i të dhënave i negociuar.
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.