Autor: Dipl. Ing. Frank Gerlach(frankgerlach.tai@gmx.de)
Version: 2.9
Sichere Informatik aus Deutschland |
|
Radarsatellit SAR-Lupe der Bundeswehr. Quelle: OHB
Umspannwerk eines Stromversorgers
Wasserwerk
Satelliten, Server im Rechenzentrum, Firewalls, industrielle Steuerungssysteme (Wasserversorgung, Umspannwerke, Kläranlagen usw), Sensoren und deren Steuerrechner müssen aus der Ferne kontrolliert und bedient werden. Auch das Remote Desktop-Protokoll und X11 zählen zu diesen Anwendungen. Es ist offensichtlich, dass solche Befehls-Schnittstellen gegen unbefugten bzw. feindlichen Zugriff geschützt werden müssen. Allerlei private und staatliche kybernetische Akteure ("Hacker", Cyber-Soldaten) müssen abgewehrt werden. Glücklicherweise ist es jedoch nicht notwendig, potenziell feindliche Datensätze auf der Anwendungsebene zu verarbeiten. Damit kann das Sicherheitsproblem vollständig auf ein chiffriertechnisches Problem reduziert werden. Die Chiffriertechnik wiederum sollte minimalistisch und damit mathematisch als korrekt beweisbar gestaltet sein.
Libelle
Feistel-Chiffre Funktionsprinzip
Als chiffriertechnische Grundlage wird typischerweise eine Blockchiffre wie AES, 3DES, LIBELLE o.ä. eingesetzt. Diese sind sehr gut erforscht und somit als sicher anzusprechen. Grundsätzlich sind jedoch auch starke Stromchiffren denkbar. In Folgenden wird die Blockchiffre AES-256(32 Oktets Schlüssel) angenommen.
SchluesselText = AES(Symmetrischer_Schlüssel, Klartext)
Mit Hilfe des Davies-Meyer-Ansatzes wird aus der Blockchiffre auch noch eine starke Prüfsumme/Hash Message Authentication Code(HMAC) konstruiert, welcher die Integrität des Klartextes sichert.
DAVIES_MEYER[i] = AES(Klartext[i],DAVIES_MEYER[i-1]) DAVIES_MEYER[-1] = 0 GesicherterKlartext = Klartext DAVIES_MEYER(Klartext)
Neben der Vertraulichkeit und Integrität/Authentizität gilt es noch zwei weitere Eigenschaften des Chiffrierverfahrens darzustellen: Schutz gegen Abspielangriffe(Replay Attack) und Unterschiedliche Chiffrierung identischer Klartexte. Dies kann sehr leicht durch Sitzungsschlüssel und AES im Zählerbetrieb gewährleistet werden. Dabei wird für jede Fernmelde-Sitzung ein neuer, (pseudo-)zufallsbestimmter Sitzungsschlüssel erzeugt und mittels symmetrischer Chiffrierung sicher ausgetauscht.
Sitzungs_Schlüssel_verschlüsselt = AES(Symmetrischer_Schlüssel,zufall_32_oktet)
zufall_32_oktet kommt z.B. aus /dev/random oder aus einem abgespeicherten Zähler:
zufall_32_oktet = AES(GeräteSchlüssel,persistenterZaehler++)
GeräteSchlüssel kommt aus physikalischem Zufall und wird z.B. mit JTAG
oder RS232 in den Flash-Speicher geladen. Der persistente Zähler muss unmittelbar
inkrementiert und wieder gespeichert werden. Die physikalisch bedingte maximale Zahl
von Flashvorgängen je Flash-Page ist dabei zu beachten.
Dieser Schlüssel wird von jeweiligen Gegenseite erzeugt.
AES_ZAEHLER[i] = AES(Sitzungs_Schlüssel,i)
SCHLUESSELTEXT[i] = GesicherterKlartext[i] XOR AES_ZAEHLER[i]
BEFEHLS_TELEGRAMM = Sitzungs_Schlüssel_verschlüsselt SCHLUESSELTEXT
Für die genannten Anwendungen ist in der Regel ein asymmetrischer Schlüsseltausch(Public Key, RSA o.ä.) nicht erforderlich und würde nur eine unnötige Komplexität (=Angriffsfläche) erzeugen. Public Key verdoppelt zudem die mathematische Angriffsfläche. Sollte doch ein automatische Erzeugung von Sitzungsschlüsseln nötig sein, wird stattdessen KVZ(Kryptomittel-Verteiler-Zentrale) empfohlen.
Das beschrieben Verfahren lässt sich in weniger als 2000 Zeilen C++ realisieren und ist somit durch einen erfahrenen Informatiker/Chiffrier-Mathematiker überprüfbar. Schlimme Sicherheitsvorfälle wie bei Heartbleed(SSL) sind somit auszuschließen.
Das oben beschrieben Chffrierverfahren stellt sicher, dass nur der Besitzer des symmetrischen Schlüssels gültige Datenpakete an die Anwendungsebene schicken kann. Auch ein Abspielangriff (Replay Attack) wird vom Chiffrierverfahren abgewehrt. Damit kann die Anwendungsebene auch gefahrlos Sicherheitslücken wie Pufferüberläufe, Use-After-Free, SQL Injektionsschwächen, ungenaue Scanner und Parser, Logikfehler usw. enthalten.
Der legitime Bediener/Operateur hat kein Interesse an der Störung/Zerstörung des Systems und wird diese Sicherheitslücken nicht ausnutzen. Zudem kann der Bediener/Systemadministrator/Maschinenführer/Satellitenführer auch ohne Sicherheitslücken gefährliche Befehle ("rm -rf /" oder "volle Kraft Steuerdüse bis Treibstoff erschöpft" ) ausführen. Das Vertrauen in den Bediener ist somit "vollständig".
Folglich reduziert sich also das Sicherheitsproblem auf die minimale Chiffrierbibliothek von weniger als 2000 Zeilen C++. Diese muss genau einmal geprüft werden und kann danach in tausenden verschiedenen Systemen und Millionen Installationen genutzt werden. Aus volkswirtschaftlicher und praktischer Sicht ist dies sehr effizient.
Es ist naheligend, dass die genannte Chiffriertechnik von fachkundigen Behörden und Institutionen geprüft werden. Folgende Behörden und Institutionen kommen dabei in Betracht:
"praktische Absicherung von Fernwirksystemen" "industrial control systems" "SCADA systems" "securing scada systems" "encryption of command links" "Mathematic validation of cryptosystem" "Mathematischer Korrektheitsbeweis eines Chiffriersystems" "Speicherprogrammierbare Steuerung"
| System | Mängel |
|---|---|
| OpenSSL und alle anderen SSL-Bibliotheken |
|
| OpenSSH |
|
| OpenVPN |
|
| Windows Remote Desktop Protocol | Vielfache ausnutzbare Sicherheitslücken auch ohne gültiges Login in der Vergangenheit. |
| Kommerzielle Firewalls von CISCO, Palo Alto Networks und anderen Herstellern | Vielfache ausnutzbare Sicherheitslücken, weil umfangreiche Applikationsebenen oberhalb SSL/TLS auch ohne gültigem Login als Angriffsfläche zugänglich waren. |
| Kommerzielle Virtual Private Networks | Vielfache ausnutzbare Sicherheitslücken, auch ohne gültigem Login. Unnötig große Angriffsfläche. |
Starke symmetrische Chiffren mit 32 Oktet oder mehr Schlüsselraum sind nach den heutigen Erkenntnissen nicht von Quantenrechner-Kryptanalyse betroffen. MST und KVZ nutzen nur eine einzige symmetrische Chiffre und sind somit Quantenrechner-sicher.
Sichere Fernwirkverbindungen sind kein Hexenwerk. Über das öffentliche Internet, über ISDN, X.25, ATM, Kurzwelle, Richtfunk oder Satellitenfunk können diese betrieben werden. Grundlage dafür ist eine sehr kompakte Chiffrierbibliothek, deren Korrektheit mittels mathematischem Beweis dargestellt wird. Alle anderen Ansätze wie z.B. auf OpenSSL basierende VPNs sind nur eine Problemverschiebung und keine Lösung. Auch die Nutzung von vermeintlich sicheren "dedizierten Leitungen" gaukelt nur Sicherheit vor, die nicht wirklich existiert. Ende-zu-Ende Verschlüsselung ist die Lösung des Fernwirkproblems.
Firewalls, Router, Switches(insbesondere virtuelle LANs) sind von entscheidender Bedeutung für die Abschirmung von Rechnern im Rechenzentrum, in Produktionsanlagen, Führungssystemen und an den Arbeitsplätzen der Mitarbeiter.
Zudem ist bei der Netz-Überwachung und Investigation von Sicherheitsvorfällen das Vertrauen in Firewalls, Router und Switches von größter Bedeutung für die EDV-Sicherheit. Administratoren und EDV-Sicherheitsleute müssen sich bei der Aufklärung feindlicher Netzverkehre auf diese Netzelemente verlassen können.
Daraus folgt, dass die genannten Netzelemente hochsichere Management-Schnittstellen brauchen. Die Absicherung dieser Schnittstellen sollte ebenfalls durch eine minimale Chiffre erfolgen.
Die Absicherung von Fernwirksystemen und von Rechnernetzen gegen kybernetischen Angriff ist offensichtlich von großer volkswirtschaftlicher und staatlicher Bedeutung. Die bislang verwendeten Chiffren sind unnötig umfangreich und hatten deshalb in der Vergangenheit schwere Sicherheitslücken.
Der einmalige Korrektheitsbeweis für weniger als 2000 Zeilen C++ Programmcode ist vernachlässigbar im Vergleich zu den möglichen Schäden durch kybernetische Schadwirkung auf die Volkswirtschaft.