Encrypted EEPROM: Daten in Embedded-Systemen sicher speichern

| Autor / Redakteur: Rich Miron * / Michael Eckstein

Verschlüsselt: Das serielle 32-kByte-EEPROM ATAES132A verfügt über Sicherheitsfunktionen zum Schutz von Daten und internen Registern.
Verschlüsselt: Das serielle 32-kByte-EEPROM ATAES132A verfügt über Sicherheitsfunktionen zum Schutz von Daten und internen Registern. (Bild: Digi-Key Electronics)

Separate verschlüsselte EEPROMs können die Datensicherheit in Embedded-Systemen erhöhen. In den Bausteinen integrierte physische Barrieren steigern das Schutzniveau zusätzlich.

Angesichts der zunehmenden Vernetzung vielfältigster Endgeräte gewinnt die Datensicherheit enorm an Bedeutung. Diese ist keineswegs ein reines Softwarethema, sondern beginnt bereits auf der Hardware-Ebene von Embedded-Systemen. Hier ist eine Möglichkeit essenziell, wichtige Daten sicher in nichtflüchtigem Speicher ablegen zu können. Dieser muss auch gezielten Hackerangriffen widerstehen. In Kombination mit Mikrocontrollern (MCU) kommen häufig EEPROMs als nichtflüchtige Speicher zum Einsatz. Diese können beispielsweise Programmcode aufnehmen.

Einige 8-Bit-, 16-Bit- und 32-Bit-MCU haben grundlegende Sicherheitstechniken implementiert. Diese können den Lesezugriff über externe Schnittstellen beispielsweise für Debugger sperren und verhindern, dass Unbefugte bestimmte Speicherbereiche auslesen können. Derartige Sicherheitsfunktionen galten lange als ausreichend. Heute nicht mehr. Embedded-Systeme erfordern heutzutage einen robusteren Datenschutz für viele Anwendungen. Dies gilt besonders für Industrial-IoT-Geräte, Sicherheitssysteme, die Kommunikation zwischen Fahrzeugen, für moderne medizinische Geräte und autonome Fahrzeuge. Denn Anwendungen, deren EEPROM-Daten infolge eines erfolgreichen Hackerangriffs manipuliert wurden, können materiellen Schaden oder Schlimmeres verursachen.

Wenn sicherheitsrelevante Applikationen EEPROMs einsetzen, sollten diese auch ausgeklügelten Hackerangriffen widerstehen. Sie müssen sensible Daten wie Kennwörter, Klon-Hashes, Fingerabdruckdaten, Kalibrierungsdaten für Sensoren und biometrische Daten sicher verschlüsselt speichern können. Auch das Klonen des Systems darf nicht möglich sein. Die nötigen Funktionen lassen sich am Beispiel der CryptoAuthentication-Bausteine von Microchip veranschaulichen, etwa dem 32-kByte-EEPROM ATAES132A.

Wirksamer Schutz gegen physische Angriffe

Nicht gleich offensichtlich ist, dass sichere Speicherbausteine auch gegen physische Angriffe gewappnet sein müssen. Beim ATAES132A sorgen mechanische Sicherheitsmechanismen dafür, dass Daten sich nicht physisch rekonstruieren lassen. Der Baustein ist so aufgebaut, dass es nicht möglich ist, z.B. durch Schockgefrieren den Speicherinhalt zu erhalten. Außerdem erkennt er, wenn versucht wird, den Siliziumchip („Die“) freizulegen. Dieser ist durch eine Metallabschirmung geschützt. Wird sie entfernt, erkennt der Chip Lichteinfall und zerstört die Daten. Ohnehin ist der Inhalt des internen Speichers verschlüsselt. Das bloße Extrahieren der Daten bringt daher nichts.

