Warum ein verschlüsseltes VPN-Paket weniger kosten kann, als Sie denken
Ein weiteres Kryptografie-Label ist keine weitere Arbeitseinheit. Vergleichen Sie den ganzen Weg: AEAD-Konstruktion, CPU-Unterstützung, Pufferung und den ausgehandelten Datenmodus.
Zwei Profile werden auf demselben Gateway gemessen, eines mit Verschlüsselung und eines ohne, und das verschlüsselte ist nicht langsamer. Manchmal ist es schneller, was meist eine lange Diskussion darüber auslöst, ob der Test korrekt durchgeführt wurde. Das Ergebnis ist plausibel, denn die Kosten eines Pakets sind nicht die Zahl der kryptografischen Wörter in der Konfiguration. Es ist die Menge der Operationen, die die Implementierung ausführt, auf der verfügbaren Hardware, über das gewählte Pufferlayout.
Das Symptom: Das langsame ist nicht das verschlüsselte Profil
Angenommen, ein historischer Test vergleicht eine AEAD-Chiffre mit einem Modus „ohne Verschlüsselung“, der trotzdem einen separaten Authentifizierungscode pro Paket berechnet. Das zweite Profil verbirgt den Inhalt der Nutzlast, behält aber einen Hash pro Paket, und auf einem Prozessor ohne Beschleunigung für diesen Hash kann es mehr kosten als die integrierte Konstruktion, die es schlagen sollte.
Das Etikett in der Konfiguration sagt „Verschlüsselung“, und das Etikett ist alles, worauf die meisten Vergleiche schauen. Der Paketpfad sagt etwas anderes: Ein Profil führt eine kombinierte Operation aus, für die die CPU Anweisungen hat, und das andere eine getrennte, für die sie keine hat. Das bloße Lesen der Konfigurationsdatei wird diesen Unterschied nie zeigen, weil beide Einträge wie eine Zeile aussehen. Nur der ausgehandelte Modus und der Codepfad dahinter erklären das Ergebnis.
Das ist die ganze Erklärung, und sie erfordert keine Behauptung, welche Primitive universell schneller ist. Beide können schnell sein, beide können langsam sein, und die Reihenfolge hängt von der Maschine und dem Code ab.
Zählen Sie Operationen, nicht Etiketten
Eine AEAD-Konstruktion, wie in RFC 5116 beschrieben, gibt der Implementierung eine einzige Schnittstelle, die Chiffrat und Tag zusammen zurückgibt. AES-GCM ist ein Beispiel: Zählermodus-Verschlüsselung kombiniert mit einem Galois-Authentifikator. Die Schnittstelle macht Integrität nicht kostenlos; sie macht die Kombination wohldefiniert, und genau das erlaubt einer Implementierung, das Paar als Einheit zu optimieren.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Das sind Verarbeitungsskizzen und keine Konfigurationsempfehlungen. Die erste bietet keine Vertraulichkeit, verbraucht aber trotzdem CPU für Authentifizierung, und genau deshalb ist „Verschlüsselung abschalten“ kein Synonym für „kryptografische Arbeit abschalten“.
Die zweite kann günstiger sein, weil Prozessoren Anweisungen für beide Hälften bereitstellen: AES-Runden und die carry-lose Multiplikation, die das Galois-Feld nutzt. Bibliotheken verarbeiten außerdem unabhängige Puffer parallel, was diese Anweisungen beschäftigt hält, statt auf den Speicher zu warten.
Was der ausgehandelte Modus tatsächlich ermöglicht
Bei Community OpenVPN bedeutet eine AEAD-Datenchiffre, dass die Option auth kein eigenes separates HMAC des Datenkanals mehr beisteuert. Die Referenz zur Verschlüsselungsoption beschreibt diesen Umfang, und das ist der Grund, warum sich zwei in einer Textdatei ähnlich aussehende Konfigurationen in der Arbeit pro Paket unterscheiden können.
Lesen Sie den ausgehandelten Modus statt die Wunschliste. Eine Liste erlaubter Chiffren und ein TLS-Suite-Name sagen Ihnen nicht, welche Operationen auf der Nutzlast laufen, und eine alte cipher-Zeile beschreibt möglicherweise nicht, was die aktuelle Verbindung gewählt hat.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
Der erste Befehl listet die Chiffren, die das Binary unterstützt, also eine Fähigkeitsliste und nicht das ausgehandelte Ergebnis. Der zweite zeigt, was der Server tatsächlich anfragt. Das Verbindungsprotokoll ist der Ort, an dem die endgültige Wahl bestätigt wird, denn ein Client kann auf etwas zurückfallen, das der Server erlaubt, aber niemand beabsichtigt hat.
Messen Sie die Arbeitslast, die Sie tatsächlich fahren
Ein kryptografischer Mikrobenchmark misst eine Primitive unter ihren eigenen Bedingungen. Eine VPN-Übertragung kopiert auch Puffer, plant Threads oder Interrupts, prüft Richtlinien und durchquert das Netzwerk. Diese Teile dominieren oft, weshalb eine schnellere Primitive nicht immer einen schnelleren Tunnel ergibt.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Diese beiden Befehle geben Ihnen einen groben lokalen Vergleich der Primitiven auf der Maschine vor Ihnen, und sie sind ehrlich darüber, Mikrobenchmarks zu sein. Sie sagen nichts über den Durchsatz Ihres Tunnels aus, und sie sollten nie als solcher zitiert werden.
Messen Sie dann die Arbeitslast, auf die es ankommt, und halten Sie alles andere konstant: gleicher Endpunkt, gleiche Paketgrößen, gleicher Transport, gleiche Komprimierungsrichtlinie. Wenn die Profiländerung auch Transport oder Verarbeitungsort verändert hat, beschreibt das Ergebnis dieses Bündel und nicht die Kryptografie.
Behalten Sie auch das Ziel im Blick. Ein Datenpfad mit freier kryptografischer Kapazität kann trotzdem latenzgebunden sein, weil die Anwendung auf Roundtrips wartet, und Zugewinne bei der Rohkapazität beheben kein geschwätziges Protokoll. Messen Sie die unterstützte, richtliniengenehmigte Konfiguration als Ganzes, und behandeln Sie „weniger Kisten müssen schneller sein“ als die Hypothese, die sie ist. Die nützliche Frage ist nicht, ob Verschlüsselung etwas kostet, sondern ob die Kosten in der Messung auftauchen, die Ihnen tatsächlich wichtig ist.