Möchten Sie testen, ob Ihre Systeme die kryptografischen Vorgaben des Bundesamtes für Sicherheit in der Informationstechnik (BSI) erfüllen? Das BSI stellt dafür “open source” ein entsprechendes Prüf-Tool bereit. Wir haben ausprobiert, ob das hält, was es verspricht.
Inhaltsverzeichnis
Was bedeutet “BSI TR-03116”?
Das Kürzel steht für eine technische Richtlinie (TR) des Bundesamts für Sicherheit in der Informationstechnik (BSI). Früher sprach man bei der BSI TR-03116 von der “Technischen Richtlinie für die eCard-Projekte der Bundesregierung”, heute von den “Kryptografischen Vorgaben für Projekte der Bundesregierung”.
Die Technische Richtlinie wurde in sechs Teile untergliedert. Diese sind:
-
- Telematikinfrastruktur
- Hoheitliche und eID-Dokumente
- Intelligente Mess-Systeme
- Kommunikationsverfahren in Anwendungen
- Anwendungen der Secure Element API
- Kooperative intelligente Verkehrssysteme (C-ITS)
Die genauen Vorgaben und Beschreibungen finden Sie auf der offiziellen TR-03116-Seite des BSI.
Was ist das BSI TaSK-Framework?
Das TaSK-Framework ist ein kostenloses Tool des BSI, mit dem Sie testen können, ob Ihre TLS-Konfiguration (TLS= Transport Layer Security) den Vorgaben der TR-03116-TS entspricht. Das “TS” im Anhang des Richtlinien-Namens steht für Transport Service.
Das kostenlose Framework, das Sie hier bei GitHub herunterladen können, besteht aus den folgenden beiden Komponenten TaSK und TLS Test-Tool, die nachfolgend näher beschrieben werden.
TaSK
Dieses Test-Tool beinhaltet einen Validierungsmechanismus für die Eingabe-Dokumente und einen Report-Generator. Sie starten es über die Kommandozeile und führen es dann lokal oder über eine REST-API aus. Die Konfiguration erfolgt über XML-Dateien.
TLS Test-Tool
Das TLS-Testwerkzeug ist eine eigenständige Anwendung, die verschiedene TLS-Handshakes durchführen und Manipulationen an der TLS-Kommunikation vornehmen kann. Das TLS Test-Tool des BSI wird im Hintergrund von TaSK verwendet. Je nach Art der Prüfung kann es als TLS-Client, eID-Client oder TLS-Server fungieren.
In späteren Fassungen wird das TaSK Framework auch eID-Server, E-Mail-Server und Smart Meter Gateway integriert haben. Den finalen Release peilt das Bundesamt für den Sommer 2023 an.
Warum ist der TLS-Check so wichtig?
Die Transportschichtsicherheit, so die deutsche Übersetzung für Transport Layer Security, kommt in verschiedenen Bereichen zum Einsatz. Ein bekanntes Anwendungsszenario ist die sichere Übertragung von Website-Inhalten (beispielsweise Adress- und Login-Daten) über das HTTPS-Protokoll.
Auch E-Government-Anwendungen, zum Beispiel die Online-Ausweisfunktion des Personalausweises, laufen über TLS. Damit hier wirklich alles sicher ist, gibt es die BSI TR-03116-TS.
Wichtig beim Einsatz von TLS ist: Es sollte (in manchen Branchen, Bereichen und Einsatzfeldern “muss”) stets die Version 1.2 oder höher zum Einsatz kommen. Denn ältere Protokolle sind leichter kompormittierbar – unter anderem sind sogenannte Downgrade-Attacken einfacher möglich.
Der TLS-Check des BSI überprüft, ob auf Ihren Systemen ältere und damit unsichere TLS-Protokolle verwendet werden. Sollte das der Fall sein, erfolgt ein positiver TLS 1.0/1.1 Handshake. Das ist zwar aus Sicht der Verfügbarkeit klasse, aus Sicht der Vertraulichkeit eben nicht mehr.
Wie vermeidet man den Einsatz von alten TLS-Versionen?
Durch eine manuelle Konfiguration aller Systeme, die TLS einsetzen. Oder mit einer umfassenden, automatisierten Systemhärtung! Hier werden nur Protokolle mit TLS 1.2 oder höher zugelassen. Ältere TLS-Protokolle wie SSL 1.0 sind deaktiviert – und das permanent kontrolliert und auch überwacht.
Bedeutet das, dass ein gehärtetes System den Test mit dem BSI TaSK-Framework ohne Probleme besteht? In der Theorie: Ja.
Aber beweist sich die Theorie auch in der Praxis? Wir haben es getestet.
Wie kann man BSI TaSK für einen Test konfigurieren?
Für unseren Test haben wir zwei Systeme mit dieser Konfiguration aufgebaut:
-
- Server: Windows Server 2019 Standard Edition, Version 1809
- Host: Ubuntu 20.04 LTS, C++ 14-kompatibel, CMake
Nachdem wir das BSI-Tool kompiliert haben, erfolgte die Konfiguration. Die sah bei uns so aus:
Hinweis: Klicken Sie auf die Screenshots, um eine größere Ansicht mit mehr Details zu erhalten.
Die Einstellungen sind folgend im Detail beschrieben:
mode=client
Das TLS-Programm läuft als TLS-Client und verbindet sich über TCP/IP mit einem Server.
host
Wenn mode=client, können Sie einen Hostnamen oder eine IP-Adresse angeben, mit dem sich das TLS Test-Tool verbinden soll.
port
Gibt den TCP-Port an, mit dem eine Verbindung hergestellt werden soll.
tlsVersion=([major],[minor])
Auswahl der TLS-Version. Verwenden Sie beispielsweise “(3,1)” für TLS v1.0.
logLevel=[level]
Wir wählten “low” für wenige Debug-Ausgaben.
tlsLibrary=[library]
Wählen Sie die TLS-Bibliothek, die verwendet werden soll.
–configFile=[Pfad der Konfigurationsdatei]
Das Tool erwartet mindestens ein Argument in der Befehlszeile. Geben Sie dabei den Pfad zu einer Konfigurationsdatei an.
Der Test: Wie gut schlagen sich die (un-) gehärteten Systeme?
Wir ließen das BSI TLS Test-Tool mehrfach laufen. Zuerst auf dem ungehärteten Windows-Server-System, wie es “ab Werk” von Microsoft ausgeliefert wird. Danach unterzogen wir Windows Server 2019 einer Härtung und nutzten dann das TaSK-Framework erneut.
Die Ergebnisse sahen so aus:
TLS v1.0 (ungehärtet)
Das Test-Tool hat sich mit dem ungehärteten System erfolgreich verbunden. Es konnte den TLS v1.0 Handshake ausführen, da das alte Verschlüsselungsprotokoll angeschaltete war.
TLS v1.0 (gehärtet)
Das BSI-Tool verband sich mit dem gehärteten System, konnte aber den TLS v1.0 Handshake nicht ausführen. Denn die Härtung schaltete das alte Verschlüsselungsprotokoll ab.
Fazit
-
- Das Tool erkannte, dass bei den ungehärteten System die veraltete TLS-Technologien aktiviert waren.
- Ebenso erkannte es, dass nach einer Härtung (gemäß dem CIS Microsoft Windows Server 2019 Benchmark) veraltete TLS-Protokolle deaktiviert wurden.
Was sagt das AuditTAP zu den TLS-Tests?
Das AuditTAP, mit dem Sie dem Härtungsstatus Ihrer Systeme nach erprobten Standards überprüfen können, checkt ebenfalls die verwendeten TLS-Versionen.
Bei dem ungehärteten Windows-Server-System bekamen wir dieses Ergebnis zu sehen:
Alles ist “rot”. Verständlich, denn es waren noch die veralteten und damit unsicheren TLS-Protokolle aktiviert.
Nach der Härtung fiel der TLS-Check “grün” – also positiv – aus.
Fazit
Das BSI-Tool erfüllt sehr gut seinen Zweck. Sie können damit das Verschlüsselungsprotokoll für TLS-Server, TLS-Clients und eID-Clients testen. Was uns besonders gefallen hat, ist die gleichzeitige Prüfung mehrerer Clients auf ihre TLS-Version. Mit den Ergebnissen sehen Sie, ob Ihre Systeme die Vorgaben nach BSI TR-03116 erfüllen.
Benötigen Sie eine umfassende Überprüfung, empfehlen wir Ihnen unser kostenloses AuditTAP. Das AuditTAP prüft neben den für die Transportsicherheit relevanten Einstellungen einiges mehr. Damit bekommen Sie einen umfassenden Überblick, ob und wie gut Ihre Systeme gemäß aktueller Empfehlungen und Standards sicher konfiguriert sind.
Haben Sie Fragen zum AuditTAP? Oder benötigen Sie Unterstützung bei der (automatisierten) Systemhärtung? Dann melden Sie sich ganz unverbindlich bei uns.