Über diese Sicherheitsmechanismen hinaus kann der Baustein auch weitere, unveröffentlichte und nur Microchip bekannte Vorrichtungen enthalten. Dies stellt einen umfassenden physischen Schutz des sicheren Speichers bereit, sodass Entwickler keine komplizierten Gehäuse zur Abschottung des EEPROMs bauen müssen. Der ATAES132A lässt sich so konfigurieren, dass er über seine SPI- oder I2C-Schnittstelle mit den meisten MCU kommunizieren kann. Im I2C-Modus wird der „Chip Select“-Pin nicht benötigt, braucht aber definiertes Masse- oder Betriebsspannungspotenzial. Im SPI-Modus hat „Chip Select“ seine normale Funktion.

Kryptographie ist auf dem ATAES132A über AES-CCM mit einem 128-Bit-Schlüssel implementiert. Die zu verschlüsselnden Daten werden mit mehreren komplexen mathematischen Funktionen bearbeitet, wo sie mit einem vom Firmware-Entwickler programmierten 128-Bit-Wert kombiniert werden. Die Berechnungen während der AES-Verschlüsselung und -Entschlüsselung finden ausschließlich im Baustein statt. Bis auf die Einrichtung einiger Variablen und die Wahl des 128-Bit-Schlüssels ist dieser Vorgang für den Firmware-Entwickler transparent, was die Produktentwicklung stark vereinfacht.

Sicherheitsfunktionen ändern Bausteinstruktur

Der Baustein lässt sich auch als nicht verschlüsseltes serielles Standard-EEPROM verwenden. Sobald die erweiterten Sicherheitsfunktionen zum Einsatz kommen, ändern sich Struktur und Verwendung des Chips radikal. Die 32 kByte des EEPROMs sind in 16 je 2 kByte große Zonen aufgeteilt. Jede dieser Speicherzonen kann einzeln mit oder ohne Sicherheitsfunktionen konfiguriert werden. Die Konfiguration für jede der 2 kByte großen Sicherheitszonen erfolgt über das Konfigurationsregister für Zonensicherheit. Möglich sind:

  • Verschlüsselung für das Lesen von Daten aktivieren/deaktivieren
  • Verschlüsselung für das Schreiben von Daten aktivieren/deaktivieren
  • Authentifizierung für das Lesen von Daten aktivieren/deaktivieren
  • Authentifizierung für das Schreiben von Daten aktivieren/deaktivieren
  • Permanenten Schreibschutz für die gewünschte Zone festlegen

Diese Einstellungen ermöglichen eine hohe Flexibilität beim Einrichten von Sicherheitseinstellungen für eine Anwendung. Beispielsweise kann für eine Zone keine Verschlüsselung und keine Authentifizierung für einen Lese- oder Schreibzugriff festgelegt werden, sodass sich der Baustein hier wie ein herkömmliches EEPROM verhält. Für eine andere Zone kann die Konfiguration eine vollständige Verschlüsselung und Autorisierung verlangen, um wichtige Daten wirkungsvoll zu schützen. Im Konfigurationsregister für den Baustein wird das allgemeine Verhalten des Bausteins festgelegt.

Speicherauslegung des ATAES132A: Das Schreiben der meisten Speicherbereiche erfolgt über Standard-I2C- oder -SPI-Befehle.
Speicherauslegung des ATAES132A: Das Schreiben der meisten Speicherbereiche erfolgt über Standard-I2C- oder -SPI-Befehle. (Bild: Microchip Technology)

Dieser Bereich enthält auch einige schreibgeschützte Informationen über den Baustein. Dazu gehört eine 32-Bit-Seriennummer zum eindeutigen Identifizieren des Bausteins. Mithilfe von anderen Registern lässt sich ein Schreibschutz für bestimmte Speicherzonen oder Register einrichten. Dieser Schreibschutz ist irreversibel. In diesem Bereich befindet sich auch das Register „I2CAddr“ zur Auswahl des I2C- oder des SPI-Modus. Beim Starten des Bausteins schreibt die Firmware das aus einem Byte bestehende Register I2CAddr. Bit 0 von I2CAddr legt dabei den Modus der seriellen Schnittstelle fest. Der Wert „0“ aktiviert den den SPI-Modus, eine „1“ den I2C-Modus. Für den I2C-Modus lautet die 7-Bit-Adresse also 50h.

