Über unsMediaKontaktImpressum
Christian Zenger & Dr. Benedikt Driessen 19. Juli 2016

Das Internet der Dinge: Im Spannungsfeld zwischen Einfachheit und Sicherheit

Wir befinden uns in einem tiefgreifenden technologischen Umbruch, dessen Resultat als das Internet of Things (IoT) beschrieben wird. Mit dem IoT ist das Paradigma gemeint, nach dem es schon jetzt – und in Zukunft immer stärker – ein Ökosystem von den Alltag durchdringenden, drahtlos miteinander kommunizierenden Kleinstsystemem geben wird. Dies ist auch genau das, was Eric Schmidt (CEO von Google) im Jahr 2015 auf dem Weltwirtschaftsforum in Davos mit folgenden Worten beschrieb: "[Das Internet] wird ein Teil von dir sein, immer und überall. Stell dir vor, du gehst in einen Raum und alle Dinge, die sich darin befinden, interagieren mit dir."

Besonders schlecht wäre es allerdings, wenn nicht der legitime Nutzer sondern Andere diese Interaktion kontrollieren und sabotieren könnten. Ohne auf die IoT Hall-of-Shame [1] eingehen zu wollen, die in den allermeisten Fällen auf blamablen Implementierungsfehlern beruht, möchten wir in diesem Artikel über IoT-Sicherheit und insbesondere über kryptographische Schlüssel sprechen. Diese Schlüssel sind wichtig, weil im Idealfall die Wurzel des Vertrauens immer nur auf dem kryptographischen Schlüsselmaterial basiert. Somit stellt sich die Frage der Herkunft und der Verwaltung dieser Schlüssel. Im Folgenden werden wir über die verschiedenen Verfahren sprechen und zeigen, dass traditionelle Ansätze nicht unbedingt für das IoT geeignet sind. Danach zeigen wir neue Ansätze auf, die besonders den Nutzer und eine einfache Bedienung im Fokus haben.

Sicherheit im Internet der Dinge?

Mit dem IoT wird ein Trend bezeichnet, über den schon seit Jahren viel geschrieben und nachgedacht wurde. Dem gegenüber könnte man begrifflich das "Internet der Computer" stellen. Der so gewählte Kontrast verdeutlicht, dass der klassische Computer als Zugang zum Internet immer mehr in den Hintergrund tritt und durch kommunizierende Alltagsgegenstände abgelöst wird. Bereits heute ist der Computer im privaten Umfeld nicht mehr der dominante Faktor. Smartphones und Tablets sind kleiner, mobil und dienen als bequeme Alternativen. Waren Computer noch hochgradig konfigurierbar, sind bei Smartphones & Co Änderungen an der Hardware ausgeschlossen, nur die Software kann noch über Apps aus streng überwachten Stores erweitert werden. Je stärker das Internet unseren Alltag durchdringt, desto spezifischer wird die Funktionalität der jeweiligen Endgeräte werden.

In diesem Umfeld, in dem private Daten durch Geräte erfasst und verarbeitet werden, auf die der Endverbraucher keinen direkten Zugriff oder effektive Kontrollmechanismen hat, sind integrierte Mechanismen zum Datenschutz wichtig. Da eines der Hauptversprechen des IoT eine Zunahme an Bequemlichkeit für den Endnutzer ist, müssen diese Mechanismen nicht nur wirklich sicher sein, sondern ebenso einfach angewandt werden können. Jeder kennt das Beispiel der Passwörter: Natürlich müssen Passwörter komplex sein und häufig gewechselt werden, damit sie sicher sind. In der Praxis ist dies aber sehr schwer umzusetzen. Nicht selten führen kreative Ideen zur "Lösung" der Passwortproblematik, zu noch größeren Sicherheitsproblemen.

Wie sollen zwei Geräte, die sich nicht kennen, sicher miteinander kommunizieren?

