Anomalie Detektion

Allgemeine Beschreibung

Seit seiner Einführung hat sich das Internet in seiner Teilnehmerstruktur stark verändert. Während früher hauptsächlich Menschen das Internet genutzt haben, kommunizieren mittlerweile immer mehr Dinge autonom miteinander. Seit etwa 2008/2009 sind mehr Geräte mit dem Internet verbunden als es Menschen auf der Welt gibt. Dieses sogenannte Internet der Dinge (Internet of Things, IoT) bringt viele interessante Anwendungsmöglichkeiten mit sich, wie auch schon in den anderen Versuchen gezeigt wurde. Dadurch, dass sich das Ganze so schnell entwickelt hat, wurden vielfach die Aspekte Sicherheit und Standardisierung von Protokollen und Schnittstellen vernachlässigt. In diesem Zusammenhang befasst sich dieser Versuch mit einem neuen Kommunikationssystem und -protokoll, IOTA genannt, das speziell für das IoT entworfen wurde und das auf der sogenannten Distributed-Ledger-Technologie (DLT) basiert.

Dieser Versuch soll als Proof-of-Concept für die Verwendbarkeit der DLT zur manipulationssicheren Datenübertragung und -zwischenspeicherung dienen. Dazu wird die Grundlage und das Konzept für ein automatisches, intelligentes Mautsystem entwickelt, welches in der Lage ist, auf Grundlage unterschiedlicher Faktoren, welche relevant für Umweltverschmutzung und Straßennutzung sind, individuelle und faire Gebühren zu berechnen. Diese Faktoren können beispielsweise die Durchschnitts- und Maximalgeschwindigkeit, Fahrzeuggröße und -gewicht sowie der Kraftstoffverbrauch und Schadstoffausstoß sein. Um diese komplexen Messwerte aufzunehmen, bedarf es der Kooperation zwischen Mautsystem und Fahrzeug.

Hintergrundinformationen: Blockchain (DLT)

Für diesen Versuch ist ein grobes Verständnis der Distributed-Ledger-Technologie notwendig, daher werden hier einige Hintergrundinformationen gegeben. Ganz allgemein ist ein Ledger (dt. Haupt-/Bilanzbuch) eine Datenbank, in der Transaktionen aufgelistet werden. Diese Transaktionen sind häufig Überweisungen von Geldbeträgen, theoretisch kann aber auch jeder beliebige Datenaustausch als Transaktion betrachtet werden. Traditionell wird ein solches Ledger durch eine zentrale Instanz verwaltet, wie z.B. eine Bank. Wenn Person A Person B 50€ überweisen möchte, zieht die Bank Person A 50€ vom Konto ab und teilt Person B mit, dass sie jetzt 50€ mehr zur Verfügung hat. Das bedeutet aber auch, dass A und B der Bank vertrauen müssen, dass die Bank alles richtig macht und nicht betrügt. Der neue Ansatz steckt nun im Wort „distributed“ (dt. verteilt). Das bedeutet, dass nicht mehr eine zentrale Instanz das Ledger verwaltet, sondern jeder Nutzer/Teilnehmer eine eigene Kopie der gesamten Datenbank besitzt, die er nicht nur einsehen sondern auch verändern kann. So sind keine Mittelsmänner mehr für Transaktionen notwendig, denen man sein Vertrauen schenken müsste. Wie genau das funktionieren kann, damit sich nicht alle gegenseitig betrügen, folgt jetzt.

Der bekannteste Vertreter der DLT ist die sogenannte Blockchain. Sie wird von vielen Kryptowährungen verwendet, unter anderem von Bitcoin. Wie der Name schon sagt, ist sie eine Kette aus Blöcken. Diese Blöcke sind kryptographisch miteinander verbunden (siehe Abbildung). In einem Block sind mehrere Transaktionen zusammengefasst, diese enthalten jeweils Daten zu Sender, Empfänger etc. Zusätzlich enthält jeder Block den Hash-Wert des vorherigen Blocks. Ein Hash ist sowas ähnliches wie ein Fingerabdruck, der aus den Daten eines Blocks berechnet werden kann, umgekehrt ist aber kein Rückschluss vom Hash-Wert auf die Daten möglich. Durch den Hash des vorherigen Blocks wird sichergestellt, dass die Blöcke eindeutig miteinander kryptographisch verkettet sind. Wenn man also einen alten Block ändert, ändert sich auch sein Hash, sodass man seinen nachfolgenden Block ebenfalls genauso aktualisieren muss und so weiter. Damit man auf diese Weise aber nicht ganz einfach Transaktionen aus der Vergangenheit nachträglich manipulieren kann, gibt es noch den sogenannten Nonce. Dieser ist einfach eine beliebige Zahl, die durch Ausprobieren dem Block hinzugefügt wird. Man probiert so lange alle möglichen Zahlen durch, bis der Hash des Blocks mit einer vorgegebenen Anzahl an Nullen aufhört (das ist einfach so festgelegt). Das hört sich einfach an, da es aber so viele Möglichkeiten gibt, dauert das auch bei leistungsstarken Rechnern sehr lange. Bitcoins Miner versuchen genau dieses Puzzle, auch Proof-of-Work genannt, zu lösen. Für einen einzelnen Angreifer ist es daher unmöglich nachträglich mehrere Blöcke zu verändern, da er zwangsläufig auf Dauer irgendwann langsamer sein wird als die anderen Teilnehmer im Netzwerk und dann verloren hat. Da das finden eines gültigen Hash-Wertes (endet auf so und so viele Nullen) extrem schwierig ist, aber umgekehrt ganz einfach geschaut werden kann, ob der Hash-Wert tatsächlich auf die Anzahl Nullen endet, wird auf diese Weise sichergestellt, dass einmal getätigte Transaktionen unveränderbar bleiben.

