Sicherheit im Internet of Things: Mit einer Soliden, sicheren Plattform anfangen
Die Geräte, die heute gesichert werden müssen, sind buchstäblich über die ganze Erde verteilt aber noch mit dem Web verbunden. Das ist eine Herausforderung, der wir uns stellen müssen. Dies muss eine Basis haben, die auf geprüften Protokollen, Schnittstellen und Praxis stecht, um ein sicheres System zu garantieren.
Der rapide Auswuchs vom Internet of Things ist jetzt so weit verbreitet, dass es sogar denen schwerfällt, die in der Industrie vertieft sind, seine volle Auswirkung zu schätzen oder seine Zukunft zuverlässig vorauszusagen. Schätzungen wie 50 Milliarden Geräte bis Jahr X oder 100 Milliarden sind gleichmäßig schwer zu fassen. Auf der anderen Seite hat das Publikum wenig Ahnung von seiner Existenz, geschweige seiner Auswirkung auf das Alltagsleben. Die Meisten führen ihre Interaktion mit diesem riesigen Netz verbundener Geräte und erwarten, dass sie einfach auf dem Smartphone funktionieren. Zuverlässigkeit ist sicher etwas, was ein Kunde erwarten kann, aber sie verlässt sich auf ein Element, das nicht gerade so erkennbar ist, und das ist die Sicherheit.
Sicherheit bedeutet Zuverlässigkeit—dass der Wesen (Mensch oder Maschine), mit dem man verbunden ist, wirklich derjenige ist, den man erwartet. Sie heißt auch Datenschutz—dass kein unbefugter Wesen Zugang zu den Daten und Befehlen hat, die zwischen den autorisierten Teilnehmern ausgetauscht werden. Obwohl diese Konzepte die grundlegenden Voraussetzungen für Sicherheit sind, hat der Benutzer sie nicht immer im Vordergrund seines Denkens—sofern etwas nicht schief geht. Sicherheit ist aber lebenswichtig und unentbehrlich—besonders in einer Gesellschaft, die sich auf dieses Universum von verbundenen Dingen verlässt.
Dieses enorme Universum ist paradoxerweise auf Milliarden von verhältnismäßig kleinen, wenn nicht ganz einfachen Geräten gebaut, die alle auf Größe, Kraftverbrauch und Kosten beschränkt sind. Solche Einschränkungen gelten auch für Entwicklungszeit und Entwicklungskosten. Deswegen müssen die Sicherheitsmaßnahmen so wirksam und unfehlbar wie möglich sein—ihre Implementierung muss auch leicht und billig bleiben. Aus diesen Gründen folgen sie meist Industriestandarden und eine große Zahl ihrer Entwicklungswerkzeuge sind Open Source. Diese scheinbaren Paradoxe können durch den Gebrauch von Strategien und Methoden gelöst werden, die zuverlässige und sichere Systeme liefern, die buchstäblich die moderne Welt unterstützen. Es muss aber betont werden, dass nichts Absolut ist und es wird unvermeidlich Durchbrüche und Fehler auftauchen. Jeder Konstruktionsansatz muss auch eine Strategie für Milderung und Recovery einbeziehen, um den Umfang eines jeden Durchbruchs zu beschränken und die Sicherheit wiederherzustellen.
Nehmen wir als Beispiel hypothetisch ein Gerät für die Messung von Bodentemperatur und Feuchtigkeit, und das auch die Werte von Lufttemperatur, Luftfeuchtigkeit und Sonnenlicht registriert. Dies wird auf einem Weinberg benutzt, um die Wässerung eines bestimmten Sektors zu kontrollieren. Ein solches Gerät arbeitet mit anderen identischen Geräten zusammen, die auf dem Weinberg verteilt sind, um die Wässerung des ganzen Weinbergs zu überwachen und zu kontrollieren. Sie nehmen mit ihren eigenen Sensoren Daten auf und reagieren auf der Basis ihrer internen Programmierung. Oder sie senden die Daten über dem Netz zu einem Gateway oder Cloudsystem. Dort werden die Daten von vielen anderen Geräten gesammelt und analysiert, um Entscheidungen für die ganze Situation zu machen. Diese hängen schließlich von den Zielen des Winzers ab. Die Wässerung ist natürlich nur ein Teil der ganzen Operation und muss neben anderen Faktoren verarbeitet werden. Aber auch in diesem kleinen Beispiel gibt es Daten und Kontrolle, die vor unbefugten Zugang geschützt werden müssen.
Dieses kleine Beispielsgerät hat wahrscheinlich eine Reihe von Sensoren, eine drahtlose Schnittstelle und ist mit verschiedenen Ventilen und Messern verbunden. Es gehört zu einem lokalen Netzwerk, das durch ein Gateway mit dem Internet verbunden ist—vielleicht über ein Virtual Private Network (VPN). Von dort wird es mit Systemen in der Cloud verbunden, wo höhere Entscheidungen—wie die Zeit der Ernte—getroffen werden. Kurz—wir wollen jedes einzelne Gerät sowie die Ganze Operation schützen.
Auf einer Plattform bauen
Am besten fängt man mit einer Hardware/Software- Plattform an, die mit denjenigen Funktionen schon ausgestattet ist, mit denen man anfangen und die Reichweite der Projekte ausbauen kann, ohne die grundliegende Teile von Neuem aufbauen zu müssen. Plattformen, die über eine Reihe von Anwendungen mit einer Auswahl von Leistungsebenen anpassbar sind, eignen sich am besten für schnelle und preisgünstige Produktentwicklung.
Es ist wichtig zu merken, dass Sicherheit vom Grund auf implementiert werden muss. Sie muss nicht nur auf Gerätesicherheit, sondern auf Systemsicherheit gerichtet werden. Geräte, die auf einer Plattform basiert sind, die eine solche Implementierung über eine Hardware-Software- Familie unterstützt, sind für Systemsicherheit besser geeignet. Sonst muss man versuchen, gemischte Elemente über eine autonome Maschine-to-Maschine (M2M) Umgebung zu verbinden.
Zuerst die Hardware-Überlegungen: Es ist auch wichtig, eine Linie von Mikrokontrollern und Mikroprozessoren auszuwählen, die gleiche Hardwareschnittstellen hat, aber die auch eine Reihe von verschiedenen Funktionen bietet. Das verbessert die Anpassbarkeit. Nun können MPUs und MCUs mit demselben Core für neue Versionen ausgetauscht werden, mit der Sicherheit, dass die Anwendungen ohne Änderung laufen werden. Dazu sind die Gerätetreiber geprüft und betriebsfertig. Höhere Sicherheitsmechanismen sind auch übertragbar. Die Fähigkeit, mit einem neuen Prozessor Speicher zu vergrößern, Leistung zu verbessern oder neue Konnektivität einzubauen—das kann man machen, indem man nur auf die gewünschten Änderungen konzentriert, ohne von Anfang an neu zu bauen. Und das wird die Markteinführungszeit und die Gesamtkosten erheblich reduzieren.
Die Plattform-basierte Entwicklungsstrategie—besonders im Fall der Sicherheit—ist für die Auswahl des Betriebssystems auch äußerst wichtig. Ein RTOS, das mit einem vollen Kompliment von schon geprüften Sicherheitskomponenten geliefert wird, ist ein großer Vorteil. Diese können dann ausgewählt, angeschlossen und ins OS-Image integriert werden, um ein sicheres System zu bauen, das mit anderen sicheren Elementen in seinem Netzwerk arbeiten kann, sowie mit den anderen außerhalb seiner nahen Umgebung. Diese Sicherheit muss für die Elemente gelten, die innerhalb einer M2M-Umwelt arbeiten und auch für alle Interaktionen zwischen Benutzern im Internet, LAN oder die mit den verteilten Geräten arbeiten.
Es gibt verschiedene Verbindungsaspekte, mit denen unser Weinberg-Beispiel rechnen muss, um als sicher zu gelten. Obwohl dieses Beispiel sich nicht mit allen (z.B., Email) befasst, sollte es möglich sein, sie alle leicht und schnell auf anderen Elemente des ganzen Systems, wo sie gebraucht sind, zu implementieren. Ganz allgemein gesprochen, ist es (zusätzlich zu Email) unerlässlich, für sichere Dataeitransfer, sicheren Zugang zu Web und Browser und für sichere Gerätemanagement zu sorgen. Dazu ist es absolut wichtig, sichere Software-Fernupgrade und sichere Systemneustart zu garantieren. Alle dieser Sachen haben verschiedene Aspekte und Probleme und es gibt Softwarekomponente, die sie alle behandeln.
Email und Datenmeldungen
Die Mechanismen, die für die Sicherung von Email sind auch für Embedded Systems geeignet, die in M2MßKonfigurationen arbeiten, wann Daten als kurze Meldungen statt als ganze Dateien geschickt werden. Diese Daten müssen auch vor Abhören und Manipulation geschützt werden. Die Basis hierfür ist der Transport Level Security (TLS)-Protokoll, der den früheren Secure Sockets Layer (SSL)-Protokoll ersetzt hat. Man darf sich nicht verwirren lassen, weil sie beide noch als SSL oft bezeichnet werden.
Eine TLS-Sitzung benutzt eine Handshake-Session zwischen Client und Server, in dem der Client Identifizierung abfordert. Der Server schickt eine Zertifikation, die den Servername und seinen öffentlichen Verschlüsselungsschlüssel enthält. Der Client schickt eine Liste von Cifer Suites, die er unterstützt, und der Server wählt eine aus. Der Server schickt auch seinen Verschlüsselungsschlüssel, den der Client benutzt, um eine Zufallszahl zu verschlüsseln. Diese Zahl wird von beiden Seiten, um einen eigenartigen Session-Schlüssel zu generieren. Dieser Schlüssel wird von beiden Seiten nur für diese Session für Verschlüsselung und Entschlüsselung benutzt.
Es ist wichtig, zu merken, dass TLS selbst keine Verschlüsselung und Entschlüsselung durchführt. Dies erfolgt durch besondere kryptografische Komponente, die Mechanismen wie der Advanced Encryption Standard (AES) verwenden. AES benutzt die Schlüssel, die durch TLS generiert werden, um die Verschlüsselung/Entschlüsselung durchzuführen. Wie wir sehen werden, bildet TLS auch das Fundament von anderen Sicherheitsprotokollen und Strategien. Ein Protokoll—Simple Mail Transfer Protocol (SMTP) genannt—wird benutzt, um Sender und Empfänger sowie die Parameter des Umschlags aber nicht des Inhalts der Message zu definieren.
Das heißt, es generiert Befehle und Daten von einem Client und empfängt Anerkennung von dem Server. Dann etablieren die Beiden eine Session. SMTP implementiert selbst keine Sicherheit, aber wenn TLS verwendet wird, wird die Session über eine sichere Verbindung etabliert (Abbildung 1).
1: SMTP Sendung über TLS sichert, dass nur autorisierte Benutzer den Email-Server benutzen und dass die Daten privat übermittelt werden. Wenn die Message vor der Sendung verschlüsselt und unterzeichnet wird, kann sie dann für diejenigen mit den richtigen Schlüsseln als privat authentisiert werden.
Sichere Dateiübertragung
Ein anderer aber TLS-ähnlicher Protokoll ist der Secure File Transfer Protocol (SFTP). SFTP verlässt sich nicht auf TLS, sondern er ist eine sichre Version des älteren File Transfer Protocol (FTP). Er benutzt den Secure Shell (SSH), der ein kryptografischer Protokoll und Schnittstelle ist, und der verwendet wird, Netzwerkdienste, und sichere Netzwerkverbindungen mit fernen Computern zu sichern. SFTP verschlüsselt seine Meldungen vor der Übermittelung und verschlüsselt auch Passworte und Daten, um sensible Daten zu schützen.
Dateien können auch an Emails angehängt und gesendet werden. Daher muss SFTP auch in der Lage sein, mit TLS und SMPT problemlos zu arbeiten. Obwohl SFTP FTP funktionell ähnlich ist, findet die Sendung über SSH statt. Mit SFTP muss der Client vom Server authentisiert werden, bevor die Übertragung stattfinden kann. SFTP unterstützt auch gewisse Dateisystemfunktionen, z.B., Verzeichnislistung, Fernlöschung und die Wiederaufnahme einer Dateiübertragung, die irgendwie unterbrochen wurde.
Sicherer Zugang zum Webserver
Wir können TLS als die Basis für sicheren Zugang zu Webseiten betrachten. Der HTTP Secure (HTTPS) Protokoll passt völlig oben auf TLS und kann also auch selbst verschlüsselt werden. Dies schließt den URL der gewünschten Webseite ein aber nicht die Webadresse oder Portnummer des Hosts. Diese gehören zum unterliegenden TCP/IP, der nicht verschlüsselt wird. Also Dinge wie die genaue Webseite, Headers, Cookies, usw., können geschützt werden. Zwar kann der Eindringling die IP-Adresse noch entdecken aber nicht den ganzen URL. Die Message- und Session-Länge können entdeckt werden, aber nicht den richtigen verschlüsselten Inhalt. Obwohl die Message-Länge entdeckt werden kann, hat der Protokoll die Fähigkeit. Durch Algorithmen, die Message mit Bits zu verlängern, damit die wirkliche Länge des Inhalts nicht erfasst werden kann. Das verhindert den Gebrauch von statistischer Analyse, die auf Message-Länge basiert ist.
Die Fähigkeit, eine Site, die von HTTPS geschützt ist, zuversichtlich benutzen z u können, hängt zum großen Teil von dem Vertrauen ab, den man für die Zertifikate hat, die Site-Authentizität bestätigen. Die Sicherheit von HTTPS hängt meistens mit dem unterliegenden TLS zusammen, sowie auch vom Browser ab, der auf HTTPS basiert sein muss, ohne irgendeinen Teil von HTTP zu benutzen. In diesem Fall könnte die ganze Site offenliegen und obwohl sie durch HTTPS geladen wurde, könnte sensible Information zugänglich sein (Abbildung 2).
2: Der Browser ist intelligent genug, um mit http über TLS zu verbinden um Zugang zum Web zu unterstützen. Der HTTP-Server bietet auch sicheren Zugang zu Webseiten über TLS.
Sicherer Gerätemanagement
Es ist ohne Zweifel die Hauptaufgabe des Internet of Things, Geräte, die über dem Netzwerk bereitgestellt sind, zu überwachen und kontrollieren und Datenaustausch zu ermöglichen. Unerlässlich für diesen Zweck ist der Simple Network Management Protocol (SNMP). SNMP kann nicht nur mit Geräten, die am Web verbunden sind, kommunizieren, sondern auch in sie hineinschauen, Variablen einstellen, Daten abrufen, Befehle ausführen und sogar die Geräte neu konfigurieren. Es ist wahrscheinlich überraschend zu erfahren, aber vor der jüngsten Einführung der Version 3 (SNMPv3) gab es keine sichere Version für diese Operationen.
SNMP verwendet einen Computer— „Master“ genannt—der mit Programmen kommuniziert, die „Agenten“ heißen. Ein Agent läuft dauernd auf jedem System oder Gerät und kommuniziert mit dem Master über einer sicheren Internetverbindung. Der Master übernimmt Kontrolle eines Systems durch den Agenten und hat dann Zugriff auf seine Daten. Der Agent übersetzt die internen Daten und Variablen des Geräts zu und von einem SNMP-spezifischen Format (Abbildung 3).
3: Ein Netzwerk, das durch SNMP gemanagt wird, besteht aus drei Komponenten: das Gerät, das gemanagt wird, ein Software-Agent auf jedem Gerät und die Netzwerkmanagement-Software, die auf dem Manager läuft.
Als Beispiel könnte ein Mastersystem in einem Cloud-Computer oder in einem Gateway-System laufen, das mit einer Menge Feldgeräten verbunden ist. Daten können gesammelt werden, vorläufig analysiert in einem grafischen Format in dem Master-System gespeichert werden, wo sie menschlichen Benutzern zugänglich wären. Oder die Daten könnten durch einen automatischen Prozess laufen, um die Geräte auf einer programmierten Weise einzustellen. Diese Master/Agent Konfiguration kann auch benutzt werden, um die Geräte durch ihre Agentenprogramme neu zu konfigurieren oder zu aktualisieren. Darüber gibt es unten weitere Details.
SNMPv3 hat drei Sicherheitsfunktionen: Verschlüsselung, Message Integrität und Authentisierung. Er hat das unterliegende Protokoll behalten, sieht aber auf Grund verschiedener Terminologie und Konzepte anders aus als die früheren Versionen. Jeder SNMPv3 Einheit hat eine einzigartige Kennzeichnung, die SNMPEngineID genannt wird. SNMP-Kommunikation ist nur zwischen bekannten Peeren möglich. Im Zusatz zu Verschlüsselung und Authentisierung versichert die Message Integrität, dass Paketen während der Sendung nicht manipuliert werden. In vielen Fällen wird eine Implementation von SNMPv3 als Option betrachtet. Aber für ein richtig sicheres Gerät ist es äußerst wichtig, dass er völlig integriert und als Bestandteil des unterliegenden Betriebssystems verifiziert wird.
Das Internet privat machen
Für Organisationen, die eine große Nummer relativ einfacher Geräte bereitstellen wollen, gibt es zwei Möglichkeiten. Sie können innerhalb eines Lokalen Rechnernetzes (LAN) eingesetzt werden und das LAN wird dann durch ein Gateway-System mit dem Internet verbunden. Das Wort „Gateway“ ist genau das—ein Tor. Das Gateway-System kommuniziert mit dem Internet über den Sicherheitsmaßnahmen, die wir schon diskutiert haben. Alles auf der anderen Seite wird meistens durch die Maßnahmen, die im Gateway eingebaut sind, gesichert. Die Alternative ist das Virtual Private Network (VPN), das als Systeme und Geräte existiert, die mit dem öffentlichen Internet verbunden sind. Diese Systeme sind aber durch Sicherheitsmaßnahmen nur befugten Personen und Systemen zugänglich. Dadurch haben die Benutzer das Gefühl, dass sie ihr eigenes privates Netzwerk gebrauchen, das aber wirklich auf dem öffentlichen Internet gebaut ist. Diese zweite Möglichkeit kann für solche Anwendungen attraktiv sein, die geografisch weit verteilt sind.
Die meisten VPNs verwenden den Internet Security Protokoll (IPSec). IPSec arbeitet von einem Ende zum anderen in einem Schema, die auf der Internet-Ebene des Internet Protocol Suite operiert und nicht auf der Transport-Ebene wie TLS. IPSec hat eine Nummer kryptografischer Algorithmen, die besonders für den Gebrauch mit IPSec definiert wurden. Er versetzt oft die Funktionen von Tunneling Protokollen, die mit TCP-IPv4 verwendet werden. Also können die Verbindungen, die mit einem VPN gemacht werden, nicht anonym sein. Aber wird die Verbindung einmal etabliert, sieht der Hacker nur verschlüsselte Daten—einschließlich Paketkopfdaten. Systeme, die SNMP benutzen, um mit verschiedenen Geräten zu kommunizieren, können auch leicht mit einem VPN verbinden und den Datenfluss innerhalb eines M2Msystems privat halten.
Sicherheit innerhalb des Systems
Zusammen mit all diesen Maßnahmen, die eigentlich auf Zugang und Verbindung gerichtet sind, müssen wir uns auch mit anderen tiefen Sicherheitsmaßnahmen befassen. Was passiert, zum Beispiel, wenn ein unautorisierter Benutzer trotz allem doch ins System einbricht? Und wenn ein solcher Einbrecher statt eines Feld-Upgrades Code einlädt, der sein eigenes Malware ist, oder der von ihm vor der Ladung sabotiert wurde? Um solche Möglichkeiten zu konfrontieren, müssen wir in Schichten denken. Oder, um mit der Metapher ein eines Schlosses zu sprechen, „Sollte der Feind die Mauer durchbrechen, dann den Bergfried verteidigen.“
Die Sicherheitsprotokolle für Verbindung und Transport sind verlässlich, indem sie unbefugten Zugang und daher die Ladung von falschem Firmware verhindern können. Aber sie verlangen einen sicheren Boot-Mechanismus, um zu verhindern, dass jeden unautorisierten Code nicht geladen und auch nicht ausgeführt wird. In Embedded-Systemen, laufen die meisten Geräte von Flash und sie müssen alle sicher sein, dass die Code-Image, die von Flash geholt wird auch die richtige ist. Alle Firmware, die auf solch einem System läuft oder in solch ein System aufgeladen wird, muss unterzeichnet—verschlüsselt—sein, damit sie vom System erkannt wird und dann mit dem lokalen Schüssel entschlüsselt werden kann. Dieser Entschlüsselungsschlüssel ist lokal—im System gespeichert—damit er nicht während der Sendung abgefangen wird. Ein weiterer Schritt zum Schützen dieser lokalen Schlüssel wäre sie im lokalen Krypto-Hardware zu verstecken.
Der Code, der in verbundenen Embedded-Systemen läuft, läuft von Flash und ist deswegen vom Anfang an als korrekt bekannt. Die Herausforderung ist es, sicher zu sein, dass alle Feld-Upgrades auch korrekt sind. Um das zu erreichen, müssen sie all vor der Sendung verschlüsselt sein und dann werden sie über den früheren Code „wiedergeflashed.“ Da sie auch schon unterzeichnet sind, sollten sie mit Gebrauch des gespeicherten Schlüssels vom Flash-Speicher laden, entschlüsseln und laufen. Sollte das System nach dieser Sequenz nicht wiederbooten, gibt es eine Fallbackmode, wo eine kleine als korrekt bekannte Image das System übernimmt, um eine Katastrophe zu vermeiden.
Für Feldaktualisierungen wird schon verschlüsselter Code mit Sicherheitsprotokollen wie SFTP neben TLS oder HTTPS übertragen. Er wird mit dem File Allocation Table (FAT) Dateisystem gespeichert und dann über den früheren Code „wiedergeflasht“ werden. Dann kann der neue Code geladen und entschlüsselt werden und genau wie der frühere Code laufen. In dem Fall, wo man eine große Nummer identischer Feldaktualisierungen braucht—wie in unserem Weinberg-Beispiel—ist solche automatische Aktualisierung unerlässlich. Die Kosten und Zeitverbrauch individueller Aktualisierung wären sonst unerschwinglich.
Sicherheit in Schichten oder Partitionen
Wie mit der oben erwähnten Schloss-Metapher ist es wichtig zu erwarten, dass jemand eine oder die andere Sicherheitsmaßnahme durchbrechen könnte und zumindest Teil-Zugang erreichen. Wie wir alle aus persönlicher Erfahrung oder von Nachrichten wissen, gibt es keine absolute Sicherheit. In vielen Systemen ist es einfach nicht praktisch, alle drei Zugangsschlüssel—Passwort, RFID-Chip und Netzhautscan—zu verlangen. Deshalb wird oft nur das Passwort verlangt. Trotzdem ist es noch möglich, in vielen Fällen unautorisierten Zugang zu aufzuspüren und Alarm zu melden. Der Alarmzustand könnte dann alles machen—kritische Dateien löschen oder das Gebäude sprengen.
Aber im Ernste muss es unser Hauptziel bleiben, kleinere Embedded-Geräte zu sichern. Daher muss die Zugangssicherung vom Anfang an im Auge bleiben. Das sollte mit Sicherheitsfunktionen anfangen, die im Betriebssystem schon integriert und geprüft sind und die von Anfang an gebraucht werden können, eine Umgebung zu bauen, die eine Vielzahl von Hürden für jede tiefere Schicht errichtet. Zum Beispiel, eine Reihe verschiedener Firewalls könnte gebraucht werden, eine Situation zu schaffen, wo der Einbrecher erst die nächste Hürde entdeckt nachdem er dir frühere durchbrochen hat. Das verursacht Zeitverzögerung und Entdeckungsgefahr. Ein verschlüsseltes Dateisystem kann Daten schützen, auch nachdem sie gestohlen werden—selbst wenn der Feind das Gerät in die Hand nimmt.
Wenn man das Konzept von Sicherheit in Schichten überlegt, ist es nützlich, die verschiedenen Aspekte des Systems zu betrachten, die durch die Komponenten-Strategien geschützt werden. Ja, sie sind auf verschiedene Teile des Systems gerichtet, aber sie müssen alle stark und koordiniert sein, um echte Sicherheit zu gewährleisten. Zum Beispiel werden TLS, HTTPS, IPSec und sichere drahtlose Verbindungen alle gebraucht, um unbefugten Zugang zu Kommunikationen zu verhindern. Sollte das trotzdem passieren, kann die sichere Dateiübertragung von SFTP zusammen mit SSH zusammen mit dem sicheren Bootloader noch eine Verteidigungslinie bilden, um das Laden und Laufen des fremden Codes zu verhindern. SNMPv3 ist noch eine Barriere gegen das Einbrechen und Übernehmen durch Fremden. Jede von diesen Schichten stellt eine Hürde dar, die der Einbrecher überwinden muss, um das System völlig unter Kontrolle zu bringen. Bevor das passiert, sollte das System Eindämmungsstrategien einschalten, die unten weiter diskutiert werden.
Wenn Sicherheit in Schichten gebaut ist, wird der Effekt auf die Systemsicherheit multipliziert. Zum Beispiel können zwei Firewalls verwendet werden, um Zugang zum System zu bekommen. Da sie unabhängig voneinander entwickelt wurden, ist die Wahrscheinlichkeit des Durchbruchs durch den ersten unabhängig von der Durchbruchswahrscheinlichkeit des zweiten. Die Chance für den Durchbruch durch eine Reihe von Firewalls wird die Wahrscheinlichkeit des Durchbruchs durch Firewall A mit der Wahrscheinlichkeit des Durchbruchs durch Firewall B multipliziert. Sollte die Wahrscheinlichkeit des Durchbruchs durch jeden—A und B—eins zu 105 sein, ist die Wahrscheinlichkeit des Zugangs zum System eins zu 1010—erheblich schwerer.
Wiederbenutzung von Anwendungen und Code
Softwareentwicklung ist ein andauernder Evolutionsprozess. Das Wort „Entwicklung“ bezieht sich nicht nur auf ein einzelnes Projekt, sondern auf das ganze Leben des Unternehmens. Eine Menge neuer Projekte können Code ausnützen, der für frühere Anwendungen entwickelt wurde, aber der gewisse Funktionen leistet, die für ein neues Projekt auch gebraucht werden können. Man muss natürlich vorsichtlich vorgehen, um den Sicherheitsmaßnahmen des laufenden Projekts zu folgen. Wichtig ist es, zu wissen, ob dieselben Methoden bei der Entwicklung des früheren Codes angewandt wurden wie im gegenwärtigen Projekt. Wenn es Zweifel gibt, sollte man gewisse statische und dynamische Tests machen, um sicherzustellen, dass der Code in das neue Softwareimage integriert werden kann. Jeder Fehler wird selbstverständlich repariert werden müssen, bevor man fortfahren kann.
Es ist aber ermutigend zu wissen, dass solcher Code, den man zum Wiedergebrauch anholt, schon geprüft wurde, dass er im Felde schon gelaufen hat und gut aufrechterhalten ist. Das sind alle Dinge, die große Mengen Entwicklungszeit und Geld sparen.
Eine wichtige Aufgabe ist die Identifizierung von „totem Code,“ oder Code, der innerhalb des wiedergebrauchten Codes irrelevant ist, und der deswegen nie läuft. Das kann man durch Coverage Analysen entdecken. Der Zweck ist es, jede Funktion oder Modul, die im laufenden Projekt nicht hingehört zu finden und eliminieren. Es ist auch nötig, jedes Element zu verstehen und seine Funktion innerhalb des jetzigen Programms zu erkennen. Sollte ein Hacker solchen toten Code entdecken, könnte das für ihn eine „Hintertür“ darstellen durch die er ins System Zugang finden könnte. Deshalb ist es wichtig, alle solche Elemente zu entfernen und zu wissen „wer“—als Benutzer oder Software—Daten liest und schreibt.
Im Zusatz zum toten Code gibt es auch das Problem des „toten Programmierers.“ Das heißt Code, der von einem Entwickler geschrieben aber nicht dokumentiert wurde. Dieser Programmierer hat wahrscheinlich die Firma schon verlassen und einen Haufen unverständlichen Codes hinterlassen. Es ist viel leichter, dieses Problem zu vermeiden indem man eine strenge Geschäftspolitik einstellt, die Dokumentation und Anmerkungen verlangt, die jeder qualifizierter Softwarespezialist lesen und verstehen kann. Code, der sonst gut kommentiert ist aber gewisse Teile ohne Dokumentation hat, sollte man genau anschauen. Man sollte auch feststellen, ob die Sicherheitsmaßnahmen, die vom Betriebssystem angeboten sind, auch angewandt wurden. Diese Schritte können Sicherheit nicht garantieren aber sie können helfen, die Vertrauensebene zu erhöhen.
Sicherheit im Einsatz
Wie wir schon betont haben, um Sicherheit zu haben muss die Anwendungen die Sicherheitsfunktionen, die vom Betriebssystem angeboten werden auch benutzen. Das bedeutet, dass Zugang zu einem Gerät im Felde oder zu jedem gesicherten System durch die angebotenen Sicherheits-Protokollen und Schnittstellen erfolgen muss. Jeder unverbrauchter Port oder offene Schnittstelle muss blockiert oder kontrolliert werden. Zugang und Kontrolle zum System durch andere Geräte oder Personen muss mit Anwendung von Passworten, Schlüsseln und Protokollen klar definiert und verstanden werden. Jeder verdächtige Kontakt sollte einen Alarm auslösen. Es ist viel leichter, diese Komponente anzuwenden, wenn sie schon Bestandteile eines Betriebssystems wie Unison sind (Abbildung 4).
4: Netzwerk Sicherheitskomponente hervorgehoben: Dieses Diagramm zeigt die UnisonOS Internet Sicherheitsprotokolle mit Rot markiert, die für Sicherheit in MCU-MPU Geräten nötig sind.
Testen sollte man auch aus der Perspektive eines Hackers, der versucht, an verschiedenen Ebenen einzubrechen. Die Resultate können Schwächen aufdecken und Einsicht geben, wie die Sicherheit weiter verstärkt werden kann. Dies sollte mindestens vor der Bereitstellung erfolgen und auch nach einer Änderung der Systemkonfiguration oder Upgrade.
Wie schon erwähnt, sind Feldaktualisierungen besonders kritisch und sollten immer mit sicheren Schüsseln und verschlüsselten Datenübertragungen und Speicherung gemacht werden. Es ist auch wichtig, ein klares und fixiertes Verfahren zu adaptieren, das Versionen, Daten von Veröffentlichungen und Upgrades genau registriert und eine Liste der Beteiligten aufzeichnet.
Eine wichtige Komponente der Sicherheit ist ein Firewall, der im Betrieb wie ein Filter arbeitet. Eine Filteroperation erlaubt dem Benutzer, auf der Basis von verschiedenen Merkmalen gewisse Verbindungen und Mitteilungen vom System zu eliminieren. Diese können, z.B., Ports (oder Protokollen) spezifische IP-Adressen oder sogar Länder sein. Man kann durch Filtern auch festlegen, welche Adressen oder Mitteilungen für spezifische Ports erlaubt sind. Effektives Filtern ermöglicht die Blockierung von ungewünschten und die Zulassung von gewünschten Mitteilungen und macht das System sicherer.
Der Grund, warum Filtern so effektiv wirkt, ist die Tatsache, dass ein Hacker oft einzubrechen versucht, indem er die normalen Reaktionen des Systems in einer unerwarteten Weise benutzt. Zu lange Zeichenketten, die den Puffer überlaufen oder die Verwendung eines Service, den der Entwickler nich geschütz oder aus Versehen nicht ausgeschaltet hat, können Information aus dem System hervorrufen, die raffiniertere Angriffe ermöglichen—und schließlich zum Durchbruch führen. Die erste Verteidigungslinie gegen Hacker ist sicherzustellen, dass Filtern eingesetzt und richtig konfiguriert ist.
Physischer Zugang und Sicherheit
Es ist selbstverständlich, dass ein Gerät sicherer ist, wenn es in einer kontrollierten Umgebung aufbewahrt wird—gegen die Wünsche des Fremden, der seine Geheimnisse lernen will, gesperrt. Es ist leichter, einen Computer in einem Büro zu schützen als ein kleines Gerät im Felde, das ein Dieb stehlen, wegtragen und nachher ruhig hacken kann. Im ersten Fall kann ein Passwort genügen, weil der Dieb wenig Zeit hat. Im zweiten Fall brauchen die Daten noch weitere Maßnahmen, um sicher zu bleiben.
Die einfachste Methode, um Daten zu sichern ist sicherzustellen, dass sie verschlüsselt sind und dass einen externen Schlüssel nötig ist, um sie zu entschlüsseln—meistens ein Passwort. Das führt zu den drei Dingen, die für Sicherheit erforderlich sind. Das erste—das Passwort—ist etwas, das man kennt. Es gibt noch zwei weitere Dinge. Das zweite ist etwas, das man hat, wie z.B., eine Karte mit RFID Chip, das die Maschine lesen kann und dann Zugang erlauben. Das dritte ist etwas, das man ist. Das ist sehr oft ein Fingerabdruck, das für kleine Geräte populär wird, weil die Fingerabdruckleser, die heute DSP Chips verwenden, sehr klein und preiswert sind. Andere Methoden, wie Gesichtserkennung und Netzhauterkennung (Retinal-Scanning) sind zwar effektive aber beide brauchen Kameras und sind deswegen teuer und nicht kompakt. Andere Methoden, wie DNA-Erkennung, sind wohl in Zukunft möglich, sind aber heute normalerweise nicht auf dem Markt erhältlich.
Oft werden solche Dinge wie Schlüsselleser, Kameras, Fingerabdruckleser, usw., in Gateway Systemen gefunden, wo sie Zugang zu den Feldgeräten erlauben können, die mit Sensoren und Aktuatoren ausgestattet sind. Daten, die zwischen dem gesicherten Gateway und den Geräten fließen, müssen unterwegs verschlüsselt werden und kann dann nach dem Empfang wieder entschlüsselt werden. Verschlüsselte Daten und Befehle müssen vom Gerät entschlüsselt werden aber dann wieder in verschlüsselter Form gespeichert werden.
Alle anderen Zugangspunkte werden auch kontrolliert oder zugeschaltet werden müssen, wie, z.B., die Debugger-Schnittstelle des Geräts. Zugang würde natürlich das Lesen von allem Code und allen Daten erlauben. Daten, die schon verschlüsselt und gespeichert sind wären in dem Augenblick vielleicht kein Problem. Aber der Hacker könnte sie in verschlüsselter Form ablesen und vom Gerät holen und später versuchen sie mindestens zu entschlüsseln. Dieser Zugangsweg muss auch abgeschnitten werden.
Schadenbegrenzung ist genauso wichtig wie Sicherheit
Trotz allen diesen Sicherheitsmaßnahmen, die zweifellos effektiv sind, ist es dennoch wichtig zu verstehen, dass Sicherheit nie absolut sein kann. Wir kennen aus den Nachrichten einige Beispiele von massiven Sicherheitsbrüche—absichtlich und zufällig. Es gibt sicherlich andere Beispiele, über dessen Schwere wir nur spekulieren können, aber nie wirklich wissen werden. Die Tatsache, dass solche Sicherheitsbrüche recht selten sind, bedeutet nicht, dass sie unmöglich sind. Bis 2020 wird die Nummer der verbundenen Geräte auf etwa 50 Milliarden geschätzt und sie wächst irgendwann nachher gegen eine Billion. Eigentlich macht die reine Größe und Komplexität des IoT solche Brüche, wenn auch unwahrscheinlich, doch unvermeidlich. Wie das Lotto gewinnen—es wird Ihnen wahrscheinlich nicht passieren, aber jemand wird das erleben. Und gelegentlich kann eine Brüche in einem Teil des IoT einen Tsunamieffekt auslösen, der eine große Zahl verbundener Systeme kompromittiert.
Solche Ausfälle sind nicht immer auf einen Fehler in den Sicherheitsmaßnahmen zurückzuführen, sondern sie können das Resultat eines Bruches anderswo im weiten Netzwerk von unabhängigen und verbundenen Geräten sein. Es kann natürlich auch das Resultat eines Fehlers oder des Übersehens eines Aspekts der Sicherheit auf einem einzelnen Gerät oder mit einem lokalen Netzwerk liegen. Egal wie sorgfältig die Sicherheit implementiert wird, es ist zwingend erforderlich, Maßnahmen einzurichten, die die Effekte solcher Fälle einschätzen, einschränken und mindern können, wenn und wann sie vorkommen.
Unter den Schritten, die genommen werden können, um eine solche Strategie zu beginnen, ist die Security Impact Analysis (SIA). SIA untersucht das System, um bessere Wege zu finden, Einbrüche und ihre Schäden zu vermeiden und bessere Sicherheitsstrategien zu entwickeln. Es ist auch wichtig, durch ein Privacy Impact Analysis (PIA) die Effekte eines Einbruchs auf Benutzer und Kunden einzuschätzen. Der PIA gibt Einsicht in die Wirkung von Datenverlust, wie, z.B., eine gewisse Zahl persönlicher Dateien, auf die Firma, ihre Geschäftsführung und auch auf die Benutzer und Kunden. Ein PIA ist für die Planung der Reaktion auf einen Einbruch auch nützlich. Natürlich sind solche Analysen und Strategien mit der Art der Anwendung und der betroffenen Gemeinde eng verbunden.
Es gibt auch gewisse Schritte für den Schutz von Daten und Kontrolle, die in die Anwendung eingebaut werden können, um die Sicherheitsfunktionen des Systems auszunutzen. Unter diesen ist die Behandlung von Rohdaten. Es ist allerdings schwer, einzuschätzen, welchen Wert ein großer Haufen roher Daten für einen Hacker hat. Es ist immerhin wichtig, den Transport von Rohdaten zu minimisieren und jeden solchen Transport stark zu verschlüsseln. Es ist auch ratsam, sobald die gewünschte Information herausgeholt wird, eine Geschäftspolitik für die Löschung von Rohdaten zu haben. Zusammen mit dieser Strategie, ist es auch ratsamer, nur jene Daten zu sammeln, die für einen bestimmten Zweck gebraucht sind, als auch Daten zu sammeln, die irgendwann später nützlich sein könnten.
Hardwareeigenschaften sind auch wichtig, z. B., wenn man die Ortsverfolgung von drahtlosen Geräten verhindern will. Dafür kann man zufälligen Kennzeichen benutzen oder wenn möglich, Schnittstellen abschalten. Es kann auch ein Vorteil sein, hardwarebasierte Verschlüsselung/Entschlüsselung zu benutzen und Mikroprozessoren mit solchen Fähigkeiten auszusuchen. Überall, wo Hardwareleistung (schnellerer MCU?) nicht im Wege steht, sollte Verschlüsselung ein wichtiger Bestandteil der Sicherheitsstrategie sein.
Starke Sicherheit ist ein Resultat der Zusammenarbeit zwischen Hardware, Betriebssystem und Anwendung. Ein tiefes Verständnis der Wirkung und mögliche Reichweite eines Bruches kann für die Entwicklung einer Strategie des Recovery eine starke Wirkung haben. Sicherheit ist eine vielseitige und lebenswichtige Technologie für verbundene IoT-Geräte und ihre Server-Systeme. Sicherheit muss auf der ersten Ebene des Entwurfs anfangen und durch den Entwicklungsprozess konsequent aufgebaut werden. Die richtige integrierte Plattform zu haben, auf dem man mit geprüften Komponenten bauen kann, wird die Qualität des Endprodukts sowie die Martkeinführungszeit und Kundenvertrauen erheblich verbessern.