Im Internet der Dinge wird schon heute maßgeblich auf Verschlüsselungsverfahren gesetzt, um Datenschutz zu gewährleisten: In allen aktuellen Standards (z. B. WLAN, Bluetooth oder ZigBee) wird auf die Notwendigkeit der Verschlüsselung hingewiesen, das Problem der sicheren Verteilung von Schlüsseln wird aber häufig nicht gelöst. Wie sollen nun zwei Geräte, die sich nicht kennen, sicher miteinander kommunizieren?

Bekanntermaßen sind Maschinen im Allgemeinen – und eingebettete Mikrokontroller im speziellen – schlecht darin, sich zufällige, kryptographische Schlüssel "auszudenken" und diese sicher zu kommunizieren. Aus oben erwähnten Gründen ist die direkte Eingabe von Passwörtern durch Nutzer auch selten praktikabel.

Historisch betrachtet gibt es im Wesentlichen drei Ansätze, die nachfolgend kurz betrachtet werden.

Vorprogrammierte Schlüssel: Einfach, aber sicher?

Seit der Einsatz von Verschlüsselung zum nachgefragten Produktmerkmal wurde, musste für das Problem der Schlüsselverteilung eine Lösung gefunden werden. Der naive Ansatz ist hierbei, alle Geräte, die verschlüsselt miteinander kommunizieren sollen, mit dem gleichen kryptographischen Schlüssel zu versehen. Diese Schlüssel werden häufig in der Produktion eingebracht und tauchen dann als feste Konstanten im Programmcode auf. Der Ansatz ist extrem simpel und erlaubt es zumindest prinzipiell, die Forderung nach Datensicherheit zu befriedigen. In der Praxis ist der gebotene Schutz aber oft gering.

Bei einer Variante dieses Schemas werden die gleichen Schlüssel auf Untergruppen aller Geräte verteilt. Hier kommt dann das Problem hinzu, dass sichergestellt werden muss, dass alle Geräte die potentiell miteinander kommunizieren sollen auch die gleichen Schlüssel besitzen. Damit wird dann noch ein Verwaltungsaufwand notwendig, bei immer noch zweifelhafter Sicherheit.

Was sind nun die Probleme dieses Ansatzes? Im Extremfall gibt es für eine ganze Produktfamilie nur einen Schlüssel – ein Umstand, der in der Praxis häufig anzutreffen ist. Wird dieser eine Schlüssel kompromittiert, kann nicht mehr von einem effektiven Schutz gesprochen werden. Nur selten werden erfolgreiche Angriffe jedoch öffentlich, meistens wenn Forschergruppen ihre Ergebnisse publizieren. Viel häufiger werden "Hackingtools" im "Darknet" angeboten; dort existiert eine umfangreiches Ökosystem, in dem illegale Geschäftsmodelle florieren – hier sei nur auf "Alphabay" verwiesen [2] .

Häufig existiert bereits das Bewusstsein, dass "der eine" Schlüssel noch "irgendwie" geschützt werden muss. Das schlägt sich dann in Verschleierungsmaßnamen nieder, bei denen versucht wird, den Schlüssel zu "verstecken". In Software alleine sind diese Maßnahmen hoffnungslos. Zwar gibt es vielversprechende Ansätze unter der Überschrift der "Whitebox"-Kryptographie, aber diese sind nicht wirklich effektiv: Bei diesem Ansatz verschmilzt man Verschlüsselungsalgorithmus und Schlüssel und macht es damit unmöglich, den Schlüssel zu extrahieren. Als Ergebnis hat man statt eines bekannten Algorithmus' mit einem geheimen Schlüssel, jetzt einen geheimen Algorithmus. Der Schutzbedarf ist damit nicht geringer geworden, sondern hat sogar noch zugenommen!