Hintergrundinformationen: Blockchain Schwächen

Was erst mal super klingt, hat leider auch ein paar Schwächen. Weil immer die komplette Blockchain gespeichert werden muss und das Finden eines gültigen Hash-Wertes so aufwändig sein muss, ist nicht jeder Teilnehmer dazu in der Lage. Deshalb übernehmen die Miner diese Aufgaben für andere, verlangen dafür aber auch Gebühren. Diese Gebühren machen allerdings Mikrotransaktionen unwirtschaftlich; Mikrotransaktionen sind aber wichtig für das Internet der Dinge. Außerdem ist bei Bitcoin die Anzahl der Transaktionen pro Zeiteinheit stark limitiert. Diesen Beschränkungen möchte IOTA begegnen, indem sie ein Kommunikationsprotokoll entwickelt haben, das statt der Blockchain einen gerichteten, zyklenfreien Graphen (Directed Acyclic Graph, DAG) verwendet. Dieser DAG wird „Tangle“ (dt. Gewirr) genannt. Das funktioniert folgendermaßen: Die Knoten des Graphen sind keine Blöcke sondern einfache Transaktionen. Sie werden einander angehängt und so durch gerichtete Kanten verbunden. Dadurch sind die Enden des Tangle (grau) die noch unbestätigten Transaktionen (siehe Abbildung).

Um eine neue Transaktion hinzuzufügen, sucht man sich zwei beliebige noch unbestätigte Transaktionen (grau) aus, kontrolliert, ob diese sich nicht widersprechen, und bestätigt diese anschließend, indem man seine Transaktion an diese beiden anhängt. Je tiefer Transaktionen bereits im Tangle eingebettet sind (grün), desto sicherer sind sie vor Manipulation. Da jeder Teilnehmer seine eigenen Transaktionen hinzufügt und dabei andere Transaktionen verifizieren muss, so also automatisch zur Sicherheit im Netzwerk beiträgt, sind keine Miner und komplizierte Proof-of-Works notwendig. Das spart Rechenleistung und Transaktionsgebühren. Und ganz nebenbei ist so ein DAG auch deutlich schneller als eine Blockchain, da es theoretisch beliebig viele mehr oder weniger parallele Stränge geben kann. Insgesamt lässt sich sagen, je mehr Teilnehmer existieren und je mehr Transaktionen sie durchführen, desto sicher wird das Ganze.

Versuchsaufbau

