Die Sicherheit des Mikrocontrollers ist ausschlaggebend für die Sicherheit der IoT-Geräte. Es gibt sehr viele Sicherheitsmaßnahmen, die in einer MCU integriert werden müssen, beispielsweise ein nicht modifizierbarer Bootvorgang, Manipulationssicherheit und Maßnahmen gegen Seitenkanal-Angriffe. Eine Voraussetzung für die sichere Kommunikation mit einem verbundenen Gerät ist die Authentifizierung in Form einer Identitätsprüfung, wobei diese Identität einzigartig sein muss. Nach der Überprüfung der Identität kann eine sichere Verbindung aufgebaut werden, die dann mit kryptographischen Schlüsseln verschlüsselt wird.
Sowohl die Identität des Devices wie auch der kryptographische Schlüssel werden aus zufälligen Zahlen generiert, sogenannten Seeds. Ein sicherer Mikrocontroller, eine einzigartige Identität und ein kryptographischer Schlüssel formen zusammen die Root-of-Trust (RoT). Die RoT bildet das Fundament der Sicherheit des IoT Netzwerks.
Wie RoT in einem Halbleiterchip eingebettet wird
Es gibt zwei grundlegende Ansätze, um die RoT in einem Mikrocontroller sicherzustellen. Die häufigste Methode besteht darin, einen externen Computer zu nutzen, der oft HSM (Hardware Security Module) genannt wird. Dieser Computer generiert zufällige Zahlen und kryptographische Schlüssel und verwaltet sie auch. Diese Schlüssel werden außerhalb der Mikrocontrollers generiert und werden dann mittels eines Programmierinterfaces in diesen per „Key Injection“ einprogrammiert. Es gibt typische Sicherheitsprobleme mit Key Injection, weil das Programmierinterface oft nicht verschlüsselt werden kann.
Im zweiten Ansatz generiert der Chip selbst die einzigartigen Werte und wandelt diese zu kryptographischen Schlüsseln um. Oft benutzt der Mikrocontroller dabei zufällige Abweichungen, die während der Fertigung entstehen, um zufällige Seeds zu generieren. Diese zufälligen Variationen werden oft „Physical Unclonable Functions“ oder kurz PUFs genannt. Die PUFs generieren die zufälligen Seeds, aus denen sich dann einzigartige Identitäten und kryptographische Schlüssel ableiten lassen. Diese Konvertierung erledigt ein Key Generation Accelerator, der als Peripherieelement im Mikrocontroller integriert ist.
Key Injection birgt Security-Probleme
Eine Key Injection kann kostspielig werden, da hierfür spezielles Programmierequipment erforderlich ist. Typischerweise bieten Programmierequipment-Hersteller die Key Injection zusammen mit den Programmierverbindungen und HSMs an. Durch die Notwendigkeit der Zusammenarbeit mit einer weiteren Partei entsteht hierbei ein Sicherheitsrisiko, weswegen diese Methode von Sicherheitsexperten nicht empfohlen wird. Es wird ein Zero-Trust-Ansatz bevorzugt, bei dem keine dritte Partei involviert werden muss.
Injizierte Schlüssel müssen innerhalb des Geräts gespeichert werden. Sie werden meistens in nichtflüchtigem Speicher abgelegt und dann mit Hardwaremaßnahmen innerhalb des Mikrocontrollers geschützt. So teilt die TrustZone-Technologie von Arm beispielsweise die Ausführungsumgebung (Execution Environment) in jeweils sichere und unsichere Speicher, Peripherieelemente und Funktionen auf. Selbst mit diesen Maßnahmen können Angreifer die Schlüssel auslesen, weil sie sich im gewöhnlichen Flashspeicher des Geräts befinden. Eine weitere Schwachstelle ist die Tatsache, dass die Übertragung der Schlüssel über nicht verschlüsselte Verbindungen erfolgt. Es handelt sich dabei um die Verbindung zwischen HSM und dem Programmierer, oder noch typischer, zwischen dem Programmierer und dem Gerät selbst, die dann für Angriffe offen ist.
Wie PUFs Sicherheitslücken eliminieren können
Das SRAM-PUF ist ein gutes Beispiel für die erste Generation der PUF-Technologie. SRAM ist in den meisten Mikrocontrollern und Mikroprozessoren eingebettet. Beim Einschalten nehmen die Speicherzellen des SRAMs zufällig den Zustand Null oder Eins an. Welchen Zustand diese Zellen annehmen, hängt von den Variationen innerhalb des Siliziumwafers ab. Diese Variationen sind zufällig und können benutzt werden, um Seeds zu erzeugen, die dann die kryptographischen Schlüssel generieren. Das SRAM wird zum Fingerabdruck des Mikrocontrollers und gibt diesem eine einzigartige Identität. Da SRAM-PUFs den eingebauten Speicher des Mikrocontrollers verwenden, wird lediglich Software für die Inbetriebnahme der PUFs benötigt.
Eine andere Art von PUF ist der Flashspeicher. Wie auch SRAM ist dieser Speicher schon in den meisten Mikrocontrollern eingebaut. Die Flashzellen werden programmiert, indem die einzelnen Speicherzellen mit hohen Spannungen gestresst werden, bis in manchen Zellen die Isolierschicht, das Siliziumoxid des Gates der Transistoren, zerstört wird. Wegen den Ungleichheiten zwischen den zwei Transistoren, die die Speicherzelle bilden, entsteht dabei eine Eins oder eine Null. In dieser Technologie werden hohe Spannungen benötigt, um die Isolierschicht des Gates zu zerstören; daher gibt es eine anfängliche Programmierphase. Nachdem diese beendet ist, stehen Daten in den Speicherzellen zur Verfügung, welche dann ausgelesen werden können. Diese Vorgehensweise bedarf eines gewissen Aufwands, verwendet aber ebenfalls eine Technologie, die bereits in Mikrocontrollern und Mikroprozessoren vorkommt.
Vorteile und Nachteile der ersten PUF-Technologie-Generation
Wir wollen an dieser Stelle eine SRAM Zelle betrachten. Ein großer Vorteil ist, dass keine Schlüssel in den Mikrocontroller injiziert werden müssen. Die Schlüssel werden vom SRAM selbst generiert, welcher sich schon im Chip befindet. Das macht es schwer den Chip zu hacken.
SRAM-PUF-Technologie wird von vielen Halbleiterherstellern wie Intel, Microsemi, NXP und Xilinix genutzt. Allerdings hat diese Technologie ihre Grenzen. So wird in der Regel nur ein Seed generiert. Falls mehrere kryptographische Schlüssel gebraucht werden, werden diese von dem gemeinsamen Seed generiert, was bedeutet, dass diese alle mathematisch korrelieren und dadurch automatisch weniger sicher sind als ohne diese Korrelation.
Sicherheitsprobleme bei PUFs in SRAM und Flash
Ein weiterer Kompromiss ist, dass die Speicherzellen beim Starten nicht immer den präferierten Zustand einnehmen. Das bedeutet, dass eine Fehlerkorrektur ausgeführt werden muss, um sicherzustellen, dass der Seed, der von den Speicherzellen generiert wird, stabil und wiederholbar ist. Der Grad der Wiederholbarkeit hängt vom spezifischen Speicherhersteller ab, und manchmal ist die Entropie, der Grad der Zufälligkeit, bei SRAM-PUFs niedrig. Die Wiederstandfähigkeit gegen Angriffe ist dann fragwürdig, da sich die Identität in den SRAM-Zellen befindet. In diesen fließen Ströme, die sich im Rahmen von Seitenkanal-Angriffen auslesen lassen; auch andere elektrische Größen könnten gemessen werden, um die Speicherzellen auszulesen.
SRAM-PUFs weisen ein sehr langsames Startverhalten auf; das Zeitfenster bevor der Mikrocontroller mit dem IoT-Device kommunizieren kann, macht diese PUFs besonders empfindlich für Angriffe.
Wir wollen an dieser Stelle Flashspeicher-PUFs betrachten. Hier müssen keine Schlüssel in das Device injiziert werden, und die Seeds werden im Flashspeicher innerhalb der MCU generiert. Nachdem die Seeds in den Speicher programmiert werden, können diese mit niedriger Latenz mit einem einfachen Lesebefehl ausgelesen werden. Dieser Prozess bedarf keiner Fehlerkorrektur, da der gespeicherte Zustand der Flashzellen sehr stabil ist.
Natürlich bringt das Ablegen der Seeds im Speicher auch ein gewisses Angriffsrisiko mit sich. Ein weiterer Nachteil ist die Tatsache, dass Flashspeicher-PUFs auf Grund der erforderlichen Ladungspumpen zusätzliche Siliziumfläche benötigen, um die hohe Spannung zu erzeugen, mit der sich die Isolierschicht der Gates permanent zerstören lässt.
Wie auch SRAM-PUFs, sind Flashspeicher-PUFs an sich kein unabhängiger und der kryptographischen Sicherheit dedizierter Schaltblock. Wenn der Flashspeicher für diese Funktion verwendet wird, dann steht er für weitere Funktionen nicht zur Verfügung. Außerdem ist die Dauer der Programmierzeit hoch, da die Siliziumoxidschicht erst durch hohe Spannungen beschädigt werden muss.
Wie PUFs der zweiten Generation die IoT-Sicherheit verbessern
PUFs der zweiten Generation sind Silizium-IP-Blöcke, die für kryptographische Sicherheit entwickelt wurden und für Standard-CMOS-Prozesse optimiert sind. Ein Beispiel dafür ist der IP-Block QDID von Crypto Quantique, wobei QDID für „quantum-driven identity“ steht.
QDID ist typischerweise ein 64 x 64 Zellen großes Array, das im CMOS-Prozess eines jeden Chips integriert ist, aus dem ein Fingerabdruck extrahiert wird. Der zufällige Fingerabdruck entsteht durch Imperfektionen der atomaren Positionen und Nanostrukturen der Siliziumoxidschicht in den CMOS-Transistoren innerhalb des Arrays. Schaltungen innerhalb des QDIDs messen Leckströme, die durch Quantum Tunnelling (Quanten-Tunneleffekte) an der Siliziumoxidschicht eines jeden Transistorpaars entsteht. Der von Natur aus zufällige Mechanismus des Quantum Tunnelings generiert dabei die Nullen und Einsen.
Dabei misst QDID Ströme die im Femtoampere-Bereich liegen. Variationen in diesen Strömen generieren zufällige Zahlen, die benutzt werden um einzigartige, nicht modifizierbare und nicht klonbare Chipidentitäten zu erzeugen, aus denen sich dann bei Bedarf kryptographische Schlüssel generieren lassen.
Diese PUFs der zweiten Generation bieten die höchstmögliche Sicherheit.
Sie besitzen nicht nur eine hohe Entropie beziehungsweise einen sehr hohen Zufallsgrad. Dies wird durch das Messen eines Quanteneffekts garantiert. Sie produzieren innerhalb des 64 x 64-Arrays mehrere nicht korrelierte Schlüssel, und diese Schlüssel werden nur generiert, wenn sie gebraucht werden, so dass diese nicht im Speicher abgelegt werden müssen, wo sie Angriffen ausgesetzt sein könnten.
Unabhängige Tests von QDID zeigen außerdem, dass es sicher gegen jegliche Art von bekannten Angriffen ist, und zertifizieren es gemäß Security-Level EAL-4. Zudem ist QDID ist auch PSA-zertifiziert (PSA Level Two Ready).
Die PUFs der zweiten Generation machen, wie auch SRAM- und Flashspeicher-PUFs, die Injektion von Schlüsseln obsolet und umgehen somit das Sicherheitsrisiko dieses Prozesses. Ein weiterer Vorteil von QDID ist die dafür gebrauchte geringe Chipfläche, was die Kosten verringert, sowie eine sehr niedrige Fehlerrate, die sich leicht mit sehr einfacher, wenig rechenintensiver Fehlerkorrektur kompensieren lassen. Erprobte Testchips sind schon heute verfügbar, und große Halbleiterfirmen werden ihre Adaption der QDID als Root-of-Trust-Technologie in den kommenden Monaten ankündigen. (av)