Befasst man sich näher mit dem Schutz von Daten und Schlüsseln in eingebetteten Geräten, so kommt man um das große Gebiet der Seitenkanalangriffe nicht herum. Vereinfacht gesagt ermöglichen es diese Verfahren, aus dem Stromverbrauch, der elektromagnetischen Abstrahlung oder dem Zeitverhalten eines Gerätes kryptographische Geheimnisse zu extrahieren. Diese Angriffe sind mittlerweile sehr ausgefeilt und können mit günstiger Hardware (und oft ohne die Zielplattform zu modifizieren) durchgeführt werden. Effektive Gegenmaßnahmen in Software sind ohne Hardwareunterstützung nicht realisierbar und selbst dann ist dies eine Arbeit, die nur wenige Experten weltweit kompetent beherrschen.

Als einzige effektive Maßnahme zum Schutz der wenigen, kritischen Schlüssel muss in diesem Szenario häufig auf Spezialhardware zurückgegriffen werden. Hersteller wie Infineon oder NXP bieten Mikrokontroller, die gegen gängige Klassen von Hardwareangriffen gehärtet wurden. Neben der sicheren Ausführung von Verschlüsselungsverfahren werden auch sichere Speicher angeboten. In der höchsten Schutzklasse ist die Ausführung von jeglichem Programmcode gegen Auslesen und Manipulationen geschützt, diese Bausteine finden Verwendung in hoheitlichen Dokumenten wie dem Personalausweis.

Zertifikatsbasierte Schlüssel: Sicher, aber einfach?

Idealerweise würde jedes Gerät seinen eigenen Schlüssel generieren und mit interessierten Kommunikationspartnern teilen können. Damit würde, selbst wenn ein IoT-Gerät angegriffen wird, eine Kompromittierung nicht alle Geräte betreffen. In diesem Fall verschiebt sich die Kosten-Nutzen-Rechnung für einen potentiellen Angreifer dramatisch und kann ihm im Vorhinein bereits die Motivation nehmen.

Systeme, die eine solche Umsetzung erlauben, existieren tatsächlich und finden Verwendung in der Breite, bspw. zur Absicherung von Internetverbindungen. Hierbei können Server und Internetbrowser eigene Schlüssel pro Verbindung generieren – allerdings stellt sich die Frage: Woher weiß mein Browser, dass er jetzt tatsächlich mit dem Onlinebanking-Server spricht, wenn er ihn nicht vorher schon kannte? Hier kommt eine dritte Partei ins Spiel, der sowohl Server als auch Browser vertrauen müssen. Wenn der Server seinen Schlüssel generiert, stellt ihm dieser Dritte ein Zertifikat aus, mit dem er seine Identität nachweisen kann. Wenn nun der Browser den Serverschlüssel mit Zertifikat erhält, so kann er ebenfalls den Dritten fragen, ob die andere Partei tatsächlich diejenige ist, für die sie sich ausgibt. Selbiger Ansatz wäre mit Client-Zertifikaten für leistungsfähige IoT-Geräte theoretisch auch anwendbar.

Die größte Herausforderung besteht in den Anforderungen an die Hardware.

Individuelle Schlüssel sind also kein Problem, der Prozess zur Erstellung und Verwaltung ist allerdings recht umständlich. Zum einen wird eine Infrastruktur benötigt, die den zuverlässigen Austausch mit dieser dritten Instanz erlaubt. Dann müssen die Zertifikate verwaltet werden: Die Ausstellung ist nicht nur mit einem gewissen Aufwand verbunden, in der Praxis müssen Zertifikate auch erneuert werden können, da sie in der Regel über ein Ablaufdatum verfügen. Dann kann die Dritte Partei ihr Vertrauen in einen der Server auch verlieren (z. B. wenn dieser kompromittiert wurde), zu diesem Zweck müssen spezielle Listen geführt, regelmäßig erweitert und bei jeder Verbindung geprüft werden. Der organisatorische Aufwand ist für Webbrowser im Internet noch handhabbar und profitiert auch davon, dass die bestehende Infrastruktur von allen genutzt werden kann. Mit dem Trend zu der Vernetzung von spezialisierten Geräten ergeben sich allerdings neue Herausforderungen.

