Kodėl užšifruotas VPN paketas gali kainuoti mažiau, nei manote
Dar viena kriptografinė etiketė nėra dar vienas darbo vienetas. Palyginkite visą kelią: AEAD konstrukcija, CPU palaikymas, buferiavimas ir suderintas duomenų režimas.
Du profiliai matuojami tame pačiame tinklelyje, vienas su šifravimu, kitas be jo, ir užšifruotasis nėra lėtesnis. Kartais jis net greitesnis, o tai paprastai sukelia ilgą ginčą, ar testas buvo atliktas teisingai. Rezultatas yra įtikinamas, nes paketo kaina nėra kriptografinių žodžių skaičius konfigūracijoje. Tai operacijų rinkinys, kurį atlieka implementacija, turimoje aparatinėje įrangoje, pagal pasirinktą buferio išdėstymą.
Simptomas: lėtas yra ne užšifruotas profilis
Tarkime, istorinis testas lygina AEAD šifrą su režimu „be šifravimo“, kuris vis tiek skaičiuoja atskirą autentifikacijos kodą kiekvienam paketui. Antrasis profilis slepia naudingosios apkrovos turinį, bet išlaiko paketo maišą, o procesoriuje be to maišo pagreitinimo jis gali kainuoti daugiau nei integruota konstrukcija, kurią turėjo įveikti.
Etiketė konfigūracijoje sako „šifravimas“, ir etiketė yra viskas, į ką žiūri dauguma palyginimų. Paketo kelias sako ką kita: vienas profilis atlieka sujungtą operaciją, kuriai CPU turi instrukcijų, o kitas – atskirą, kuriai jų neturi. Vien konfigūracijos failo skaitymas niekada neatskleis šio skirtumo, nes abu įrašai atrodo kaip viena eilutė. Rezultatą paaiškina tik suderintas režimas ir už jo esantis kodo kelias.
Tai yra visas paaiškinimas, ir jam nereikia jokio teiginio, kuri primityva yra universaliai greitesnė. Abi gali būti greitos, abi gali būti lėtos, o tvarka priklauso nuo mašinos ir kodo.
Skaičiuokite operacijas, o ne etiketes
AEAD konstrukcija, kaip aprašyta RFC 5116, suteikia implementacijai vieną sąsają, kuri grąžina šifruotą tekstą ir žymą kartu. AES-GCM yra vienas pavyzdys: skaitiklio režimo šifravimas sujungtas su Galois autentifikatoriumi. Sąsaja nepadaro vientisumo nemokamu; ji padaro derinį gerai apibrėžtu, ir būtent tai leidžia implementacijai optimizuoti porą kaip vienetą.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Tai apdorojimo eskizai, o ne konfigūracijos patarimai. Pirmasis neturi konfidencialumo, bet vis tiek eikvoja CPU autentifikacijai, ir būtent todėl „išjunk šifravimą“ nėra sinonimas frazei „išjunk kriptografinį darbą“.
Antrasis gali būti pigesnis, nes procesoriai teikia instrukcijas abiem pusėms: AES raundus ir be pernešimo daugybą, kurią naudoja Galois laukas. Bibliotekos taip pat apdoroja nepriklausomus buferius lygiagrečiai, o tai išlaiko tas instrukcijas užimtas, o ne laukiančias atminties.
Ką iš tikrųjų įgalina suderintas režimas
Naudojant Community OpenVPN, AEAD duomenų šifras reiškia, kad parinktis auth nebeduoda savo atskiro duomenų kanalo HMAC. Šifravimo parinkties nuoroda aprašo tą apimtį, ir tai yra priežastis, kodėl dvi konfigūracijos, teksto faile atrodančios panašiai, gali skirtis darbu vienam paketui.
Skaitykite suderintą režimą, o ne norų sąrašą. Leidžiamų šifrų sąrašas ir TLS rinkinio pavadinimas nepasako, kokios operacijos vyksta su naudingąja apkrova, o sena cipher eilutė gali neaprašyti, ką pasirinko dabartinis ryšys.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
Pirmoji komanda išvardija šifrus, kuriuos palaiko dvejetainis failas, ir tai yra galimybių sąrašas, o ne suderintas rezultatas. Antroji parodo, ko serveris iš tikrųjų prašo. Ryšio žurnalas yra vieta patvirtinti galutinį pasirinkimą, nes klientas gali nusileisti iki to, ką serveris leidžia, bet niekas neketino.
Matuokite tą apkrovą, kurią iš tikrųjų vykdote
Kriptografinis mikrotestas matuoja primityvą savo paties sąlygomis. VPN perdavimas taip pat kopijuoja buferius, planuoja gijas ar pertraukimus, tikrina politiką ir kerta tinklą. Šios dalys dažnai dominuoja, todėl greitesnė primityva ne visada duoda greitesnį tunelį.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Šios dvi komandos duoda apytikrį vietinį primityvų palyginimą jūsų akivaizdoje esančioje mašinoje, ir jos yra sąžiningos, kad tai mikrotestai. Jos nieko nesako apie jūsų tunelio pralaidumą, ir niekada neturėtų būti cituojamos kaip toks.
Tada matuokite tai, kas svarbu, viską kitą palikdami pastovų: tas pats galinis taškas, tie patys paketo dydžiai, tas pats transportas, ta pati suspaudimo politika. Jei profilio pakeitimas taip pat pakeitė transportą ar apdorojimo vietą, rezultatas aprašo tą rinkinį, o ne kriptografiją.
Taip pat laikykite tikslą akyse. Duomenų kelias su laisvu kriptografiniu pajėgumu vis tiek gali būti ribojamas delsos, nes programa laukia kelionių pirmyn ir atgal, o didelio pralaidumo prieaugis neištaiso šnekaus protokolo. Matuokite palaikomą ir politika patvirtintą konfigūraciją kaip visumą, o teiginį „mažiau dėžių turi būti greičiau“ traktuokite kaip hipotezę, kuri ji ir yra. Naudingas klausimas yra ne tai, ar šifravimas ką nors kainuoja, o tai, ar kaina pasirodo tame matavime, kuris jums iš tikrųjų rūpi.