TLS Observability

24.02.2026

1994 veröffentlichte Peter Shor den nach ihm benannten Algorithmus zur Primfaktorzerlegung auf Quantencomputern. Da praktisch alle heute eingesetzten, asymmetrischen Verschlüsselungsverfahren - RSA, elliptische Kurven, Diffie-Hellman-Schüsselaustausch - auf Varianten des Faktorisierungsproblems basieren, könnten diese Verfahren mit dem Shor-Algorithmus gebrochen werden. Bisher wurde noch kein Quantencomputer gebaut, der Zahlen relevanter Länge faktorisieren kann. Dennoch schreitet die Entwicklung voran: Immer mehr fehlerkorrigierte Qubits stehen für Berechnungen zur Verfügung, und die Sicherheitsmarge klassischer asymmetrischer Verfahren wird dadurch kleiner.

Aus diesem Grund wurden neue kryptographische Algorithmen entwickelt, die auch Quantencomputern widerstehen. Das NIST hat 2024 die ersten dieser quantensicheren Verschlüsselungsverfahren standardisiert. Die EU-Kommission empfiehlt, bis 2030 auf diese Algorithmen umzusteigen. Auch wenn Quantencomputer 2030 noch nicht auf jedem Schreibtisch zu finden sein werden, darf man eine Gefahr nicht vergessen: Harvest now, decrypt later. Speicherplatz ist günstig 1. Es ist problemlos möglich, jetzt petabyteweise Kommunikationsdaten mitzuschneiden und diese in einigen Jahren zu entschlüsseln, wenn Quantencomputer so weit sind.

Dabei lässt sich TLS-Kommunikation schon heute gegen „Harvest now, decrypt later“ absichern. Hybride Schlüsselaustauschmechanismen (z. B. X25519 + ML-KEM) sind bereits heute in allen modernen Browsern und Servern verfügbar. Leider fehlt es an Werkzeugen, um deren Einsatz zu ohne großen Aufwand zu überwachen. Hier kommt TLSCryptoMon ins Spiel – ein Tool, das TLS 1.3-Verkehr analysiert und die verwendeten kryptographischen Algorithmen transparent macht.

Genau hinsehen

NIST hat mit ML-KEM und ML-DSA die beiden ersten Post-Quanten-Algorithmen standardisiert. OpenSSL 3.5 unterstützt ML-KEM für den TLS-Schlüsselaustausch und moderne Browser wie Chrome und Firefox nutzen bereits hybride Verfahren, um den Sitzungsschlüssel zu ermitteln. Doch weder OpenSSL noch gängige Server wie Apache oder OpenLDAP protokollieren, welcher Schlüsselaustauschmechanismus tatsächlich genutzt wurde. Dadurch ist es schwierig, die Clientsysteme zu identifizieren, deren Bibliotheken mit den neuen Algorithmen noch nichts anfangen können und daher aktualisiert werden müssen.

Anforderungen

Tools wie testssl.sh erlauben es, die von einem Server unterstützen Algorithmen anzuzeigen. Mit Wireshark lässt sich prüfen, welche Algorithmen bei einer TLS-Verbindung ausgehandelt wurden.

Der Nachteil dieser Tools ist, dass sie viel Expertise und Vorbereitung erfordern. Außerdem ist es nicht einfach, alle Verbindungen eines Servers zu überwachen und die Clients zu identifizieren, die noch keinen hybriden Schlüsselaustausch einsetzen.

TLSCryptoMon wurde entwickelt, um diese Lücke zu schließen. Es sollte einfach zu verwenden sein, keine Installation erfordern und eine leicht zu interpretierende Ausgabe liefern.

Technische Implementierung: Wie TLSCryptoMon funktioniert

eBPF: effiziente Paketanalyse im Kernel

TLSCryptoMon nutzt eBPF (extended Berkeley Packet Filter), eine Technologie, die es ermöglicht, Programme sicher und effizient im Linux-Kernel auszuführen. Das eBPF-Programm von TLSCryptoMon wird dynamisch in den Kernel geladen und analysiert die ersten vom Server auf den überwachten Ports gesendeten Datenpakete. Dabei wird das TLS-Server-Hello ausgewertet, um den Schlüsselaustausch und den eingesetzten Verschlüsselungsalgorithmus zu extrahieren.

Datenverarbeitung im Userspace