Interner Puffer für Befehle und Antworten

Das EEPROM verarbeitet aus Kommandos und Operanden bestehende Befehlsblöcke. Diese werden direkt in den Puffer für Befehle und Antworten an der Adresse FE00h geschrieben. Ein Befehlsblock besteht aus einer 1 Byte langen Anweisung, einem oder mehreren Bytes als Operanden und einer 2 Byte langen Prüfsumme. Es gibt Befehle zum Authentifizieren von Daten, für Blocklesevorgänge aus EEPROM-Zonen, zum Inkrementieren von Zählern und zum direkten Lesen von geschützten Speicherbereichen oder Registern, die eine Authentifizierung verlangen. Die Antworten auf die Befehle werden aus FE00h gelesen.

Alle Schreibvorgänge auf FE00h sind Befehle, die zum Puffer für Befehle und Antworten gesendet werden. Alle Lesevorgänge von FE00h sind Lesevorgänge aus dem Puffer für Antworten. Das Register zum Zurücksetzen von I/O-Adressen an der Stelle FFE0h dient dem Zurücksetzen der Puffer für Befehle und Antworten. Wenn ein Wert nach FFE0h geschrieben wird, erfolgen zwei Operationen: Der Befehlspuffer wird gelöscht, sodass er einen neuen Befehlsblock aufnehmen kann, und der Antwortpuffer wird auf 0 zurückgesetzt. Dadurch kann die Firmware die gesamte Antwort neu lesen. Das kann in Programmen nützlich sein, in denen möglicherweise ein Interrupt aufgetreten ist, während die Host-MCU den Antwortpuffer gelesen hat. Nach der Rückkehr vom Interrupt muss sie die Daten neu von Beginn an lesen. Weitere Befehle dienen dem Ver- und –Entschlüsseln bei Lese- und Schreibvorgängen vom und zum EEPROM. Microchip stellt Treiber für MCU und Firmware bereit, die diese Funktionen ausführen. So benötigen Programmierer kaum Wissen über die AES-Verschlüsselung.

Schreibgeschützte Zonenzähler verhindern Manipulationen

Der Registerbereich „Zonenzähler“ enthält 16 schreibgeschützte Zähler, die den einzelnen Zonen zugeordnet sind. Jede Speicherzone wird mit einem 128 Bit langen Schlüssel verschlüsselt. Bei jeder Verwendung eines Zonenschlüssels wird ein zugehöriger 32-Bit-Zonenzähler inkrementiert oder nicht inkrementiert – je nach der Einstellung im Konfigurationsregister des Zonenzählers. Das Zurücksetzen oder Dekrementieren eines Zählers ist nicht möglich. Die Firmware kann direkt auf einen Zonenzähler schreiben, um ihn auf einen Anfangswert zu inkrementieren, aber nie auf einen Wert, der kleiner als der aktuelle Inhalt des Zählers ist. Zonenzähler lassen sich bei der Herstellung beschreiben und sperren. Wenn ein Zähler einen maximalen Wert erreicht – beim ATAES132A liegt dieser bei 2.097.151, kann der zugehörige Schlüssel dauerhaft deaktiviert werden. Er kann dann nicht mehr zum Ver- und Entschlüsseln genutzt werden. Damit lässt sich beispielsweise sicherstellen, dass zum Programmieren der Firmware einer MCU nur eine Höchstzahl an Flash-Vorgängen gestattet ist.

Starthilfe: Das Xplained CryptoAuthentication-Start- und Entwicklungskit DM320109 von Microchip bietet eine einfache Möglichkeit, den ATAES132A zu evaluieren und Code dafür zu entwickeln.
Starthilfe: Das Xplained CryptoAuthentication-Start- und Entwicklungskit DM320109 von Microchip bietet eine einfache Möglichkeit, den ATAES132A zu evaluieren und Code dafür zu entwickeln. (Bild: Microchip Technology)