Die größte Herausforderung – neben dem Verwaltungsaufwand, den ein Endverbraucher schlichtweg nicht beherrschen können wird – besteht in den Anforderungen der relevanten Verfahren an die Hardware der Geräte. Die verwendeten Verfahren sind mathematisch komplex und haben eine kubische Laufzeit in Relation zum erreichbaren Sicherheitsniveau. Implementierungen von umfangreichen mathematischen Funktionen (z. B. die modulare Exponentiation bei RSA oder die Punktmultiplikation bei ECC) erfordern Speicherplatz und hinreichend RAM um die Operanden im Speicher zu halten. Kleine, günstige Plattformen wie einfache 8-bit- und 16-bit-Prozessoren scheiden daher direkt aus.

Letztlich gibt es dann zwei Möglichkeiten: Den Einsatz von größer dimensionierter Hardware, die auch den Performanz-Anforderungen der Kryptographie genügt oder die Verwendung von Controllern, bei denen die relevanten Verfahren wiederum in Spezialhardware umgesetzt wurden. Letzterer Ansatz spart Implementierungsaufwände und kann potentiell – je nach erreichter Schutzklasse der Hardware – auch wieder gegen Angriffe schützen.

Kontextbasierte Schlüssel: Sicher und einfach!

Ob nun ein symmetrischer Schlüssel für (möglichst kleine) Gerätegruppen oder individuelle asymmetrische Schlüsselpaare (incl. Zertifikat) verwendet werden – alle historischen Authentifikationslösungen basieren auf vorverteiltem Schlüsselmaterial oder Zertifikaten. Unter Betrachtung der Anwendungsfälle sowie der Leistungsfähigkeit bekannter, rechenschwacher IoT-Geräte ist diese harte, schlüsselgebundene Authentifikation nur sehr bedingt für das IoT geeignet.

Eine einfache Lösung zur Absicherung von individuellen Verbindung zwischen IoT-Geräten und/oder logischen Endpunkten kann durch kontextbasierte Schlüsseletablierungsverfahren realisiert werden. Bei diesen Verfahren werden sichere Verbindungen durch einen sicheren Pairing-Mechanismus realisiert, ohne komplexe asymmetrische Kryptographie verwenden zu müssen. Das heißt, dass die zu koppelnden Geräte in ihrem Urzustand keinerlei Schlüsselmaterial besitzen.

Zum Beispiel können so paarweise Schlüssel zwischen einem Smartphone (das die Kopplung zu einem Cloudservice realisiert) und einem IoT-Gerät etabliert werden. Die Etablierung geschieht erst bei der initialen Inbetriebnahme und wird automatisch durch bspw. umgebungsbedingte Eigenschaften sicher authentifiziert. So kann eine individuell abgesicherte Verbindung intuitiv hergestellt werden. Im Prinzip kann jede Art von gemeinsamer Zufallsquelle, die von einem potenziellen Angreifer nur bedingt beobachtet werden kann, als Schlüsselquelle oder Authentifizierungsmittel dienen. Das Schöne an diesen Kommissionierungsverfahren ist die geringe Komplexität sowie die einfache Handhabbarkeit.

Die authentische Schlüsselgenerierung kann beispielsweise voll automatisiert geschehen. Ein Smartphone und eine Smartwatch können sich periodisch auf kryptographische Geheimnisse einigen, indem beide Geräte einfach ihre Umgebungsgeräusche auswerten [3]. Implantate wie Herzschrittmacher und ärztliche Diagnoseinstrumente können sich über Charakteristika vom Herzschlag gegenseitig authentifizieren [4]. Es können aber auch elektromagnetische Eigenschaften von Funkkanälen als gemeinsames Geheimnis verwendet werden, um Endgeräten individuelle Schlüssel zu verpassen [5]. Im Falle der Funk-Kanalbasierten Schlüsselgenerierung können NFC-Pairing ähnliche Verfahren ("touch-and-secure") angewendet werden, ohne teure RFID/NFC-Hardware zu benötigen.

