Auch wenn es eine hundertprozentige Sicherheit für tragbare IoT-Geräte niemals geben wird, sollten Softwareentwickler und -architekten ihren Teil dazu beitragen, Gefahren durch Hackerangriffe und Datenschutzverletzungen zu minimieren. Viele der erforderlichen Sicherheitsmaßnahmen sind bereits heute verfügbar. In einigen Fällen muss sich jedoch die Denkweise rund um die Entwicklung von Sicherheitsmaßnahmen ändern. Grundsätzlich darf man die Sicherheit beim Design von Embedded-Systemen nie als nachrangig einstufen. Sicherheitsaspekte sind bereits vom ersten Tag der Konzeption an zu berücksichtigen. Die Entwicklung von Sicherheitsmaßnahmen sollte als Schutz des Designs betrachtet werden – als eine Investition und nicht als Kostenfaktor.

Sicherheit beginnt bei der Konzeption eines Geräts und erstreckt sich über Planung, Entwicklungsprozesse und Technologiefragen. Dieser Artikel konzentriert sich auf Schlüsseltechnologien, die für die Entwicklung sicherer tragbarer Geräte hilfreich, wenn nicht sogar entscheidend sind.

Authentifizierungsmaßnahmen

Bild 1: Zur Code-Authentifizierung sind ein öffentlicher und ein privater Schlüssel erforderlich.

Bild 1: Zur Code-Authentifizierung sind ein öffentlicher und ein privater Schlüssel erforderlich. Mentor Graphics

Eine wichtige Sicherheitstechnik sind Authentifizierungsmaßnahmen. Dazu gehört etwa die Code-Authentifizierung, bei der es im Wesentlichen um eine Authentifizierung des binären Betriebssystem-Images geht. Entwickler können ihr System einrichten und dann überprüfen, ob die eingehenden Daten vom Original Equipment Manufacturer (OEM) stammen. Zudem müssen sie untersuchen, ob irgendein Teil des Codes verändert wurde.

Bild 2: Prinzipieller Ablauf zur Authentifizierung des sicheren Bootens.

Bild 2: Prinzipieller Ablauf zur Authentifizierung des sicheren Bootens. Mentor Graphics

Code-Authentifizierung (Bild 1) und Authentifizierung des sicheren Bootens (Bild 2) sind grundlegende Schritte zur Absicherung von Embedded-IoT-Geräten: Zur Code-Authentifizierung sind ein öffentlicher und ein privater Schlüssel erforderlich. Der öffentliche Schlüssel wird allen im Netzwerk über eine öffentlich zugängliche Quelle oder ein Verzeichnis zur Verfügung gestellt. Der private Schlüssel ist vertraulich und nur für den jeweiligen Eigentümer bestimmt. Da das Schlüsselpaar mathematisch verknüpft ist, kann alles was mit einem öffentlichen Schlüssel verschlüsselt ist, nur von dem entsprechenden privaten Schlüssel entschlüsselt werden – und umgekehrt. Diese Art der Authentifizierung erreicht ein hohes Maß an Vertraulichkeit.

Die Authentifizierung des sicheren Bootens beginnt mit der Ausführung eines First-Stage-Boot-Loaders, der in einem sicheren Flash-Speicher gespeichert ist und von Trusted-Platform-Module-Hardware (TPM) zur Verfügung gestellt wird. Dieser Boot-Loader befindet sich in einem geschützten Speicher, sodass Hacker ihn nicht austauschen können. In diesem geschützten Speicher sind auch die Signatur und der Krypto-Schlüssel für den Second-Stage-Boot-Loader gespeichert. Der First-Stage-Boot-Loader berechnet die Signatur des Second-Stage-Boot-Loaders mithilfe der Verschlüsselungshardware und des Krypto-Schlüssels. Wenn die berechnete Signatur für den Second-Stage-Boot-Loader mit der gespeicherten Signatur übereinstimmt, dann ist der Second-Stage-Boot-Loader gültig und darf ausgeführt werden.

Vertrauenskette etablieren

Bild 3. Nach der ersten Boot-Phase beginnt der Prozess zum Aufbau einer Vertrauenskette.

Bild 3. Nach der ersten Boot-Phase beginnt der Prozess zum Aufbau einer Vertrauenskette. Mentor Graphics

Sobald die erste Boot-Phase bestätigt wurde, kann der Prozess zum Aufbau einer Vertrauenskette fortgesetzt werden. Durch Nutzung der gleichen öffentlichen/privaten Schlüssel lassen sich die ausführbare Module herunterladen, verifizieren, laden und ausführen (Bild 3). Die Vertrauenskette beginnt an der Basis, der Hardware. Der Prozess startet mit dem Authentifizierungsschritt und gewährleistet so, dass die Hardware den Boot-ROM authentifiziert. Der Boot-ROM authentifiziert dann das Betriebssystem und anschließend authentifiziert das Betriebssystem die Anwendungsebene.

Das Ziel dieser Strategie ist zu verhindern, dass nicht signierte und nicht authentifizierte Anwendungen ausgeführt werden. Wenn das System hochgefahren ist und läuft, kann der Anwender Angriffe und das Hochladen von schädlichem Code verhindern, indem er sicherstellt, dass jede heruntergeladene Datei signiert und authentifiziert ist. Interessant wird der Ansatz einer Vertrauenskette insbesondere bei komplexen tragbaren Geräten, die in Abhängigkeit der funktionalen Anforderungen, die zu einem bestimmten Zeitpunkt erforderlich sind, verschiedene Betriebsumgebungen und Anwendungen laden.

Seite 1 von 212