Bild 1: Die Architektur des W74M-Multi-Chip-Bausteins. Der Root-Key für die Verschlüsselung sind nur dem Flash-Speicher und dem Host bekannt.

Bild 1: Die Architektur des W74M-Multi-Chip-Bausteins. Der Root-Key für die Verschlüsselung ist nur dem Flash-Speicher und dem Host bekannt. (Bild: Windbond)

Als Reaktion auf die Nachfrage sicherheitsbewusster OEM rüsten die Hersteller aktueller Mikrocontroller (MCU) und Ein-Chip-Systeme (SoC) ihre Produkte häufig mit einer Reihe verschiedener Sicherheitsfeatures aus: 32-Bit-MCUs in Standardausführungen für Anwendungen außerhalb des Finanzsektors enthalten heute häufig eine hardwarebeschleunigte Verschlüsselung, einen Zufallszahlengenerator (RNG) und gesicherte Speicherbereiche. Serieller Flash-Speicher – wo ein großer Teil des wertvollen geistigen Eigentums (IP) der OEM gespeichert wird – war bisher jedoch angreifbarer als das SoC oder der Mikrocontroller.

Die aktuelle Sicherheitslücke bei NOR-Flash

Eck-Daten

Aktuelle Flash-Speicher sind angreifbarer als das SoC oder der Mikrocontroller selbst. Für OEMs ist es von grundlegender Wichtigkeit, den Flash abzusichern, um den Diebstahl von IP oder das Reverse Engineering der eigenen Systeme durch Fälscher zu verhindern. Herkömmliche Absicherungen mit UID stellen jedoch nur ein kleines Hindernis für den Angreifer dar. Winbond stellt im Beitrag seine Authentification-Flash-ICs der Serie W74M vor, die eine sichere und dynamische Authentifizierung gewährleisten und deren Speicherinhalt durch externe Lesegeräte nicht auslesbar ist.

Für jeden Hersteller gehört es zu den grundlegenden Sicherheitsanforderungen, die Möglichkeit des Diebstahls oder des Klonens des geistigen Eigentums des OEMs zu verhindern. Dazu gehört auch der Anwendungscode, der im externen seriellen NOR-Flash gespeichert ist. Natürlich ist vieles von dem, was den Wert eines elektronischen Endprodukts ausmacht, nicht geheim. Als Beispiel sei hier ein intelligenter Wohnraum-Thermostat im Internet der Dinge (IoT) genannt. Anhand einer akribischen Analyse der Leiterplatte des Thermostaten ist es für jeden, der dieses Produkt klonen will, möglich, alle Bauteile zu identifizieren und das Layout der Leiterplatte zu kopieren. Die Hardware als solche ist nicht geheim.

Der Anwendungscode hingegen ist geheim – oder wenigstens sollte er es sein. Ein elektronisches System ist jedoch immer nur so sicher wie sein schwächstes Glied. Heute wird das zentrale SoC oder die MCU normalerweise durch Verschlüsselung, Maßnahmen zur Verhinderung von Sabotage und sichere Speicherung, die in der Hardware und Software implementiert sind, sehr wirksam geschützt. Wenn ein Angreifer also den Anwendungscode eines Produkts klonen will, ist der wahrscheinlichste Einstiegspunkt ein externes Flash-Speicher-IC.

Aus diesem Grund schützen die OEMs heute ihre Hardware zur Codespeicherung gewöhnlich mit einer eindeutigen ID (UID), die in einem partitionierten Speicherbereich des Flash-IC abgelegt ist. Tatsächlich ist eine UID für einen Angriff ein eher triviales Hindernis. Jeder Ingenieur mit einem Minimum an Sicherheits-Knowhow ist in der Lage, den Speicher mit einer MCU zu verbinden und ihn so zu programmieren, dass er die UID ausgibt. Wenn die UID erst einmal bekannt ist, ist der Vertrauensanker des OEM unwirksam. Der im Bauteil gespeicherte Code lässt sich kopieren und damit auch der Thermostat nachbauen.

