Benchmarking von SSH-Chiffren: Die schnellste Verschlüsselung für Ihr Netzwerk wählen

Ermöglichen Sie schnellere SSH-Datenübertragungen, indem Sie Verschlüsselungs-Chiffren verstehen und benchmarken. Dieser Leitfaden vergleicht AES-GCM und ChaCha20-Poly1305 und hebt deren Leistungsmerkmale über verschiedene CPU-Architekturen hinweg hervor. Lernen Sie praktische Schritte, um Chiffren mit `scp` und `dd` zu testen, Ihre Ergebnisse zu interpretieren und die optimale Verschlüsselung für Übertragungen mit hohem Volumen zu wählen. Balancieren Sie robuste Sicherheit mit Spitzendurchsatz für Ihr Netzwerk.

40 Aufrufe

SSH-Chiffren im Benchmark: Die schnellste Verschlüsselung für Ihr Netzwerk wählen

Secure Shell (SSH) ist das Rückgrat für sicheren Fernzugriff und Datenübertragung für unzählige Systeme weltweit. Während seine Hauptfunktion Sicherheit ist, können die zugrunde liegenden Verschlüsselungsalgorithmen – bekannt als Chiffren – die Leistung erheblich beeinflussen, insbesondere bei der Übertragung großer Datenmengen. Die Wahl der richtigen Chiffre kann den Unterschied zwischen blitzschnellen Übertragungen und frustrierenden Engpässen bedeuten.

Dieser Artikel taucht tief in die Welt der modernen SSH-Verschlüsselung ein und vergleicht die Leistungseigenschaften beliebter Chiffren wie AES-GCM und ChaCha20-Poly1305. Wir untersuchen die Faktoren, die die Geschwindigkeit von Chiffren beeinflussen, stellen praktische Methoden zum Benchmarking ihrer Leistung in Ihrer spezifischen Umgebung vor und leiten Sie bei der Auswahl der optimalen Verschlüsselung für die einzigartigen Bedürfnisse Ihres Netzwerks an, wobei der Durchsatz mit robuster Sicherheit abgewogen wird.

SSH-Chiffren und ihre Rolle verstehen

Eine SSH-Chiffre ist ein Algorithmus, der zur Verschlüsselung und Entschlüsselung der zwischen einem SSH-Client und einem Server ausgetauschten Daten verwendet wird. Ihr Hauptziel ist es, die Vertraulichkeit, Integrität und Authentizität der Kommunikation zu gewährleisten. Wenn Sie eine SSH-Verbindung initiieren, verhandeln Client und Server eine Reihe von Algorithmen (Chiffren, MACs, Schlüsselaustauschmethoden), die beide unterstützen, und einigen sich letztendlich auf die stärksten und bevorzugten Optionen. Dieser Verhandlungsprozess ist entscheidend für den Aufbau eines sicheren Kanals.

Verschiedene Chiffren verwenden unterschiedliche mathematische Operationen, was zu variierenden Rechenanforderungen führt. Einige Chiffren sind für Hardwarebeschleunigung optimiert und nutzen spezialisierte CPU-Anweisungen, während andere darauf ausgelegt sind, in Software auf einer breiteren Palette von Prozessoren effizient zu arbeiten. Die Wahl der Chiffre beeinflusst daher direkt die CPU-Auslastung und die daraus resultierenden Datenübertragungsgeschwindigkeiten.

Wichtige moderne SSH-Chiffren für Leistung

In modernen SSH-Umgebungen stechen zwei Familien von authentifizierten Verschlüsselungschiffren durch ihr hervorragendes Gleichgewicht zwischen Sicherheit und Leistung hervor: AES-GCM und ChaCha20-Poly1305. Beide bieten authentifizierte Verschlüsselung mit zugehörigen Daten (AEAD), was bedeutet, dass sie die Daten verschlüsseln und eine Integritätsprüfung in einem einzigen Durchgang durchführen, was effizienter und sicherer ist als ältere Encrypt-then-MAC-Ansätze.

AES-GCM (Advanced Encryption Standard - Galois/Counter Mode)