Im User-Space außerhalb des Kernels empfängt das Programm die vom eBPF-Programm extrahierten Daten und gibt folgende Informationen pro TLS 1.3-Verbindung aus:

  • Zeitstempel
  • Quell- und Ziel-IP-Adressen (IPv4 oder IPv6)
  • Quell- und Ziel-Ports
  • Verwendeter Schlüsselaustauschalgorithmus (z. B. X25519MLKEM768)
  • Verwendeter Verschlüsselungsalgorithmus (z. B. TLS_AES_128_GCM_SHA256)

Beispielausgabe

::ffff:192.168.0.10 33166 ::ffff:192.168.0.1 443 X25519MLKEM768 TLS_AES_128_GCM_SHA256

Diese Zeile zeigt eine TLS 1.3-Verbindung von 192.168.0.10:33166 zum lokalen Server 192.168.0.1:443. Der Server hat den hybriden Schlüsselaustausch X25519MLKEM768 und die Verschlüsselung TLS_AES_128_GCM_SHA256 ausgewählt.


Compilieren des Programms

Die in Rust und C (für das eBPF-Programm) geschriebene Software nutzt nur wenige Bibliotheken und sollte sich problemlos als Binärdatei auf modernen Linux-Systeme ausführen lassen. Die folgenden - meistens vorhandenen - Bibliotheken müssen installiert sein:

  • libelf
  • libz
  • libgcc
  • libc

Voraussetzungen

Um das Programm zu compilieren sind folgende Tools nötig:

  • Rust (Version 1.80 oder neuer)
  • cargo (Rust-Paketmanager)
  • clang (für die Kompilierung des eBPF-Codes)

Erstellen des Programms

Repository auschecken

Repository klonen und Submodule initialisieren:

git clone https://github.com/FlashSystems/TLSCryptoMon.git
cd TLSCryptoMon
git submodule update --init --recursive

Kompilieren

Programm kompilieren:

cargo build --release

Ausführbare Dateien kopieren

Die ausführbare Datei tlscryptomon findet sich im Verzeichnis target/release/ und kann direkt auf das Zielsystem kopiert werden.

Verwendung

TLSCryptoMon wird mit Root-Rechten ausgeführt, da es das eBPF-Prgramm in den Kernel laden muss. Der wichtigste Parameter ist -p, um den zu überwachenden Port anzugeben:

sudo ./tlscryptomon -p 443

Zusätzliche Optionen:

  • -v: Ausführliche Ausgabe
  • -d: Debug-Ausgabe
  • -D: Debug-Ausgabe für das eBPF-Programm (über trace_pipe abrufbar)
  • -n: Zeigt nur Verbindungen an, die keinen quantensicheren Schlüsselaustausch verwenden

Eine Liste alle Optionen kann über den Parameter -h abgerufen werden.

Performance und Einschränkungen

TLSCryptoMon ist darauf optimiert, möglichst wenig Overhead zu verursachen. Dennoch wurde das Tool bisher nicht auf Systemen mit hoher Last getestet. Es handelt sich um einen ersten Prototypen, der in folgenden Szenarien besonders nützlich ist:

  • Überwachung von TLS 1.3-Servern auf die Nutzung hybrider Schlüsselaustauschmechanismen
  • Identifikation von Clients, welche die vom Server angebotenen Post-Quanten-Algorithmen nicht nutzen
  • Prüfen des TLS-Handshakes von Clients in Entwicklungsumgebungen

Fazit

TLSCryptoMon ist ein einfaches Werkzeug für Entwickler und Administratoren, die ihre Infrastruktur schon jetzt auf die neuen Post-Quantum-Algorithmen vorbereiten wollen. Durch die Kombination von eBPF und Rust bietet es eine effiziente Möglichkeit, die verwendeten kryptographischen Algorithmen zu überwachen – und so sicherzustellen, dass die Kommunikation auch in Zukunft vor Quantenangriffen geschützt ist.

Quellcode und weitere Informationen

Der Quellcode und weitere Informationen (in englisch) stehen auf GitHub – FlashSystems/TLSCryptoMon zur Verfügung.


  1. Der KI-Boom hat den Abwärtstrend bei den Speicherpreisen temporär gebremst. Für Organisationen, welche schon heute einen Großteil der Kommunikation im Internet speichern, stellt dies aber offensichtlich kein Problem dar. ↩︎