Security von Embedded-Systemen sicherstellen

| Autor / Redakteur: Dyfan Davies * / Michael Eckstein

Von Grund auf: Sichere Systeme lassen sich am besten realisieren, wenn bereits auf Hardware-Ebene – beispielsweise im Controller – kryptographische Verfahren implementiert werden.
Von Grund auf: Sichere Systeme lassen sich am besten realisieren, wenn bereits auf Hardware-Ebene – beispielsweise im Controller – kryptographische Verfahren implementiert werden. (Bild: Renesas)

Funktionale Sicherheit und IT-Security sind essenziell für den Einsatz von Embedded Systemen. Dieser Beitrag zeigt mögliche Maßnahmen auf, mit denen sich Mikrocontroller zuverlässig absichern lassen.

IoT-Geräte sind quasi per Definition vernetzt – und somit potenziell angreifbar. Mit zunehmender Zahl der Endgeräte und Sensoren innerhalb einer Applikation potenziert sich die Gefahr. Hersteller von Embedded Systemen müssen daher Sicherheitskonzepte entwickeln, die das Hacken der Geräte bereits auf Hardware- und Treiber-Ebene unterbinden können. Dazu können sie auf Maßnahmen wie kryptographische Funktionen, Schlüsselverwaltung und sicheres Booten zurückgreifen, die einige Mikrocontroller bereitstellen. Hier eine Einführung in die wichtigsten Verfahren.

Symmetrische und asymmetrische Verschlüsselung

Zum Verschlüsseln gibt es zwei Arten von schlüsselbasierten Algorithmen, die symmetrische und asymmetrische. Während symmetrische Algorithmen für die Ver- und Entschlüsselung denselben Schlüssel verwenden, setzt die asymmetrische Verschlüsselung zwei unterschiedliche Schlüssel ein. Im Idealfall ist eine Ableitung des einen von dem anderen unmöglich.

In seiner einfachsten Form ist die symmetrische Schlüsselkryptographie eine kryptographische Technik, bei der beide Parteien (Client und Server) den gleichen Schlüssel haben, um Nachrichten bzw. Chiffretexte zu kodieren bzw. zu dekodieren. Der Data-Encryption-Standard (DES) war lange eines der am weitesten verbreiteten Verschlüsselungsverfahren der US-Regierung, bis es sich 2001 als unzuverlässig erwies. Die Stärke des DES ist seine Geschwindigkeit, die bei etwa einer Verschlüsselung pro Mikrosekunde liegt.

Die Schlüsselgröße dieses Algorithmus erwies sich jedoch als Schwachpunkt: Bereits 1998 konnte die Electronic Frontier Foundation (EFF) mit einem Brute-Force-Angriff DES-Schlüssel in weniger als drei Tagen knacken. Daher wurde der DES-Algorithmus angepasst: Triple-DES wendet den DES-Algorithmus dreimal an. Der 2000 eingeführte Advanced Encryption Standard (AES) funktioniert ähnlich wie DES. Er setzt jedoch auf einen festen Block mit 128 Bit und einer Schlüsselgröße von 128, 192 oder 256 Bit – je nachdem, ob eher Geschwindigkeit oder Sicherheit im Vordergrund einer Anwendung steht. AES kann für jedes Vielfache von 32 Bit über dem Minimalwert 128 Bit sowohl für die Schlüssel- als auch für die Blockgröße verwendet werden. AES gilt als sehr sicher. Es war der erste Algorithmus, den die National Security Agency (NSA) für das Verschlüsseln von Geheimdokumenten akzeptiert hat. Die einzigen bekannten praktikablen Angriffe auf AES sind Seitenkanalangriffe. Ein solcher Angriff zielt auf die Implementierung der Verschlüsselung, nicht auf den zugrundeliegenden Algorithmus.

Auch das beliebte RSA- Verfahren hat Schwachstellen