AES-GCM ist eine äußerst beliebte und weit verbreitete Blockchiffre, die im Galois/Counter-Modus arbeitet. Sie bietet starke Sicherheit und ist besonders schnell auf Systemen mit Hardwareunterstützung für AES. Die meisten modernen CPUs (Intel, AMD und zunehmend ARM-Prozessoren) enthalten dedizierte Befehlssätze (wie AES-NI auf x86/x64-Architekturen), die AES-Operationen dramatisch beschleunigen und AES-GCM extrem effizient machen.

  • Vorteile: Hervorragende Leistung auf Hardware-beschleunigten CPUs, starke Sicherheit, weit verbreitet.
  • Nachteile: Kann in reinen Software-Implementierungen langsamer sein (z. B. auf älteren oder spezialisierten CPUs ohne AES-NI).

ChaCha20-Poly1305

ChaCha20-Poly1305 ist eine Stream-Chiffre, die von Daniel J. Bernstein entwickelt wurde. Sie ist bekannt für ihr softwarefreundliches Design und leistet auch auf CPUs ohne spezielle kryptografische Hardwarebeschleunigung sehr gute Ergebnisse. Dies macht sie zu einer ausgezeichneten Wahl für eine Vielzahl von Hardware, einschließlich eingebetteter Systeme, älterer Prozessoren oder Umgebungen, in denen Hardwarebeschleunigung nicht durchgängig verfügbar oder für andere Algorithmen optimiert ist.

  • Vorteile: Hervorragende Softwareleistung, starke Sicherheit, resistent gegen Timing-Seitenkanalangriffe.
  • Nachteile: Im Allgemeinen nicht so schnell wie hardwarebeschleunigtes AES-GCM auf modernen Desktop-/Server-CPUs.

Faktoren, die die Leistung von Chiffren beeinflussen

Die "schnellste" Chiffre ist nicht universell festgelegt; sie hängt von mehreren Schlüsselfaktoren ab:

  1. CPU-Architektur und Hardwarebeschleunigung: Dies ist der bedeutendste Faktor. Wenn Ihre CPU AES-NI oder ähnliche Anweisungen hat, wird AES-GCM mit ziemlicher Sicherheit ChaCha20-Poly1305 übertreffen. Ohne diese könnte ChaCha20-Poly1305 die Nase vorn haben.
  2. SSH-Client- und Server-Implementierungen: Die Effizienz der SSH-Software (z. B. OpenSSH) und der von ihr verwendeten kryptografischen Bibliotheken (z. B. OpenSSL) kann die reale Leistung beeinflussen. Neuere Versionen enthalten oft Optimierungen.
  3. Netzwerkbedingungen: Obwohl nicht direkt mit der Geschwindigkeit der Chiffre verbunden, können Netzwerklatenz und verfügbare Bandbreite den wahrgenommenen Unterschied in der Chiffrengeschwindigkeit maskieren oder verstärken. In einem sehr langsamen Netzwerk sind die CPU-Kosten der Verschlüsselung möglicherweise vernachlässigbar im Vergleich zu Netzwerkbeschränkungen. In einem sehr schnellen Netzwerk (z. B. 10 Gbit/s oder mehr) kann die CPU-gebundene Verschlüsselung zum Engpass werden.
  4. Datenvolumen und -typ: Benchmarking mit unterschiedlichen Datengrößen (kleine Dateien vs. große Dateien) und -typen (komprimierbar vs. nicht komprimierbar) kann unterschiedliche Leistungseigenschaften aufzeigen. Beispielsweise können sehr kleine Übertragungen eher vom Overhead der Verbindungsherstellung als von der Geschwindigkeit der Chiffre dominiert werden.

So benchmarken Sie die Leistung von SSH-Chiffren

Benchmarking beinhaltet, SSH explizit anzuweisen, eine bestimmte Chiffre zu verwenden, und dann die Zeit für die Übertragung einer bekannten Datenmenge zu messen. Dies ermöglicht einen direkten Vergleich.

1. Unterstützte Chiffren identifizieren

Bevor Sie beginnen, überprüfen Sie, welche Chiffren Ihr SSH-Server unterstützt. Sie finden dies oft in der Datei sshd_config auf dem Server oder durch Ausführen eines NMAP-Scans mit nmap --script ssh-auth-methods <IP>. Eine einfachere Möglichkeit, die ausgehandelte Chiffre zu sehen, ist die Verwendung der ausführlichen SSH-Ausgabe:

ssh -vvv user@your_server

Suchen Sie nach Zeilen wie debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none.

2. Chiffren mit ssh -c angeben

Der ssh-Client ermöglicht es Ihnen, die gewünschte Chiffre mit dem -c-Flag anzugeben. Sie können eine durch Kommas getrennte Liste angeben, und der Client versucht, die erste unterstützte Chiffre aus der Liste zu verwenden.

Gängige zu testende Chiffren:
* [email protected]
* [email protected]
* [email protected]

3. Übertragungsmethode und Datenquelle wählen

Für konsistentes Benchmarking benötigen Sie eine Möglichkeit, eine bekannte Datenmenge zu übertragen.

  • scp (Secure Copy): Ideal für die Übertragung von Dateien. Verwenden Sie eine große, nicht komprimierbare Datei, um sicherzustellen, dass die Chiffre der Engpass ist und nicht die Komprimierung oder die Festplatten-I/O.
  • sftp (SSH File Transfer Protocol): Ähnlich wie scp, nützlich, wenn Sie dieses Protokoll bevorzugen.
  • dd (Data Duplicator): Kann einen Datenstrom generieren, der über SSH weitergeleitet wird, nützlich für reine Durchsatztests ohne Dateisystem-Overhead auf der Client-Seite.

Praktische Benchmarking-Schritte

Angenommen, Sie möchten die Übertragungen von einem Client zu einem Server benchmarken. Sie benötigen eine Testdatei auf dem Client (oder Server), die groß genug (z. B. 1 GB) ist, um eine aussagekräftige Messung zu ermöglichen, aber nicht so groß, dass die Tests zu lange dauern. Eine gute Methode, eine nicht komprimierbare Testdatei zu erstellen, ist die Verwendung von /dev/urandom oder /dev/zero.

Auf dem Client (zum Erstellen einer 1 GB großen Dummy-Datei):

pwd=$(pwd)
dd if=/dev/urandom of=$pwd/dummy_1GB.bin bs=1M count=1024 iflag=fullblock

Benchmarking mit scp:

  1. Testen Sie AES256-GCM:
    bash echo "Testing AES256-GCM..." time scp -c [email protected] dummy_1GB.bin user@your_server:/tmp/test_gcm.bin

  2. Testen Sie ChaCha20-Poly1305:
    bash echo "Testing ChaCha20-Poly1305..." time scp -c [email protected] dummy_1GB.bin user@your_server:/tmp/test_chacha.bin

  3. Testen Sie AES128-GCM (oft am schnellsten):
    bash echo "Testing AES128-GCM..." time scp -c [email protected] dummy_1GB.bin user@your_server:/tmp/test_aes128_gcm.bin

Benchmarking mit dd und pv (für Echtzeit-Durchsatz):

Diese Methode leitet Daten über SSH und kann Echtzeitgeschwindigkeiten anzeigen, wodurch Festplatten-I/O als Engpass reduziert wird. pv (Pipe Viewer) liefert Fortschritts- und Durchsatzinformationen.

Installieren von pv (falls noch nicht installiert):

sudo apt-get install pv # Debian/Ubuntu
sudo yum install pv     # RHEL/CentOS
sudo brew install pv    # macOS
  1. Testen Sie AES256-GCM mit dd und pv:
    bash echo "Testing AES256-GCM with dd..." dd if=/dev/zero bs=1M count=1024 | pv | ssh -c [email protected] user@your_server "cat > /dev/null"

  2. Testen Sie ChaCha20-Poly1305 mit dd und pv:
    bash echo "Testing ChaCha20-Poly1305 with dd..." dd if=/dev/zero bs=1M count=1024 | pv | ssh -c [email protected] user@your_server "cat > /dev/null"

Tipp: Führen Sie jeden Test mehrmals durch (z. B. 3-5 Mal) und nehmen Sie den Durchschnitt, um Schwankungen im Netzwerk oder Systemlasten zu berücksichtigen.

Interpretation der Ergebnisse und Empfehlungen