Die verwendeten Verfahren weisen eine geringe Komplexität (lineare Laufzeit in Relation zum erreichbaren Sicherheitsniveau) auf und sind somit selbst auf kleinen, günstigen Plattformen wie einfachen 8-bit- und 16-bit-Prozessoren realisierbar. Durch die Verwendung von erweiterten Verfahren ist auch die direkte Schlüsseletablierung zwischen IoT-Gerät und virtuellen End-Punkten möglich [6].

Auch sehr Privatsphäre-schonend ist die Eigenschaft, dass ein nicht mehr benötigtes Gerät problemlos in den Werkszustand (ohne vorverteile Schlüssel oder IDs) zurückversetzt werden kann, um zu einem späteren Zeitpunkt von einer anderen Person ad hoc wiederverwendet zu werden. Dank der stets neu generierten Schlüssel, kann so keine Verbindung zwischen den Daten beider Anwender hergestellt werden.

Anwendungsbeispiel: Kontextbasierte Schlüssel

Wir möchten uns nun auf einen Anwendungsfall konzentrieren, bei dem eine authentifizierte Ende-zu-Ende-Verschlüsselung zwischen einem low-cost-IoT-Gerät (nicht dem Netzwerk) und bspw. einem konkreten Microservice in einer Cloudapplikation hergestellt werden soll. Durch diesen Anwendungsfall wird klar, dass wir uns nicht auf Sicherheitsmechanismen der vielen verschiedenen Übertragungstechnologien (bspw. WLAN, Bluetooth, ZigBee, GSM, usw.) und auch nicht auf weitere Kommunikationswege, Cloud-Infrastrukturen, Cloud-Plattformen, etc. verlassen möchten.

Das Verbinden von IoT-Geräten mit anderen Geräten oder Cloud-Applikationen soll so einfach und intuitiv sein, wie das Aushändigen eines Haustürschlüssels an ein Kind. IoT-Geräte und -Dienste sollen uns Bequemlichkeit und Effizienz liefern und müssen daher auf komplizierte Sicherheitsmechanismen (ob organisatorischer oder technischer Natur) verzichten.

Fazit

Die größte Herausforderung bei der Absicherung von Verbindungen ist und bleibt der sichere Identifikations- und Authentifikationsmechanismus. Mit kontextbasierte Lösungen kann die Schlüsselverteilung voll automatisch und intuitiv gestaltet werden. Statt vorkonfigurierten oder zentral-vergebenen Schlüsseln zu vertrauen, werden hier Schlüssel aus Informationen der lokalen Umgebung generiert und durch diese lokal begrenzten physikalischen Eigenschaften auch authentifiziert.

Somit begrenzt sich ein sicherer Kopplungsvorgang lediglich auf die einmalige Heranführung eines vertrauenswürdigen Gerätes an das IoT-Gerät. Ein sinnvoller Ansatz für bestehende IoT-Geräte wäre bspw. das Nachrüsten von Lösungen mit vorverteilten Schlüsseln durch Verfahren, die eine kontextbasierten Schlüsseldiversifizierung ermöglichen. Somit kann die Identität und Authentizität zu jedem Zeitpunkt sehr einfach verifiziert werden.

Autoren

Dr. Benedikt Driessen

Benedikt Driessen hat mehr als 15 Jahre Erfahrung im Bereich der IT-Sicherheit. In verschiedenen Rollen in Industrie und Forschung hat er tiefgehende Kenntnisse in Kryptographie, Kryptanalyse, Reverse-Engineering, Threat-Modeling...
>> Weiterlesen

Christian Zenger

Christian Zenger ist ausgebildeter System-Elektroniker, hat Informatik und Nachrichtentechnik studiert und beendet zurzeit seine Promotion im Bereich der angewandten Kryptographie.
>> Weiterlesen
botMessage_toctoc_comments_9210