Asymmetrische Verschlüsselung verwendet ein Schlüsselpaar zur Ver- und Entschlüsselung. In seiner einfachsten Form ist dieses Verfahren eine kryptographische Technik, bei der alle Parteien (Server und Client) über einen öffentlichen und einen privaten Schlüssel verfügen. Damit beispielweise Alice (Server) eine Nachricht an Bob (Client) senden kann, erhält Alice den öffentlichen Schlüssel von Bob und verschlüsselt die Klartextnachricht. Bob erhält dann die Nachricht und kann den chiffrierten Text nur mit seinem privaten Schlüssel entschlüsseln. Je schwieriger es ist, den privaten Schlüssel aus dem öffentlichen Schlüssel zu berechnen, desto sicherer ist ein Algorithmus.

Eine der beliebtesten asymmetrischen Ver- und Entschlüsselungsmethoden ist RSA. Ron Rivest, Adi Shamir und Leonard Adleman führten das nach ihnen benannte Protokoll 1977 ein. Dieser asymmetrische Algorithmus nutzt die Tatsache, dass das Produkt aus zwei großen Primzahlen (> 100.000) rechnerisch schwer in seine Bestandteile umzukehren ist. Heute wird RSA meist mit Schlüsselgrößen von mehr als 2048 eingesetzt. Aufgrund seiner Stärke ist der RSA-Algorithmus weit verbreitet und wird in Protokolle wie SSH, OpenPGP, S/MIME und SSL/TLS zur Verschlüsselung eingebunden. Auch zum Validieren digitaler Signaturen bei Verbindungen über das Internet kommt die Technik zum Einsatz.

Aber auch RSA hat Schwachstellen: Für das Berechnen eines asymmetrischen Schlüssels benötigt das RSA-Verfahren einen leistungsfähigen Zufallszahlengenerator. Wenn ein Angreifer den symmetrischen Schlüssel errät, kann er den Algorithmus auch aushebeln. Fortschritte im Quantencomputing könnten zudem künftig die Sicherheit dieses Algorithmus verringern. Das Sicherheitsniveau lässt sich jedoch nur durch exponentiell längere Schlüssel verbessern, was die Handhabbarkeit des Verfahrens verschlechtert. Neuere Systeme setzen daher verstärkt auf die Elliptic Curve Cryptography (ECC). Das Protokoll kommt ohne Primfaktorisierung aus und erreicht mit kleineren Schlüssellängen identische Sicherheitsniveaus.

Hashes zum Überprüfen öffentlich übertragener Schlüssel

Mithilfe von Hashes lässt sich die Authentizität und Integrität elektronisch übertragener öffentlicher Schlüssel überprüfen. Ein Hash-Algorithmus wandelt einen beliebigen Bitstrom in eine Nachricht fester Länge um. Voraussetzung für einen Hash ist, dass der Hash-Wert zum Bestimmen des Klartextes rechnerisch nicht ausführbar ist. Es sollte auch schwierig sein, zwei Nachrichten mit dem gleichen Hash-Wert zu finden (per Definition gibt es Kollisionen, wenn die Größe des Hash kleiner als die Größe der Nachricht ist). Die Hash-Eigenschaften stellen auch sicher, dass ein Angreifer den Hash nicht verändern kann, ohne vom Empfänger der Originalnachricht erkannt zu werden. Auch darf er keine Informationen über die Nachricht ableiten können, nur weil er den Hash-Wert besitzt.

Der Secure-Hash-Algorithmus SHA-1 ist eine kryptographische Hash-Funktion, die von der National Security Agency (NSA) als „U.S. Federal Information Processing Standard“ entwickelt wurde. Er generiert einen 160-Bit-Digest. SHA-1 verbessert SHA-0, indem er eine einzelne bitweise Rotation im Message Schedule seiner Komprimierungsfunktion einfügt. Dadurch korrigiert er eine Schwachstelle, die im Vorgänger vorhanden war und verbessert die kryptographische Sicherheit.

