Verschlüsselung: Der Schlüssel zur Embedded-Sicherheit
Embedded-Elektronik ist in fast jeder Branche zu finden. Ganz gleich, ob ein Mikrocontroller zur Überwachung eines CAN-Busses in einem Fahrzeug, zum Auslesen von Sensordaten in einem IoT-Gerät oder zur Steuerung eines Küchengeräts verwendet wird – die Möglichkeit, kostengünstige Mikrocontroller in alltägliche Anwendungen zu integrieren, hat die Elektronikindustrie sowie die Branchen, in denen Elektronik zum Einsatz kommt, revolutioniert.
Doch die gleichen Faktoren, die Embedded-Designs so vorteilhaft machen, können sie auch in Gefahr bringen. Embedded-Systeme können aufgrund ihrer Beschaffenheit, ihrer Flexibilität und ihrer Anpassungsfähigkeit – unabhängig davon, ob sie Teil eines umfassenderen Systems sind oder eigenständig funktionieren – ernsthaften Sicherheitsrisiken ausgesetzt sein.
Entwickler von Embedded-Systemen müssen mit den neuesten Cyber-Bedrohungen Schritt halten und robuste, langlebige, mehrschichtige Sicherheitslösungen entwickeln, die sowohl Software- als auch Hardware-Verschlüsselung beinhalten.
Warum sind Embedded-Designs Gefahren ausgesetzt?
Zunächst einmal sind Embedded-Systeme so konzipiert, dass sie kostengünstig sind. Dadurch können sie zwar billig in Massenproduktion hergestellt werden, sind aber auch in ihren Verarbeitungs- und Speicherkapazitäten stark eingeschränkt. Daher verfügen Embedded-Designs möglicherweise nur über genügend Systemressourcen, um eine bestimmte Aufgabe auszuführen, nicht jedoch über eine zusätzliche Malware-Erkennung oder Hardware-Überwachung.
Andere Probleme bei der Sicherheit von Embedded-Designs bestehen darin, dass die Software nicht regelmäßig aktualisiert oder Softwarefehler gepatcht werden oder dass falsche Annahmen über die mit dem Design verbundenen Sicherheitsrisiken getroffen werden. Embedded-Bauteile werden oft in Massenproduktion hergestellt, was sie anfällig für Massenangriffe macht, sobald ihre Schwachstellen entdeckt werden. Die Langlebigkeit einiger Embedded-Designsysteme ist ein Risikofaktor, den die Entwickler berücksichtigen müssen.
Ein weiterer Faktor, der Embedded-Systeme anfällig machen kann, sind freiliegende E/A- und Programmierports (Abbildung 1). In einigen Fällen kann die Einspeisung ungewöhnlicher Spannungsspitzen und -impulse in die E/A einen Mikrocontroller verwirren, und während dieses Verwirrungszustands kann ein Hacker in der Lage sein, in kritische Systeme wie den Programmspeicher und private Daten einzudringen und möglicherweise sogar beliebigen Code zu entnehmen. Die Offenlegung der Programmier-Ports ermöglicht es Hackern auch, eigene Programmierbauteile zu verwenden, um den Speicherinhalt auszulesen oder das Gerät umzuprogrammieren und Schadsoftware einzufügen.
Abbildung 1: Mikrocontroller haben freiliegende Pins, die sie anfällig für Hardware-Angriffe machen
Was ist Verschlüsselung?
In ihrer grundlegendsten Form ist Verschlüsselung der Akt der Unkenntlichmachung von Daten für diejenigen, die nicht der vorgesehene Empfänger dieser Daten sind. Wenn beispielsweise ein Passwort an eine Website gesendet wird, wird das Passwort verschlüsselt, so dass nur der Benutzer und die empfangende Website die Daten entschlüsseln können.
Es gibt zwar viele verschiedene Arten von Verschlüsselungsalgorithmen (AES, TLS, XTEA), aber fast alle Formen der Verschlüsselung erfordern einen Schlüssel, der zum Ver- und Entschlüsseln einer Nachricht verwendet wird. Ohne den Schlüssel kann eine verschlüsselte Nachricht nicht entschlüsselt werden. Daher ist es wichtig, den Schlüssel zu schützen, indem nur der Absender und der Empfänger in den Besitz des Schlüssels gelangen können.
Die in Verschlüsselungsalgorithmen verwendeten Schlüssel lassen sich in zwei Kategorien einteilen: asymmetrisch und symmetrisch. Asymmetrische Schlüssel sind solche, deren Wert für jeden Schlüssel unterschiedlich ist. Sie werden in Anwendungen verwendet, bei denen zwei Parteien ein Paar symmetrischer Schlüssel erstellen müssen, ohne dass eine der Parteien den Schlüssel an die andere sendet (siehe Austausch öffentlicher Schlüssel). Symmetrische Schlüssel sind identisch und werden zur Verschlüsselung von Nachrichten mit höherer Geschwindigkeit verwendet.
Die Größe eines Schlüssels bestimmt auch, wie sicher eine verschlüsselte Nachricht ist. Ein Schlüssel, der nur 4 Zeichen lang ist, könnte mit einer Brute-Force-Methode, bei der jede Kombination von 4 Zeichen ausprobiert wird, sehr leicht in weniger als einer Sekunde geknackt werden. Ein 256-Bit-Schlüssel ist jedoch unglaublich lang. Kein Computer, der derzeit von der Menschheit entwickelt wird, könnte eine mit einem 256-Bit-Schlüssel verschlüsselte Nachricht in einem praktikablen Zeitrahmen entschlüsseln. Es wird gesagt, dass ein Computer für das Knacken eines 256-Bit-Schlüssels bis zu 2,29x1032 Jahre benötigen würde. Dies zeigt, dass lange Schlüssel benötigt werden, die wirklich zufällig sind, damit sie nicht erraten werden können, wodurch es zu lange dauern würde, sie zu knacken.
Wie kann Verschlüsselung helfen, Designs zu sichern?
Daten können sich in einem von drei Zuständen befinden: bei der Speicherung, bei der Übertragung und bei der Verarbeitung, und jeder dieser Zustände ist anfällig für Angriffe. Gespeicherte Daten (z. B. auf einem Flash-Laufwerk) können von einem Hacker kopiert werden. Daten, die gerade übertragen werden (z. B. zwischen RAM und CPU), können von einem Hacker abgefangen werden. Auf Daten, die gerade verarbeitet werden (z. B. in der CPU), kann der Hacker zugreifen, wenn die verarbeiteten Daten im Speicher verbleiben.
Mit dem steigenden Bedarf an starken Sicherheitsmaßnahmen in Embedded-Designs gibt es jetzt für jeden dieser Zustände Sicherheitslösungen, die Verschlüsselungen beinhalten. So können beispielsweise Daten sehr einfach verschlüsselt werden, wenn sie im Speicher abgelegt werden, Daten, die zwischen verschiedenen Chips übertragen werden, können jetzt im laufenden Betrieb verschlüsselt werden, und neue Verschlüsselungsalgorithmen ermöglichen es sogar, verschlüsselte Daten zu verarbeiten, ohne sie entschlüsseln zu müssen.
Vor welchen Herausforderungen steht die Verschlüsselung?
Eine der größten Herausforderungen bei Verschlüsselungssystemen ist die Notwendigkeit, den Schlüssel sicher zu speichern. Wenn sich ein Hacker Zugang zu einem Verschlüsselungscode verschafft, sind alle Daten, die mit diesem Schlüssel verschlüsselt sind, sofort und ohne Aufwand zugänglich. Außerdem ist ein Schlüssel, der einmal kompromittiert wurde, nicht mehr sicher, so dass ein neuer Schlüssel generiert werden muss.
Eine softwarebasierte Verschlüsselung ist ebenfalls eine ressourcenintensive Aufgabe. Es gibt zwar Algorithmen wie XTEA, aber diese sind bei weitem nicht so sicher wie die branchenüblichen Verschlüsselungsmethoden wie AES-256 und TLS. Solche branchenüblichen Verschlüsselungsmethoden können jedoch große Mengen an Speicherplatz erfordern und sind darauf angewiesen, dass der Prozessor komplexe mathematische Operationen ausführt.
Dieser hohe Ressourcenbedarf kann dann ein System so stark verlangsamen, dass der Versuch, Daten im laufenden Betrieb zu verschlüsseln, unpraktikabel wird. Die Leistungseinbußen bei starken Verschlüsselungsalgorithmen haben auch einen höheren Energieverbrauch zur Folge, so dass sie für mobile Anwendungen unpraktisch sind.
Wie kann Hardware helfen?
Der Bedarf an starken Sicherheitsfunktionen in Embedded-Designs hat dazu geführt, dass die Hardwaresicherheit eine immer wichtigere Rolle spielt. Einfach ausgedrückt, werden bei der Hardwaresicherheit die Sicherheitsfunktionen in die physischen Schaltkreise integriert, wodurch Systemressourcen freigesetzt werden, um sich auf die Hauptanwendung zu konzentrieren. Durch die Verwendung von Hardwaresicherheit entfällt auch die Notwendigkeit für Ingenieure, ihre Sicherheitsalgorithmen und -routinen zu entwerfen, die sehr leicht Schwachstellen enthalten könnten.
Eine der wichtigsten Funktionen moderner Mikrocontroller ist der sichere Bootvorgang. Dieses System prüft den Status der Konfigurationsbits, der Firmware und des System-ROM und vergleicht die resultierende Signatur mit einer vordefinierten Signatur. Wenn sich die Signatur verändert, weiß das System, dass etwas manipuliert wurde.
Hardware-Peripheriegeräte für die Verschlüsselung werden jetzt in Mikrocontrollern eingesetzt, die Daten ohne CPU-Ressourcen verschlüsseln und entschlüsseln können. Sie werden auch zwischen Bauteilen eingesetzt, um Busse zu ver- und entschlüsseln, damit Hacker nicht durch physische Angriffe Daten abgreifen können.
Die Verwendung von On-Chip-Verschlüsselungsschlüsseln bietet den Entwicklern auch die Möglichkeit, alle Daten auf dem Gerät sofort zu löschen, ohne dass der Speicher gelöscht werden muss. Ein Design, das Manipulationen oder Störungen erkennt, könnte den Chip-Schlüssel verschlüsseln, wodurch alle verschlüsselten Daten sofort unwiederbringlich wären.
Ein gutes Beispiel für ein kryptografisches Hardware-Add-on für Embedded-Designs ist der Maxim Integrated DeepCover Crypto Controller (Abbildung 2). Dieser Sicherheits-Coprozessor entlastet einen Zentralprozessor, der über keine derartigen Funktionen verfügt, von komplexen kryptografischen Funktionen, einschließlich Verschlüsselung. Zu den in den Coprozessor integrierten Verschlüsselungsmethoden gehören AES mit 128-Bit- und 256-Bit-Schlüsseln, SHA-2-Compute-Engine, echter Zufallszahlengenerator, Unterstützung für sichere Kommunikation einschließlich TLS, Zertifikatspeicherung und Tamper-Detect-Pins zur Abwehr von Hardware-Angriffen.
Abbildung 2: Internes Diagramm des kryptografischen Koprozessors Maxium DeepCover
Zusammenfassung
Verschlüsselung ist ein unglaublich leistungsfähiges Werkzeug zum Schutz von geistigem Eigentum, persönlichen Daten und Systemdaten, aber ein System ist nur so stark wie sein schwächstes Glied. Ein unsicherer Schlüssel oder eine schlechte Implementierung eines Algorithmus kann den Schutz eines Systems vollständig aufheben. Die Schlüssel müssen geschützt werden, es muss Hardware-Sicherheit verwendet werden, und vor allem darf ein Verschlüsselungsalgorithmus niemals von Grund auf neu erstellt oder angepasst werden.