Jeder 32-Bit-Zonenzähler ist doppelt vorhanden. So lässt sich eine Beschädigung des Zonenzählers erkennen, falls beim Inkrementieren eines Zonenzählers ein Stromausfall auftritt. Beim Start der Anwendung sollte die Firmware beide Werte für alle Zonenzähler auslesen. Wenn die Werte in einer Anwendung verschieden sind, wäre dies der Nachweis für ein nicht autorisiertes Herunterfahren. Das könnte auf einen Versuch hindeuten, die Sicherheit der Anwendung im laufenden Betrieb zu deaktivieren.

Das Statusregister des ATAES132A ist ein schreibgeschütztes Register, das Fehlercodes enthält, z. B. für falsche Prüfsummen oder Fehler in Befehlen. Es gibt auch an, ob sich der ATAES132A im I2C-Modus oder im SPI-Modus befindet und informiert über den Verlauf von Befehlen und die Gültigkeit der Antworten. Es sollte vor und nach allen Lese- und Schreibvorgängen, Befehlen und Antworten gelesen werden. Unstimmigkeiten können auf einen Versuch hindeuten, von außen in die I2C- oder SPI-Verbindung zwischen der Host-MCU und dem ATAES132A einzugreifen. Es ist Aufgabe der Host-Firmware, geeignete Aktionen durchzuführen, z. B. einen Bediener zu alarmieren oder einen Alarmton auszugeben.

Einrichtung des EEPROMs bei der Herstellung

Es ist sinnvoll, das Einrichten eines mit speziellen Sicherheitsfunktionen ausgestatteten EEPROMS erst beim Fertigen des Endprodukts vorzunehmen, sprich wenn sich das EEPROM bereits im System befindet. So lassen sich Konfigurationsfehler reduzieren. Am Anfang steht das Definieren aller Anfangswerte und Zählerkonfigurationen. Dann folgen die Schlüssel und die Verschlüsselungsparameter und schließlich alle Initialwerte für das EEPROM.

Die eindeutige 32-Bit-Seriennummer des Bausteins kann aus dem ATAES132A ausgelesen werden, damit sie in die Firmware der Host-MCU aufgenommen werden kann. Zu empfehlen ist, alle programmierten EEPROM-Werte zurückzulesen, um eine korrekte Konfiguration sicherzustellen. Bei Unstimmigkeiten lassen sich betroffene Produkte gezielt aus der Produktion herausnehmen. Ohne Frage verkompliziert die AES-Verschlüsselung die Handhabung der Speicher. Andererseits sorgt sie dafür, dass Produkte sicherer werden und Daten besser geschützt sind. Speziell für diesen Zweck entwickelten EEPROMs bieten mechanischen Schutz, starke Verschlüsselung, Aufteilung in Zonen und kundenspezifische sowie vertrauliche Features, die das Schutzniveau weiter erhöhen.

Kioxia: Toshiba Memory verschwindet vom Markt

Kioxia: Toshiba Memory verschwindet vom Markt

19.07.19 - Mit einem neuen Namen will Toshiba Memory im Speichergeschäft durchstarten. Der Zungenbrecher „Kioxia“ hat zwei Vorteile: Er ist einzigartig und unverbraucht. Die aktuellen Probleme bleiben jedoch bestehen. lesen

Cypress stellt erstes ISO26262-konformes und partitionierbares NOR-Flash vor

Cypress stellt erstes ISO26262-konformes und partitionierbares NOR-Flash vor

08.06.18 - Automotive und Industrie-Applikationen im Blick: Flash-Bausteine der Semper-Familie lassen sich applikationsspezifisch partitionieren. Funktionssicherheit und Ausfallschutz stehen im Fokus. lesen

Automotive-MCU mit 24 MByte Embedded Flash

Automotive-MCU mit 24 MByte Embedded Flash

25.07.19 - Renesas hat den nach eigenen Angaben größten und schnellsten Embedded-Flash-Speicher für MCUs vorgestellt. Er hat einige Besonderheiten zu bieten. lesen

* Rich Miron ist Applications Engineer und technischer Autor bei Digi-Key Electronics

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

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