SHA-1 wurde erstmals 1993 veröffentlicht und kommt zum Beispiel in der Versionskontrollsoftware Git, bei Mercurial zum Erkennen von Datenkorruption, bei Nintendo zur Signaturprüfung beim Booten der Wii-Spielkonsole und in bestimmten gesetzlich vorgeschrieben Bereichen der US-Regierung zum Einsatz. SHA-1 füllt zunächst die Länge der Nachricht so auf, dass sie ein Vielfaches von 512 ergibt, da SHA-1 Daten in 512-Bit-Blöcken verarbeitet. Es wird durch Hinzufügen einer 1 gefolgt von Nullen aufgefüllt, wobei die letzten 64 Bits für eine Ganzzahl reserviert sind, die die Länge der Nachricht speichert. SHA-1 verwendet dann eine Reihe von verschiedenen Algorithmen und logischen Operationen, um die Nachricht in den Hash-Digest umzuwandeln.

Der Hash-Digest ist kleiner als die Input-Message und stellt theoretisch sicher, dass die Nachricht nicht manipuliert wurde. Hash-Digests kommen auch zum Einsatz, um sicherzustellen, dass die Datei von der richtigen Person stammt. Im Jahr 2005 stellte sich heraus, dass auch SHA-1 angreifbar und deshalb nicht mehr die beste Methode zur Datensicherung ist. Demnach können eine Kollision erzwungen werden kann, so dass der Hash-Digest für zwei verschiedene Eingänge gleich ist. Seit 2010 wird daher SHA-2 oder SHA-3 als Ersatz für SHA-1 eingesetzt. Der Nachfolger SHA-2 arbeitet sehr ähnlich, verwendet jedoch 224, 256 und 384 als mögliche Hash-Längen. Dadurch ist das Verfahren sicherer.

Heutige Sicherheitssysteme nutzen häufig eine Kombination aus asymmetrischen und symmetrischen Funktionen. Während die asymmetrische Verschlüsselung mit zwei unterschiedlichen Schlüsseln arbeitet, basiert die symmetrische Verschlüsselung auf einem identischen Schlüssel. Dieser muss Sender und Empfänger zur Verfügung stehen. Beide müssen ihn also zuallererst über ein sicheres Medium austauschen. Dieser Schritt ist essentiell. Früher hat man den Schlüssel oft persönlich übergeben, was sehr umständlich und oft nicht praktikabel ist. Daher geht man heute meist den Weg der Hybridverschlüsselung: Zunächst wird mithilfe eines asymmetrischen Verfahrens eine sichere Verbindung aufgebaut, über die der symmetrische Schlüssel dann verschlüsselt übertragen wird. Ist der Empfänger schließlich im Besitz des symmetrischen Schlüssel, erfolgt die Übertragung der symmetrisch verschlüsselten Nachricht. Vorteil: Die symmetrische Ver- und Entschlüsselung arbeitet sehr viel schneller als asymmetrische Verschlüsselung. Kein Vorteil ohne Nachteil: Die Anzahl der Schlüssel wächst mit der Zahl der Teilnehmer quadratisch. Daher ist ein effizientes Schlüsselmanagement bei der symmetrischen Verschlüsselung essenziell.

Ein Beispiel für eine Hybridverschlüsselung ist das SSL/TLS-System. Ursprünglich von Netscape Communications entwickelt, ist der Secure Sockets Layer (SSL) heute als Transport Layer Security (TLS) bekannt. Das Verfahren stellt eine solide Komponente für den Aufbau sicherer Anwendungen dar. Dabei ist zu beachten, dass die Kombination von symmetrischer und asymmetrischer Verschlüsselung zu einer höheren Anzahl von Schlüsseln führt, die sicher verwaltet werden müssen.

SSL/TLS für den Aufbau sicherer Applikationen

Ziel von TLS ist es, eine sichere Verbindung zwischen Client und Server zu gewährleisten. Das Protokoll selbst ist in zwei verschiedene Phasen unterteilt: eine Verhandlungsphase und eine Anwendungsphase. Betrachten wir einen TLS-Client und -Server. Die Verhandlungsphase beginnt damit, dass der Client eine Verbindung mit dem Server herstellt, indem er Informationen zu den Algorithmen angibt, die er unterstützt. Der Server antwortet dann mit einigen Authentifizierungsinformationen basierend auf dem von der IETF definierten X.509-Zertifikat. Der Client führt daraufhin eine Überprüfung der Serverinformationen durch und sendet zufällige Daten, die mit dem öffentlichen Schlüssel des Servers verschlüsselt sind. Dadurch können Client und Server einen Session Key zum Ver- und Entschlüsseln von Daten ableiten. Die Anwendungsphase verwendet schließlich den Session Key zur Verschlüsselung der übertragenen Daten. Durch dieses Protokoll wird das Hypertext Transfer Protocol (HTTP) gesichert und in HTTPS (secured) überführt. Der Vorteil von SSL/TLS ist die Kombination der asymmetrischen Verschlüsselung zur Authentifizierung mit der schnelleren Verarbeitung des symmetrischen Schlüssels, die zudem weniger Rechenleistung beansprucht. Der symmetrische Algorithmus beinhaltet in der Regel Triple DES oder AES, während der am häufigsten verwendete asymmetrische Algorithmus RSA ist.