Die Schwäche bei diesem Sicherheitssystem für Flash besteht darin, dass die UID selbst nicht sicher ist. Sie ist ein dauerhaft gespeicherter Codewert, der sich nicht ändert. Einmal ausgelesen lässt sie sich von einem nicht autorisierten Host immer wieder verwenden.

 

Wie die symmetrische Verschlüsselung beim Authentification-Flash im Detail funktioniert, zeigt der Beitrag im Folgenden.

Sichere, dynamische Authentifizierung

Bild 1: Die Architektur des W74M-Multi-Chip-Bausteins. Der Root-Key für die Verschlüsselung sind nur dem Flash-Speicher und dem Host bekannt.

Bild 1: Die Architektur des W74M-Multi-Chip-Bausteins. Der Root-Key für die Verschlüsselung ist nur dem Flash-Speicher und dem Host bekannt. Windbond

Die Abhilfe für dieses Problem ist theoretisch einfach herbeizuführen: Für jede Abfrage des Speichers durch den Host muss eine andere UID Verwendung finden. Vorteil der heute verwendeten festen UID ist ihre einfache Implementierung. Die Programmierung im Flash-Speicher und im Host-Controller geschieht nur einmal. Anschließend werden beide Werte zur Authentifizierung des Flash-Speichers einfach nur verglichen. Aber wie kann die Antwort auf eine Abfrage des Hosts jedes Mal anders und dennoch vom Host erkennbar sein?

Dieses Problem löst Winbond mit den Authentication-Flash-ICs der Serie W74M (Bild 1). Als Grundmethode zur Sicherung der Identität eines Speichers setzt der Authentification-Flash die symmetrische Verschlüsselung ein. Dabei kennen sowohl der Host als auch der Speicher denselben geheimen Root-Key. Der Root-Key wird niemals direkt zwischen Host und Speicher (Challenge und Response) übertragen. Stattdessen wird aus einer Kombination des Root-Keys mit einem dynamischen Element, beispielsweise einer Zufallszahl, eine verschlüsselte Nachricht (der Hash-based Message Authentication Code, HMAC) generiert. Diese Kombination durchläuft anschließend einen Hash-Algorithmus, den SHA-256. SHA-256 steht für „Secure Hash Algorithm“ mit einer Prüfsummenlänge von 256 Bit. Es handelt sich um eine kryptographische Hash-Funktion, die vom US-amerikanischen National Institute of Standards and Technology (NIST) als Federal Information Processing Standard (FIPS) veröffentlicht wurde. Diese kryptographische Funktion kommt bei der  Verarbeitung von Finanztransaktionen zum Einsatz und gilt allgemein als praktisch nicht brechbar.

Um den W74M-Speicher zu authentifizieren, vergleicht der Host-Controller den Wert des HMAC des Speichers mit dem Wert, den er anhand seines Root-Keys und derselben Zufallszahl mit SHA-256 berechnet. Wenn die Werte übereinstimmen, wird der normale Betrieb aufgenommen.

Da der HMAC teilweise aus einem dynamischen Element erzeugt wird, ändert sich der Wert des HMAC bei jeder Abfrage. In der Praxis bedeutet dies, dass Angriffe, die bei einem herkömmlichen Flash-Speicher mit fester UID erfolgreich wären, bei W74M-Speichern ins Leere laufen. Und da die SHA-256-Funktion so sicher ist, besteht praktisch keine Gefahr, dass ein Angreifer den HMAC entschlüsseln und so den Wert des Root-Keys bestimmen könnte.

 

Auf der nächsten Seite zeigt der Artikel, wie die Überprüfung der Authentizität abläuft und wie eine sichere Implementierung realisierbar ist.

Überprüfung der Authentizität

