Waarom een versleuteld VPN-pakket minder kan kosten dan u denkt
Nog een cryptografisch label is niet nog een werkeenheid. Vergelijk het hele pad: AEAD-constructie, CPU-ondersteuning, buffering en de onderhandelde datamodus.
Twee profielen worden op dezelfde gateway gemeten, één met versleuteling en één zonder, en het versleutelde is niet langzamer. Soms is het sneller, wat meestal een lange discussie oplevert over de vraag of de test correct is uitgevoerd. Het resultaat is plausibel, omdat de kosten van een pakket niet het aantal cryptografische woorden in de configuratie zijn. Het is de verzameling bewerkingen die de implementatie uitvoert, op de hardware die zij heeft, over de bufferindeling die zij koos.
Het symptoom: het langzame is niet het versleutelde profiel
Stel dat een historische test een AEAD-cijfer vergelijkt met een modus „zonder versleuteling“ die nog steeds een aparte authenticatiecode per pakket berekent. Het tweede profiel verbergt de inhoud van de payload maar houdt een hash per pakket, en op een processor zonder versnelling voor die hash kan het meer kosten dan de geïntegreerde constructie die het moest verslaan.
Het label in de configuratie zegt „versleuteling“, en het label is alles waar de meeste vergelijkingen naar kijken. Het pakketpad zegt iets anders: het ene profiel voert een gecombineerde bewerking uit waarvoor de CPU instructies heeft, en het andere een aparte waarvoor niet. Alleen het configuratiebestand lezen zal dat verschil nooit onthullen, omdat beide regels eruitzien als één regel. Alleen de onderhandelde modus en het codepad erachter verklaren het resultaat.
Dat is de hele verklaring, en zij vereist geen enkele bewering over welke primitieve universeel sneller is. Beide kunnen snel zijn, beide kunnen langzaam zijn, en de volgorde hangt af van de machine en de code.
Tel bewerkingen, geen labels
Een AEAD-constructie, zoals beschreven in RFC 5116, geeft de implementatie één interface die cijfertekst en tag samen teruggeeft. AES-GCM is één voorbeeld: tellermodus-versleuteling gecombineerd met een Galois-authenticator. De interface maakt integriteit niet gratis; zij maakt de combinatie goed gedefinieerd, en dat is wat een implementatie in staat stelt het paar als één eenheid te optimaliseren.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Dit zijn schetsen van de verwerking, geen configuratieadvies. Het eerste heeft geen vertrouwelijkheid maar verbruikt toch CPU aan authenticatie, en dat is precies waarom „versleuteling uitzetten“ geen synoniem is van „cryptografisch werk uitzetten“.
Het tweede kan goedkoper zijn omdat processors instructies leveren voor beide helften: AES-rondes en de carry-loze vermenigvuldiging die het Galois-veld gebruikt. Bibliotheken verwerken ook onafhankelijke buffers parallel, wat die instructies bezet houdt in plaats van te wachten op geheugen.
Wat de onderhandelde modus werkelijk mogelijk maakt
Bij Community OpenVPN betekent een AEAD-datacijfer dat de optie auth niet langer een eigen aparte HMAC van het datakanaal levert. De referentie van de versleutelingsoptie beschrijft die reikwijdte, en dat is de reden waarom twee configuraties die er in een tekstbestand hetzelfde uitzien kunnen verschillen in werk per pakket.
Lees de onderhandelde modus in plaats van de wenslijst. Een lijst toegestane cijfers en een TLS-suitenaam vertellen u niet welke bewerkingen op de payload draaien, en een oude cipher-regel beschrijft misschien niet wat de huidige verbinding koos.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
De eerste opdracht somt de cijfers op die het binaire bestand ondersteunt, wat een capaciteitenlijst is en niet het onderhandelde resultaat. De tweede toont wat de server werkelijk vraagt. Het verbindingslog is de plek om de uiteindelijke keuze te bevestigen, omdat een client kan terugvallen op iets dat de server toestaat maar niemand bedoelde.
Meet de werklast die u werkelijk draait
Een cryptografische microbenchmark meet een primitieve onder haar eigen voorwaarden. Een VPN-overdracht kopieert ook buffers, plant threads of interrupts in, controleert beleid en doorkruist het netwerk. Die delen domineren vaak, en daarom levert een snellere primitieve niet altijd een snellere tunnel op.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Die twee opdrachten geven u een ruwe lokale vergelijking van de primitieven op de machine voor u, en ze zijn eerlijk dat het microbenchmarks zijn. Ze zeggen niets over de doorvoer van uw tunnel, en ze zouden nooit als zodanig geciteerd moeten worden.
Meet daarna de werklast die ertoe doet, met al het andere constant: hetzelfde eindpunt, dezelfde pakketgroottes, hetzelfde transport, hetzelfde compressiebeleid. Als de profielwijziging ook het transport of de verwerkingslocatie veranderde, beschrijft het resultaat dat bundel en niet de cryptografie.
Houd ook het doel in het oog. Een datapad met vrije cryptografische capaciteit kan nog steeds latentiegebonden zijn omdat de applicatie op retouren wacht, en winst in ruwe capaciteit lost een spraakzaam protocol niet op. Meet de ondersteunde en door beleid goedgekeurde configuratie als geheel, en behandel „minder dozen moet sneller zijn“ als de hypothese die het is. De nuttige vraag is niet of versleuteling iets kost, maar of de kosten zichtbaar worden in de meting die u werkelijk interesseert.