Datendioden sind Firewall-Systeme, die sicherstellen, dass Daten zwischen zwei getrennten Netzen nur in eine bestimmte Richtung übertragen werden. Ihre Anwendung finden diese sehr speziellen Sicherheitssysteme vor allem im staatlichen Geheimschutz. Aber auch in einigen Bereichen der vernetzten und automatisierten Industrie gibt es Anwendungsfälle, in denen diese Art der Hoch-Sicherheit ihren Einsatz findet. Dieser Beitrag verschafft einen kurzen Überblick über die prinzipiellen Lösungen und konkreten Implementierungen auf dem Markt. Der Hauptteil richtet den Fokus auf aktuelle Entwicklungen und Problemstellungen in diesem Bereich. Es werden Möglichkeiten aufgezeigt, das Sicherheitsniveau von Datendioden zu erhöhen. Die Folgen für den realen Einsatz, die diese Sicherheitstechniken mit sich bringen, werden dann im nächsten Schritt erläutert. Der Fokus wird dabei auf Aspekte gelegt, bei denen zwischen einem potenziellen Informationsabfluss und einer zuverlässigen Kommunikation abgewogen werden muss.
Für Datendioden gibt es hauptsächlich zwei Anwendungsfälle, zum einen zum Schutz der Vertraulichkeit (nach dem Bell-LaPadula-Sicherheitsmodell [2]) und zum anderen zum Schutz der Integrität (nach dem Biba-Sicherheitsmodell [3]). Dieser Abschnitt beschreibt außerdem allgemein die Angriffsszenarien, vor denen man sich durch den Einsatz einer Datendiode schützen will.
Historisch gesehen werden mit Datendioden sehr effektiv Computer-Netze unterschiedlicher Geheimhaltungsstufen (beispielsweise VS-NfD und GEHEIM) miteinander verbunden. Somit können Informationen aus niedrig eingestuften Netzen gesammelt und in Netze mit hoher Einstufung zur Auswertung übertragen werden, ohne dabei einen unabsichtlichen oder auch absichtlichen Informationsabfluss zu riskieren. Die Vertraulichkeit der Informationen in den Netzen hoher Einstufung bleibt also gewährleistet.
Aus diesem Einsatzfeld leiten sich fast automatisch die Angriffsszenarien ab. Man geht von einem Angreifer aus, welcher versucht, vertrauliche Informationen zu entwenden. Zusätzlich ist davon auszugehen, dass der Angreifer Zugriff auf das äußere sowie innere Netz hat. Der Angreifer versucht nun, mit den Kommunikationsmitteln der Datendiode Informationen von der Empfängerseite zur Sendeseite zu übertragen. Daher ist der Kommunikationskanal der Datendiode so zu gestaltet, dass eine Informationsübertragung zur Sendeseite hin nicht möglich oder äußerst ineffizient und daher praktisch nicht zu verwenden ist.
Es muss sich dabei nicht zwingend um einen Innentäter handeln, es kann auch ein Computerprogramm sein, welches mit dem regulären Datenverkehr durch eine Datendiode hindurch eingeschleust wurde.
Im vernetzten Industrieumfeld bietet sich ein weiteres Anwendungsfeld. Hier finden Datendioden nicht zum Schutze der Vertraulichkeit, sondern zur Wahrung der Integrität Verwendung. Industrieanlagen werden in der Regel gebaut, um sie über mehrere Jahrzehnte zu betreiben. Trotz der hohen Fluktuationen im IT- und insbesondere im Software-Bereich werden diese Anlagen in aller Regel nicht sehr zeitnah oder teils überhaupt nicht aktualisiert. Dies liegt zum einen an den hohen Kosten von Ausfallzeiten und zum anderen an Safety-Anforderungen. Computer-gesteuerte Industrieanlagen mit veralteter Software, welche über das Internet von Leitstellen aus überwacht werden, sind damit ein leichtes Ziel für Industriespione und Saboteure. Angreifer könnten über das Internet in die Industrieanlagen eindringen und sie manipulieren. Eine Datendiode kann hier sicherstellen, dass die Kommunikation rein unidirektional von innen nach außen möglich ist. Die Anlage kann also Statusinformationen über das Internet an die Leitstellen verschicken, aber es wird verhindert, dass von außen mit der Anlage selbst kommuniziert wird. Durch den Einsatz von Datendioden lässt sich somit das Risiko einer Kompromittierung solcher Anlagen über das Internet auf ein Minimum reduzieren.
Im Integritätsszenario wird ausschließlich von einem Außentäter ausgegangen, welcher versucht die IT-Systeme hinter der Datendiode zu kompromittieren.
Im späteren Dokument wird die Sicherheit hingegen ausschließlich aus dem Gesichtspunkt des Vertraulichkeitsschutzes betrachtet.
Eine Kombination von Integritäts- und Vertraulichkeitsschutz kann mit Datendioden nicht erreicht werden. Theoretisch wäre es denkbar, Netzübergänge mit zwei jeweils entgegengesetzten Datendioden auszustatten. Dies untergräbt aber beide Schutzziele vollkommen, da ein Angreifer in diesem Fall bidirektional über den Netzübergang hinweg kommunizieren kann. An dieser Stelle ist der Einsatz von speziellen inhaltsprüfenden Sicherheits-Gateways (Guards[4]) vorzuziehen.
Wenn man von Datendioden spricht, muss man zwei verschiedene Arten unterscheiden.
Die weitverbreitetste Variante sind die physischen Datendioden. Bei dieser werden zwei Systeme über ein Medium miteinander verbunden, welches auf physischer Ebene nur eine Datenübertragung in eine Richtung zulässt. In der Regel werden dafür Lichtwellenleiter verwendet, an deren Enden sich entweder eine Leuchtdiode oder ein Lichtsensor befindet.
In der Praxis werden hierfür optische Netzwerkschnittstellen verwendet, bei denen der gegenläufige Lichtwellenleiter nicht verbunden oder mechanisch unterbrochen wird.
Die zweite Art sind logische Datendioden. Diese sind auf physischer Ebene bidirektional miteinander verbunden, stellen aber über eine Software-Logik sicher, dass Daten nur in eine Richtung übertragen werden.
Betrachtet man diese beiden Varianten ausschließlich aus dem Blickwinkel der Sicherheit, sind physische Datendioden den logischen immer vorzuziehen. Software kann nie das Sicherheitsniveau von physischen Systemen erreichen. Aus einer Leuchtdiode wird kein Lichtsensor und umgekehrt.
Der größte Nachteil bei dieser Art von physisch unidirektionaler Datenübertragung ist jedoch das Fehlen einer Empfangsbestätigung. Durch diesen Umstand weiß der Sender nie, ob der Empfänger die Daten auch vollständig und unverfälscht empfangen hat. Da es keinen Kommunikationskanal für die Übermittlung dieser Bestätigung bei physischen Datendioden gibt, muss ein Sender auf den Empfang blind vertrauen oder manuell eine Empfangsbestätigung auf einem anderen Weg einholen.
An dieser Stelle liegt der Vorteil der logischen Datendioden. Sie basieren auf einem bidirektionalen Kommunikationskanal und können somit Empfangsbestätigungen an den Sender übermitteln. Diese Eigenschaft macht die Kommunikation über eine logische Datendiode wesentlich zuverlässiger gegenüber einer physischen Datendiode. Dieser Rückkanal zur Übertragung einer Empfangsbestätigung kann jedoch prinzipiell auch immer für einen Datenabfluss in die Gegenrichtung genutzt werden.
Die folgenden Abschnitte beschreiben den Konflikt zwischen Sicherheit und Praktikabilität in diesem Spannungsfeld. Als Beispiel wird hierfür ein bestehendes Paketprotokoll verwendet.
Im Rahmen einer Master-Arbeit [6], wurde ein Paketprotokoll entwickelt, welches für den Einsatz in einer logischen Datendiode und damit auf einen minimalen Rückkanal hin optimiert wurde. Es basiert auf fünf simplen Paketen (SYN, DATA, EOF, FIN, RST), mit denen Sender und Empfänger über einen speziellen Filterprozess hinweg kommunizieren. Der Filterprozess stellt dabei sicher, dass Informationen ausschließlich unidirektional übertragen werden. Das Konzept geht davon aus, dass die Unidirektionalität solange besteht, wie der Filterprozess nicht kompromittiert wird. Der Filterprozess selbst ist über Ringpuffer mit Prozessen zur Protokollumsetzung verbunden. Diese Prozesse setzen TCP in das oben definierte Paketformat um und kommunizieren mit diesem über die Ringpuffer mit dem Filterprozess.
Ein offensichtlicher und unvermeidlicher Rückkanal sind die Empfangsbestätigungen am Ende einer Übertragung, bestehend aus FIN oder RST. Mit diesen beiden Paketen signalisiert der Empfänger dem Sender, ob die Übertragung entweder erfolgreich war (FIN) oder nicht (RST). Ebenso kann der Empfänger aber auch Daten mit diesen beiden Paketen kodieren.
Diese Angriffsmöglichkeit lässt sich zwar nicht verhindern, aber erheblich verzögern, indem der Filterprozess bei negativen Antwortpaketen (RST) die Gesamtkommunikation über eine kleine Zeitspanne hinweg einstellt. Im Normalbetrieb kommen Fehler nur sehr selten vor. Deshalb ist diese Maßnahme im Datenfluss kaum zu bemerken. Sollte jemand allerdings Daten mit FIN und RST kodieren, wird es zu erheblichen Verzögerungen in der Übertragung kommen, da die Hälfte aller Bits einer Zeitverzögerung unterliegen. Die Zeitspanne könnte dabei theoretisch beliebig hoch sein.
Parallelität erlaubt es einem Angreifer, beim Vorhandensein verschiedener gleichzeitiger Verbindungen zu wählen, in welcher Reihenfolge er diese bestätigt. Mit dieser Methode kann der Angreifer den Durchsatz erhöhen und gleichzeitig auf RST-Pakete verzichten.
Es stehen mehrere Ansätze zur Verfügung, um das Ausnutzen der Parallelität zu verhindern.
Wenn der Filterprozess ausschließlich eine Verbindung zur selben Zeit erlaubt, ist diese Möglichkeit von Angriff über die Parallelität nicht mehr möglich. Allerdings würde die Serialisierung den Durchsatz einschränken, da sich die Wartezeiten, die während einer Übertragung zwischen Sender und Empfänger auftreten, über alle Verbindungen aufsummieren und nicht ausgleichen würden.
Um die Ausnutzung der Parallelität durch einen Angreifer zu unterbinden, reicht es ebenfalls aus, dem Filterprozess nur einen Verbindungsabbau zur selben Zeit zu erlauben. Für das Beispielprotokoll würde das bedeuten, dass der Filterprozess ein EOF-Paket solange vorhält (cached), bis das vorherige EOF-Paket mit FIN oder RST beantwortet wurde. Somit kann der Empfänger nicht mehr zwischen verschiedenen Verbindungen wählen, auf die er reagiert.
Dieser Ansatz bringt allerdings einen Nachteil mit sich. Wenn eine Verbindung hängt und nicht beantwortet wird, dann hängt das Abbauen aller anderen Verbindungen ebenfalls bis zum Ablauf eines Timeout.
Über das Zeitverhalten von Antworten entsteht ebenfalls ein unvermeidlicher Rückkanal. Ein Angreifer kann Informationen in die Zeitabstände kodieren, welche zwischen dem Eintreffen des EOF-Paketes und dem Versenden der Antworten liegen. Je nachdem welche Eigenschaften das zugrundeliegenden Kommunikationsmedium bietet, kann dieses Zeitverhalten beliebig fein sein und bietet damit einem Angreifer eine beliebig große Möglichkeit Informationen zu kodieren.
An dieser Stelle bietet sich die Möglichkeit, den Spielraum für das Zeitverhalten gering zu halten. Dazu könnte der Filterprozess alle Empfangsbestätigungen in einem bestimmen Zeitfenster sammeln und diese dann stoßweise an den Sender weiterleiten. Mit dieser Gegenmaßnahme kann man den Durchsatz, der einem Angreifer bleibt, beliebig verringern.
Durch den Einsatz dieser Technik wird allerdings auch die Geschwindigkeit der Datenübertragung eingeschränkt -- vor allem dann, wenn man diese Technik mit der Serialisierung von Verbindungsabbauten kombiniert.
An dieser Stelle muss für die jeweiligen Timeouts und Zeitfenster das richtige Maß gefunden werden, um Sicherheit und Praktikabilität in Einklang zu bringen.
Das Fehlen einer Flusskontrolle im Basisprotokoll kann im realen Einsatz zu erheblichen Einbußen beim Durchsatz führen. Sobald ein Empfänger die Daten einer Verbindung nicht schnell genug abnimmt, stauen sich diese in der Übertragungsstrecke. Andere parallele Verbindungen werden dadurch blockiert.
Sobald die Kapazität des Sendepuffers der Empfängerseite der Datendiode zu einer bestimmten Verbindung ausgeschöpft ist und der Empfängerprozess ein Paket zu dieser Verbindung vom Filterprozess gelesen hat, ist er blockiert, bis der Sendepuffer wieder frei wird. In dieser Zeit ist es ihm nicht möglich andere Verbindungen weiter zu behandeln, da er das zuvor gelesene Paket nicht mehr puffern und auch nicht verwerfen kann.
Die blockierende Verbindung zu verwerfen und diese dann mit einem RST-Paket negativ zu quittieren, ist eine weitere Alternative, dem Fehlen einer Flusskontrolle umzugehen. Allerdings treten volle Sendepuffer in der Realität sehr häufig auf und führen daher zu großen Problemen, da sehr viele reguläre Verbindungen verworfen werden würden.
Um den Durchsatz zu steigern, kann eine Flusskontrolle in das Protokoll integriert werden. Dafür ist der Empfängerseite die Möglichkeit zu geben, der Sendeseite mitzuteilen, dass eine bestimmte Verbindung gestoppt werden muss oder fortgeführt werden kann. Dieses lässt sich beispielsweise durch die Einführung zweier neuer Pakettypen (STALL und UNSTALL) realisieren.
Diese Vorgehensweise führt im praktischen Einsatz dazu, dass viele parallele Verbindungen besser behandelt werden und es zu keinen Blockierungen im Paketfluss kommt.
Allerdings hat dieses Verfahren einen entscheidenden Nachteil. Ein Angreifer kann die STALL- und UNSTALL-Pakete zur Kommunikation verwenden. Da diese Pakete praktisch jederzeit auftreten können und vom Filterprozess ihr berechtigter Einsatz nicht überprüfen lässt, kann er ihren Missbrauch auch nicht effektiv unterbinden. Daher muss diesbezüglich eine Abwägung zwischen ungestörtem Paketfluss und Sicherheit getroffen werden.
Verbindungen im Basisprotokoll können erst nach Beendigung der Übertragung von der Empfängerseite abgebrochen werden. Hier zeigt sich im täglichen Einsatz ein Problem, wenn ein Benutzer eine größere Datenmenge über die Datendiode übertragt und der Empfänger zu Beginn der Transaktion bereits feststellt, dass er diese nicht annehmen kann. Da der Empfänger erst nach Übertragungsende (nach dem EOF-Paket) eine Antwort verschicken darf, muss er zunächst den kompletten Transfer abwarten. Eine solche Transaktion kann je nach Größe der Daten mehre Minuten bis Stunden dauern. Dass der Benutzer die Rückmeldung erst nach dieser Zeitspanne bekommt, ist ein Nachteil in der Benutzbarkeit einer Datendiode.
Wird es dem Empfänger gestattet, die Verbindung zu einem beliebigen Zeitpunkt abzubrechen, schafft man damit eine weitere Kommunikationsmöglichkeit für den Angreifer. Da der Empfänger -- ähnlich wie beim Parallelitätsproblem -- die zu beendende Verbindung auswählen kann, sind somit auch wieder Nachrichten kodierbar.
Um dem Empfänger die Wahl der zu terminierenden Verbindung bei parallelen Verbindungen zu entziehen, ist dem Sender deren Auswahl zu überlassen. Der Sender müsste hierzu in regelmässigen Abständen den Empfänger nach dem Zustand einzelner Verbindungen befragen. Dabei darf es dem Empfänger ausschließlich erlaubt sein, den Status einer bestimmen Verbindung zur selben Zeit zu übermitteln. Mit dieser Methode ist der Empfänger darüber hinaus in der Lage, dem Benutzer auf Senderseite eine schnelle Rückmeldung über einen fehlgeschlagenen Übertragungsversuch zukommen zu lassen, ohne dabei dem Empfänger eine weitere Kommunikationsmöglichkeit zu bieten.
Sollten Anwendungsprotokolle darauf angewiesen sein, dass eine bestehende Verbindung vom Empfänger abgebaut werden muss, ist das oben beschriebene senderseitige Abfragen des Verbindungsendes hier ebenfalls zu implementieren.
In diesem Abschnitt werden konkrete Implementierungen von logischen Datendioden erläutert. Dabei wird gezeigt, mit welchen Techniken sich diese realisieren lassen und mit welchen Mitteln versucht wurde, den potentiellen Rückkanal zu minimieren. Zusätzlich werden die verbleibenden Schwächen der Konzepte kurz dargelegt.
Die NRL-Pump ist eine logische Datendiode welche über 10 Jahre beim U.S. Naval Research Laboratory entwickelt wurde [7]. Die Besonderheit dieser Datendiode liegt in ihrem impliziten Rückkanal. Die NRL-Pump verschickt eine Empfangsbestätigung an den Sender, sobald ein Datenpaket in dem internen Puffer der Datendiode selbst gespeichert wurde. Der Speicherbereich mit den Daten wird erst dann wieder freigegeben, sobald der Empfänger ihren Empfang bestätigt hat. Somit sind die Empfangsbestätigungen, die der Sender von der Datendiode bekommt und die der Empfänger an die Datendiode verschickt, voneinander getrennt.
Damit der intere Puffer der Datendiode nicht saturiert wird, passt die Datendiode die Frequenz der Empfangsbestätigungen der Senderseite an die Empfangsbestätigungsrate der Empfängerseite an. Um den damit entstehenden Timing-Kanal zu entschärfen, werden die versendeten Empfangsbestätigungen zufällig verzögert. Diese Verzögerung verringert den regulären Datendurchsatz. Je nach Einsatzgebiet muss die Größe der zufälligen Verzögerung im Mittel zugunsten der Sicherheit oder Praktikabilität vergrößert bzw. verkleinert werden.
Das US-Patent 76758678 beschreibt ein Verfahren, um Status-Informationen über den Empfang von Daten an den Sender zu übermitteln. Dabei wird von den Daten auf Empfängerseite ein Hash-Wert berechnet und dieser über eine sogenannte Ack-Engine an die Sendeseite der Datendiode übertragen. Die Ack-Engine berechnet von diesem Hash-Wert der Empfängerseite wiederum einen Hash-Wert und überträgt diesen an die Sendeseite. Somit ist ausgeschlossen, dass die Empfängerseite andere Informationen als einen Hash-Wert an die Sendeseite übertragen kann. Die Sendeseite berechnet von den gesendeten Daten ebenfalls einen doppelten Hash-Wert und vergleicht diesen mit dem Wert aus der Ack-Engine. Stimmen beide Hash-Werte überein, wurden die Daten korrekt empfangen.
Dieses Konzept geht davon aus, dass ein Hash-Wert praktisch nicht auf den ursprünglichen Eingabewert zurückgeführt werden kann. Dieses ist bei einem großen unbekannten Eingaberaum auch der Fall. Allerdings kann ein Angreifer Daten in einem kleinen Wertebereich kodieren und zu diesem auf der Sendeseite eine Lookup-Table vorhalten. Auf diese Weise lassen sich Daten in die entgegengesetzte Richtung durch die beschriebene Ack-Engine hindurch übertragen.
Im einfachsten Fall könnten die Daten byteweise übertragen werden. Die 256 möglichen Hash-Werte, in die ein Byte durch die Ack-Engine überführt werden kann, ist für die Sendeseite trivial auf den Ursprungswert zurückzuführen. Selbst bei der Verwendung von Salts beim Hash-Verfahren in der Ack-Engine bleibt das Berechnen aller 256 möglichen Hash-Werte für ein Byte trivial.
Um einen Missbrauch der Ack-Engine zur Datenübertragung unattraktiv zu gestalten, müsste die Ack-Engine eine Beschränkung von Hash-Berechnungen pro Zeiteinheit besitzen. Mit dieser Beschränkung könnte der maximal mögliche Schaden minimiert werden, da einem Angreifer nur geringer Durchsatz zum Übertragen von Daten bleibt.
Logische Datendioden bieten die Möglichkeit, zuverlässig Daten in sensible Netze zu Übertragen und verringern dabei das Risiko eines Informationsdiebstahls auf ein Minimum. Die Gratwanderung zwischen Sicherheit und Zuverlässigkeit hängt dabei immer vom jeweiligen Einsatzgebiet ab. Es lässt sich nicht pauschal sagen, dass bei einer Datendiode ausschließlich die Sicherheit im Vordergrund stehen muss. Im realen Einsatz kommt man sehr schnell zu einem Punkt, an dem ein Mehr an Sicherheit die Einsatzfähigkeit einer Datendioden in Frage stellt. Daher ist betreffend der dargestellten Implementierungsalternativen abzuwägen, ob es für den jeweiligen Einsatz zweckmäßig ist, auf Sicherheit oder Zuverlässigkeit zu setzen.
Weiterführend beschäftigt sich genua mit dem Schutz von Industrienetzen mittels Datendioden als Ausgangsbasis. Ferner wird an der Optimierung dieser Technologie für den Embedded-Bereich geforscht. Diese Arbeiten werden im Rahmen der Verbundprojekte INDI sowie SIBASE durchgeführt und vom BMBF unter den Förderkennzeichen KIS2KRI013 (INDI) bzw. 01IS13020D (SIBASE) gefördert.