Unabhängig davon, welche Ver- oder Entschlüsselungsmethode zum Einsatz kommt, spielt die Verwaltung der Schlüssel eine wichtige Rolle. Symmetrische Funktionen sind wie beschrieben vollständig von der Geheimhaltung des Schlüssels abhängig. Die Handhabung dieser Schlüssel scheint zunächst einfach. Die Quelle des Schlüssels und das Ziel sind vertrauenswürdige Agenten, die den Schlüssel auf seinem Weg von der Quelle zu seinem endgültigen Ziel innerhalb des Embedded-Systems schützen. Viele Systeme setzen heute auf dieses Verfahren zur Sicherung der Schlüssel. Einige Sicherheitssysteme ändern regelmäßig die Schlüssel, um ein besseres Sicherheitsniveau zu gewährleisten. Das ist jedoch teuer – und kann zur Bedrohung für das System mutieren. Dies erfordert eine Schlüsselverwaltung, die im vertrauenswürdigen IP-Treiber angeboten wird.

Schlüsselverwaltung und sicheres Booten sind essenziell

Die Herausforderung, einen sicheren Ausgangszustand zu gewährleisten, wird oft mit einem sicheren Bootvorgang verbunden. Wenn die Hardware und der Bootloader in der Lage sind, die System-Firmware von einem alternativen Gerät, etwa einem USB-Stick, anstatt vom internen Flash zu laden, dann kann der Angreifer möglicherweise eine bösartige Firmware booten. Diese könnte den Arbeitsspeicher (RAM) überwachen und vertraulichen Daten abgreifen – zum Beispiel die Schlüssel. Eine Möglichkeit, diese Herausforderung zu bewältigen, besteht darin, dass die CPU einen kleineren Bootloader ausführt, der beispielsweise während der Fertigung in den Nur-Lese-Speicher (ROM) geschrieben wurde. Nach der Produktion kann das ROM nicht mehr verändert werden, so dass die Voraussetzung für sicheres Booten gewährleistet wäre.

Das ROM enthält einen oder mehrere vordefinierte kryptographische Schlüssel zum Überprüfen der digitalen Signatur des nächsten Bootloaders. Diese Lösung wird als statische Root-of-Trust bezeichnet. Auch dieser Ansatz kann Schwachstellen nicht vollständig eliminieren. Eine Schwachstelle im sicheren Boot-Code zum Beispiel könnte das System für einen Angreifer anfällig machen, so dass dieser beliebigen Code auf dem Gerät ausführen kann, indem er den sicheren Boot-Mechanismus umgeht. Daher ist es wichtig, dass auch die Firmware aktualisiert werden kann. Ein Firmware-Update gibt dem Entwickler die Möglichkeit, alle sicherheitsrelevanten Probleme zu beheben und zum Beispiel die Eingabe von beliebigem Code zu unterbinden.

* Dyfan Davies ist Engineer in der Software Development Division der Broad-based Solution Business Unit von Renesas Electronics

Kommentar zu diesem Artikel abgeben
Vielen Dank für den Hinweis! Wir haben den Text korrigiert. Viele Grüße aus der Redaktion *...  lesen
posted am 09.08.2018 um 13:01 von ME-RedaktionEP

Eine aufschlussreiche Darstellung und Zusammenfassung der aktuellen Security-Techniken. Jedoch...  lesen
posted am 09.08.2018 um 11:00 von wojtek77


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45372892 / Embedded Systeme)