Das gesamte System besteht aus folgenden Komponenten, die wie in der Abbildung gezeigt miteinander kommunizieren:

  • IoT-Kit „Octopus“: Diese IoT-Kits stehen für die Fahrzeuge. Sie sind die Informationsquellen im Netzwerk und generieren die übertragenen Daten. Sie werden über das MQTT-Protokoll mit dem Rest des Netzwerks verbunden. Auf jedem der Knoten ist eine individuelle Konfigurationsdatei gespeichert, die wiederum die jeweilige Identifikationsnummer enthält. Sobald die Knoten die Erlaubnis erhalten, senden sie periodisch MQTT-Nachrichten mit den Daten über WLAN an die Komponenten des Mautsystems. Diese Daten werden AES-CTR verschlüsselt übertragen, damit sie nicht mitgelesen oder manipuliert werden können.
  • VPN-Gateway: Das VPN-Gateway ist auf einem Raspberry Pi implementiert, der auch als VPN-Router fungiert, welcher ein VPN-Netzwerk für die IoT-Knoten und die anderen Raspberry Pis erstellt. Dadurch bleiben die IoT-Knoten nach außen hin anonym. Der VPN-Raspberry Pi ist auch deshalb notwendig, weil die verwendeten IoT-Knoten nicht in der Lage sind, sich direkt mit einem Enterprise-Netzwerk zu verbinden. Außerdem trägt er zur Portabilität des Netzwerks bei, indem er ein eigenes Netz für die anderen Geräte aufspannt.
  • MQTT-Broker: Der MQTT-Broker wird auf einem Raspberry Pi mit Hilfe des EclipseMosquitto™ MQTT Brokers ausgeführt. Der Broker empfängt die von den IoT-Knoten veröffentlichten Nachrichten und leitet sie an die Empfänger weiter. (Ferner besteht die Möglichkeit, dass der Broker die Nachrichten selbst entschlüsselt und in einer lokalen Datenbank abspeichert.)
  • IOTA-Nodes: Auf dem Raspberry Pi, auf dem der Broker installiert ist, und auf einem weiteren Raspberry Pi ist jeweils ein „Iota Controlled agenT“, oder auch Ict-Node, installiert. Diese beiden stellen zwei Teilnehmer im Tangle dar, über das die Daten des Mautsystems übertragen werden. Wenn das Testnetz mit dem Internet verbunden ist, können sich die beiden Ict-Nodes mit anderen Ict-Nodes im globalen Tangle verbinden und dieses für den Datentransfer nutzen, ansonsten spannen sie ein lokales Tangle zwischen einander auf.
Anwendung

Der Ablauf ist in den beiden Abbildungen schematisch dargestellt. Wenn ein Fahrzeug die Mautstraße erreicht und vor der Schranke anhält, wird der nun folgende Prozess manuell angestoßen: Zuerst muss sich das Fahrzeug dem Mautsystem gegenüber identifizieren. Dazu sendet es seine in der Konfigurationsdatei hinterlegten Identifikationsdaten an die Mautstation. Diese prüft die Daten und genehmigt die Weiterfahrt. Ab diesem Zeitpunkt übermittelt das Fahrzeug periodisch alle 30 Sekunden die von den Sensoren gemessenen Werte an einen Ict-Node, von wo aus sie verschlüsselt in einen dafür vorgesehenen Channel on-top auf dem Tangle gesendet werden. Auf diesen Channel hat auch der zweite Ict-Node Zugriff. Sobald das Fahrzeug die Abfahrt erreicht, (dieses Ereignis wird wieder manuell über einen MQTT-Befehl ausgelöst,) wird zum zweiten Mal seine Identität geprüft und sofort anhand der im Channel gespeicherten Daten die Mautgebühr berechnet. Mit der Bezahlung endet ein Durchlauf. Dieser ganze Prozess kann im Video zu diesem Versuch beobachtet werden.

Fazit

In diesem Versuch wurde für eine Mautanwendung ein System entwickelt, welches die Distributed-Ledger-Technologie nutzt, um Messwerte manipulationssicher zu übertragen und in einem Daten-Channel zu hinterlegen.

Durch die zunehmende Technologisierung und die dadurch ermöglichte Automatisierung in vielen Bereichen des täglichen Lebens und Arbeitens ist es zu einem Wandel der Struktur und der Teilnehmer der Kommunikation im Internet gekommen. Der prozentuale Anteil der menschlichen Nutzer und damit verbunden die Anzahl der universellen Computer hat abgenommen, da immer mehr spezielle und autonom agierende Kleinrechner und Mikroprozessoren Anwendung finden. Dieser Wandel und mit ihm die Zunahme an IoT-Geräten bringen bislang nicht gekannte Herausforderungen mit sich. Um beispielsweise die große Stückzahl und ihren permanenten Einsatz wirtschaftlich zu halten, müssen Hardwareressourcen und Energieverbrauch so preisgünstig wie möglich bleiben, weshalb die traditionellen komplizierten (und so auch der Sicherheit dienenden) Algorithmen nicht mehr oder zumindest nicht schnell genug verwendbar sind. Herkömmliche Netzwerke werden um zentrale Server herum aufgebaut und von ihnen verwaltet und überwacht. In verteilten Netzwerken ist dies auf Grund der großen Anzahl unterschiedlicher Teilnehmer nicht mehr effizient möglich. Hinzu kommt, dass man dem guten Willen der Kontrollinstanz vertrauen muss. Um in verteilten Netzwerken dennoch die Integrität der ausgetauschten Daten, also der Kommunikation untereinander, zu gewährleisten, kann die Distributed-Ledger-Technologie verwendet werden.

back-to-top nach oben