Nachdem Sie Ihre Benchmarks ausgeführt haben, vergleichen Sie die real-Zeit aus den Ausgaben des time-Befehls oder den von pv gemeldeten durchschnittlichen Durchsatz. Sie werden wahrscheinlich deutliche Muster beobachten:

  • Moderne CPUs mit AES-NI: Sie werden mit ziemlicher Sicherheit feststellen, dass [email protected] und [email protected] den höchsten Durchsatz bieten. AES-128 ist oft geringfügig schneller als AES-256 aufgrund weniger Durchläufe, aber der Unterschied kann auf hardwarebeschleunigten Systemen vernachlässigbar sein.
  • Ältere CPUs, ARM (ohne spezielle Krypto-Erweiterungen) oder virtuelle Maschinen: ChaCha20-Poly1305 kann vergleichbar mit oder sogar besser als AES-GCM abschneiden, da sein softwareoptimiertes Design in diesen Szenarien glänzt.

Empfehlungen:

  • Für Hochleistungsserver mit modernen Intel/AMD-CPUs (und AES-NI): Priorisieren Sie AES-GCM (insbesondere [email protected]). Es nutzt Hardwarebeschleunigung für überlegene Geschwindigkeit und Sicherheit.
  • Für vielfältige Umgebungen, ältere Hardware, ARM-basierte Systeme oder Situationen, die Softwareleistung bevorzugen: ChaCha20-Poly1305 ist eine ausgezeichnete Wahl und bietet starke Sicherheit mit konsistenter, hoher Leistung über verschiedene Architekturen hinweg, ohne auf हार्डवेयर-spezifische Funktionen angewiesen zu sein.
  • Sicherheit zuerst: Wählen Sie immer Chiffren, die eine authentifizierte Verschlüsselung (AEAD) bieten. Sowohl AES-GCM als auch ChaCha20-Poly1305 sind AEAD-Chiffren und gelten als stark. Vermeiden Sie ältere, Nicht-AEAD-Chiffren wie aes*-cbc, wenn möglich.

Weitere Überlegungen zur SSH-Leistung

Obwohl die Wahl der Chiffre entscheidend ist, denken Sie daran, dass sie Teil eines umfassenderen Leistungsbildes ist:

  • Kompression: SSH kann Daten vor der Verschlüsselung komprimieren (-o Compression=yes oder Compression yes in ~/.ssh/config). Für stark komprimierbare Daten über langsame Verbindungen kann dies die gefühlte Geschwindigkeit dramatisch verbessern, auch wenn es einen leichten CPU-Overhead verursacht. Für bereits komprimierte Daten oder sehr schnelle Verbindungen kann dies die Leistung beeinträchtigen.
  • Verbindungs-Multiplexing: Funktionen wie ControlMaster in OpenSSH ermöglichen es mehreren SSH-Sitzungen, eine einzige zugrunde liegende TCP-Verbindung wiederzuverwenden, wodurch der Handshake-Overhead für nachfolgende Verbindungen reduziert wird.
  • MTU (Maximum Transmission Unit): Stellen Sie sicher, dass die MTU Ihres Netzwerks optimiert ist, um Fragmentierung zu vermeiden, die die Leistung beeinträchtigen kann.
  • SSH-Client/Server-Version: Halten Sie Ihre SSH-Client- und Server-Software auf dem neuesten Stand. Neuere Versionen enthalten oft Leistungsverbesserungen und Unterstützung für neuere, schnellere Chiffren.

Fazit

Die Optimierung der Auswahl von SSH-Chiffren ist ein wirksames Mittel zur Verbesserung der Leistung Ihrer sicheren Datenübertragungen, ohne die Sicherheit zu beeinträchtigen. Durch das Verständnis der Merkmale moderner Chiffren wie AES-GCM und ChaCha20-Poly1305 und durch die Durchführung praktischer Benchmarks in Ihrer spezifischen Netzwerkkonfiguration können Sie fundierte Entscheidungen treffen.

Denken Sie daran, dass die "schnellste" Chiffre kontextabhängig ist. Eine kurze Benchmarking-Sitzung kann aufdecken, welche Chiffre wirklich die beste Balance zwischen Geschwindigkeit und Sicherheit für Ihre Infrastruktur bietet. Überprüfen Sie regelmäßig Ihre SSH-Konfigurationen und behalten Sie neue Entwicklungen bei der kryptografischen Leistung im Auge, um ein effizientes und sicheres Netzwerk aufrechtzuerhalten.