Bild 1 zeigt noch zwei weitere interessante Merkmale des W74M. Zum Ersten ermöglicht der nicht-flüchtige monoton aufsteigende Zähler eine zusätzliche Überprüfung der Authentizität des Speichers. Der Zähler beginnt bei Null, wenn der Root-Key festgelegt wird, und als Reaktion auf einen Befehl des Host-Controllers erhöht sich sein Wert um einen Schritt. Damit hat der Zähler einen eindeutigen Wert, den nur der Speicher und der Host kennen. Wenn der vom Speicher bei der Abfrage durch den Host gelieferte Zählerwert nicht dem Zählerwert des Hosts entspricht, entspricht der Wert des HMAC aus dem Speicher nicht dem, den der Host berechnet. Daran erkennt der Host-Prozessor, dass die Authentifizierung des W74M sabotiert wurde.

Der Prozessor kann diese Information nutzen, um das Host-System zu schützen, indem er beispielsweise verhindert, dass das sabotierte Bauteil Zugang zu den Systemressourcen des Hosts erhält. So wird der Gefahr begegnet, dass ein Angreifer das vom OEM auf dem Board montierte W74M durch ein anderes W74M ersetzt, um den Schutz zu umgehen.

Bild 2: Der Flash-Speicher-IC enthält vier Instanzen der Kombination aus Root-Key, HMAC und Zähler. Drei davon können für die Authentifizierung von IoT-Geräten zum Einsatz kommen.

Bild 2: Der Flash-Speicher-IC enthält vier Instanzen der Kombination aus Root-Key, HMAC und Zähler. Drei davon können für die Authentifizierung von IoT-Geräten zum Einsatz kommen. Winbond

Diese Schutzfunktion spielt beim zweiten Feature in Bild 1 eine wichtige Rolle: In jedem Baustein befinden sich vier Instanzen der Kombination aus Root-Key, HMAC und monoton aufsteigendem Zähler. Eine Instanz findet bei der Authentifizierung des Host-Controllers Verwendung. Die übrigen drei Authentifizierungskanäle lassen sich zum Beispiel in IoT-Geräten einsetzen, die ihre Identität bestätigen müssen, um Zugang zu den Diensten im Netzwerk zu erhalten (Bild 2). Wie hier gezeigt, lässt sich für jeden Authentifizierungskanal ein anderer Root-Key sicher speichern und mit dem jeweiligen Host-Gerät teilen. So bleiben die Root-Keys des Host-Geräts, des Internet-Gateways und des Cloud-Dienstes geheim, denn kein Gerät kennt den Root-Key eines anderen.

Eine andere Anwendung für diese Authentifizierung in mehreren Ebenen sind komplexe Systeme wie Drohnen, die aus mehreren Elementen bestehen. Der W74M-Baustein in einem dieser Elemente lässt sich einsetzen zur Authentifizierung des Hauptprozessors einer Drohne, eines austauschbaren Batteriemoduls, der Fernsteuerung oder der Kamera.

Mit einer sicheren, verschlüsselten Authentifizierung kann der Hersteller der Drohne gewährleisten, dass nur Kameras und Ersatzbatterien seiner Marke zum Einsatz kommen. Damit lässt sich auch verhindern, dass die Drohne im Flug von einer nicht autorisierten Fernbedienung gekapert wird.

Sichere Implementierung

Die Root-Keys sind im nur einmal beschreibbaren (OTP) Speicherbereich abgelegt, der nicht von externen Lesegeräten auslesbar ist. Eine sichere Implementierung erfordert auch eine sichere Provisionierung, um zu gewährleisten, dass die während der Produktion in jedem W74M-Baustein und dem Host-SoC oder Controller programmierten Root-Keys das Geheimnis des OEM bleiben. Dies hängt normalerweise von den Provisionierungs- und Produktionsprozessen des OEM ab, wobei Winbond auf Wunsch die Root-Key-Provisionierung der W74M-Speicher für den Kunden übernehmen kann.

Chin-Shu Lin

Marketing Executive, Winbond Electronics Nordamerika

(na)

Sie möchten gerne weiterlesen?

Unternehmen

Winbond Electronics

No. 8 Keya 1st Road
42881 Taichung City
Taiwan