Bild 2: Digi-Key

(Bild: Maxim Integrated)

| von Rich Miron

Eckdaten

Die Entwicklung einer durchgängig sicheren Kommunikation zwischen IoT-Geräten führt wegen reduzierter Kosten und Entwicklungszeiten häufig zu Kompromissen in der Sicherheit. Mit umfassenden integrierten Sicherheitsfunktionen entgegnet der MAXQ1061 diesem Problem und erlaubt eine schnellere Implementierung in IoT-Komponenten und anderen tief eingebetteten Systemen. Mit diesem Baustein lassen sich Sicherheitsprobleme auf der Transportschicht schnell lösen.

Die Sicherung eines IoT-Designs erfordert mehr als verschlüsselter Datenaustausch. Die Entwickler müssen die Sicherheit weiter ausbauen, die mit den zugrunde liegenden geheimen Schlüsseln durch Authentifizierung, sichere Sitzungen und sicheres Messaging geboten wird. Jedoch führen die Komplexität des Designs, seine Umsetzung sowie funktionale Aspekte einer intakten Sicherheitskette dazu, dass bei vielen Projekten Kompromisse bei der Sicherheit zugunsten von reduzierten Kosten und reduzierter Entwicklungszeit eingegangen werden.

Diese Notwendigkeit von Kompromissen nimmt allerdings ab – zu einem großen Teil durch Bausteine, mit denen Entwickler auf einfache Weise umfassende Sicherheitsfunktionen in IoT-Komponenten und anderen tief eingebetteten Systemen implementieren können. Ein solcher Baustein ist der MAXQ1061 von Maxim Integrated.

Dieser Artikel beschreibt, wie IoT-Sicherheitssysteme vor der Einführung des MAXQ1061 funktionierten, und zeigt, wie sich mit dem Baustein das Sicherheitsproblem auf der Transportschicht schnell lösen lässt.

Sicherheit als Grundvoraussetzung

Vom Internet of Things erwarten seine Benutzer – und das ist seine Grundidee –, dass Anwendungen Datenströme verarbeiten, in denen detaillierte Informationen zum Benutzer, seiner Umgebung und seiner Ausrüstung ausgetauscht werden. Ein Kerngedanke dieser Idee ist, dass diese Anwendungen geschützt sind und die Integrität und Authentizität der Daten gewährleistet sind. Doch die inzwischen bekannt gewordenen Angriffe auf die Systeme und Daten stellen diese Fähigkeit weiterhin in Frage. Entsprechend ist das Interesse an effektiveren Lösungen für die Sicherung von Daten und Systemen stark gewachsen.

Auf der Geräteebene können Entwickler bereits MCUs mit integrierter Hardwarebeschleunigung einsetzen. Sie ermöglichen die Ver- und Entschlüsselung von Daten mit einer Vielzahl von Chiffren, darunter etwa AES, SHA und 3DES. Und doch ist die Datenver- und -entschlüsselung nur ein Mosaikstein unter den Funktionen, die es zur Sicherung von IoT-Anwendungen mithilfe von Standardsicherheitsprotokollen wie TLS (Transport Layer Security) bedarf.

Maßnahmen auf der Transportschicht

TLS bietet ein Standardprotokoll für die sichere Netzwerkkommunikation zwischen Servern und Clients, wie Webbrowsern und IoT-Komponenten. Bei diesem Protokoll erfolgt die Kommunikation als eine Abfolge von einzelnen sicheren Sitzungen. Diese Sitzungen enthalten Sicherheitsparameter, die üblicherweise für jede einzelne Sitzung eindeutig festgelegt werden. Es sei hier angemerkt, dass TLS auch Methoden der Wiederverwendung von Sitzungssicherheitsparametern aus einer Sitzung in der nächsten umfasst, doch diese Methoden können IoT-Anwendungen zusätzlichen Sicherheitsbedrohungen aussetzen und sollen daher in dieser Diskussion nicht berücksichtigt werden.

Sicherheitsmechanismen des TLS-Handshake-Protocol

Bild 1: Das TLS-Handshake-Protocol beruht auf Sicherheitsmechanismen wie sichere Speicherung, echte Generierung von Zufallszahlen und Kryptographie. Digi-Key / Wikimedia

Beim TLS-Protokoll beginnen Clients und Server eine TLS-Sitzung, indem sie das TLS Handshake Protocol nutzen (Bild 1). Dabei wird jede Gerät-zu-Server-Verbindung authentifiziert und ein „Master Secret“ erstellt – ein privater Kryptographieschlüssel, der während des TLS Record Protocol gemeinsam verwendet wird, um die während der Sitzung ausgetauschten Daten zu verschlüsseln und zu entschlüsseln. Bei jedem Schritt in diesem Handshake Protocol gewährleisten Clients und Server die Sicherheit des Prozesses durch Nutzung mehrerer grundlegender Sicherheitsmechanismen, wozu die Speicherung des privaten Schlüssels, die echte Generierung von Zufallszahlen und standardmäßige Ver- und Entschlüsselungsalgorithmen zählen.

Erste Kontaktaufnahme

Muss ein Client wie eine IoT-Komponente eine Verbindung zu einem Server herstellen, beginnt er den TLS-Handshake durch Senden einer Client-Hello-Nachricht, die eine Zufallszahl sowie Informationen zur Fähigkeit des Clients enthält, bestimmte TLS-Methoden zu unterstützen. Der Server antwortet mit der Auswahl der zu verwendenden TLS-Methoden, seines Zertifikats (öffentlicher Schlüssel des Servers) und anderer Details, die von der Art der Cipher-Suite und der verwendeten Sicherheitsrichtlinie abhängig sind.

Beispielsweise authentifizieren zwar Web-Anwendungen den Server normalerweise allein, die Sicherung von IoT-Anwendungen verlangt jedoch, dass beide Geräte – Client und Server – sich gegenseitig authentifizieren, um Bedrohungen wie Man-in-the-Middle-Angriffe abzuwehren. Ohne die Client-Authentifizierung könnten nicht autorisierte Geräte so tun, als seien sie legitime Geräte, und sich mit dem IoT-Netzwerk verbinden, um eine Eintrittspforte für bösartige Aktionen zu öffnen. Zur Implementierung der gegenseitigen Authentifizierung sendet der Server in dieser Phase eine Anforderung für das Client-Zertifikat.

Geheime Verabredung

In der nächsten Phase der Handshake-Verhandlungen sendet der Client sein Zertifikat sowie einen Signatur-Hash des vorherigen Satzes von Nachrichten, der mit seinem privaten Schlüssel erzeugt wurde. Der Server verwendet das Client-Zertifikat (öffentlicher Schlüssel des Geräts) und den Signatur-Hash, um zu überprüfen, ob das anfordernde Client-Gerät tatsächlich seinen privaten Schlüssel besitzt. Dabei überprüft er auch die Geräte-Eigentümerschaft des Client-Zertifikats. In einigen Fällen kann der Client auch ein Pre-Master Secret senden, das unter Verwendung des Server-Zertifikats (öffentlicher Schlüssel des Servers) erzeugt wird.

Schließlich verwenden der Client und der Server jeweils die Zufallszahl (und das Pre-Master Secret, sofern enthalten) zur Berechnung eines „Master Secret“, das als der private Schlüssel für den Datenaustausch über das TLS Record Protocol dient. Mit diesem Verfahren stellt das TLS Handshake Protocol einen sicheren Schlüssel bereit, den sowohl der Client als auch der Server beim Datenaustausch verwenden, ohne dass dabei jemals private Schlüssel über das Netzwerk weitergegeben werden. Sobald sie über das Master Secret verfügen, signalisieren der Client und der Server jeweils das Ende der Handshake-Phase und beginnen den Austausch von Nachrichten. Dabei wird das Master Secret für die Dauer der jeweiligen Verbindungssitzung als Schlüssel zum Verschlüsseln und Entschlüsseln dieser Nachrichten verwendet.

Zur Aufrechterhaltung der Sicherheit während des gesamten Prozesses gelten für das Clientgerät und den Server jeweils grundlegende Anforderungen für die sichere Speicherung von Secrets, einschließlich ihrer individuellen privaten Schlüssel und des Master Secret der Sitzung. Außerdem müssen beide in der Lage sein, echte Zufallszahlen zu generieren. Diese werden benötigt, um Angriffe zu verhindern, die auf einer vorhersagbaren Generierung von Zufallszahlsequenzen basieren.

Effiziente Implementierung der TLS-Kommunikation

Zur Performance-Sicherung müssen der Client und der Server in der Lage sein, die Ver- und Entschlüsselung schnell durchzuführen. Zwar ist der eigentliche Handshake-Prozess weitgehend durch die Netzwerkleistung beschränkt, der nachfolgende Datenaustausch kann jedoch durch die Geschwindigkeit der zugrunde liegenden Kryptographie eingeschränkt sein.

Obwohl Serversysteme üblicherweise die erforderliche Kombination aus Rechenleistung und Schutz bieten, war es für Entwickler von IoT-Komponenten bisher alles andere als einfach, diese Anforderungen mit Designs zu erfüllen, die diese Möglichkeiten bieten, ohne dass sich daraus für das endgültige IoT-Design erhebliche Kosten- und Komplexitätszuwächse ergeben.

Kryptographie-Controller wie der MAXQ1061 von Maxim zeichnen sich durch Integration der gesamten Palette von Funktionen und Fähigkeiten aus, die zur Implementierung der TLS-Kommunikation in IoT-Designs nötig sind. Der Baustein erfüllt damit allgemeine Sichheitsanforderungen an IoT-Komponenten. Neben seinem sicheren Speicher und Kryptographie-Engines enthält er Firmware, die auf Hardware-Sicherheitsmechanismen aufbaut, um High-Level-Sicherheitsmaßnahmen für TLS und andere Algorithmen, als auch Sicherheitsverfahren wie Secure Boot zu implementieren.

Kein Aushebeln der Sicherheit

Die eingebettete Sicherheit des MAXQ1061 beginnt auf der grundlegendsten Hardware-Ebene mit integrierten Vorrichtungen zum Schutz vor Side-Channel-Attacken. Solche Angriffe basieren auf einer gründlichen Analyse der Details eines Designs und seiner Leistungsmerkmale. Auf der Systemebene war eines der frühesten Beispiele für Side-Channel-Attacken gegen Rechenzentren die Ausnutzung von Veränderungen der elektromagnetischen Strahlung, die von Anschlussklemmen und anderen Geräten ausgeht, zum Aushebeln der Sicherheit.

Tempest-gesicherte Anlagen nutzen physische Schutzmaßnahmen und die EM-Abschirmung, um diese Bedrohungen abzuwehren. Anders als Rechenzentren verfügen IoT-Komponenten jedoch selten über den physischen Schutz vor allen möglichen Gefahren. Vielmehr können böswillige Akteure angesichts des leichten Zugangs zu diesen Komponenten nach Herzenslust die unterschiedlichsten Side-Channel-Attacken starten, wozu sie Leistungsüberwachung, Timing, Akustik und anderen Methoden nutzen. Wie viele andere Sicherheitskomponenten besitzt auch der MAXQ1061 eine Reihe von Gegenmaßnahmen, die in den Chip und die Schaltung integriert und in das Schaltungsdesign einbezogen sind.

Abfangen geheimer Daten verhindern

Bei Side-Channel-Attacken stützt sich eine der einfachsten Methoden zur Überwindung der Sicherheitsmaßnahmen in Designs mit Kryptographie-Komponenten, auf dem Abfangen geheimer Daten. Dieses Abfangen kann in einer der vielen Phasen ihrer Verwendung erfolgen, und zwar innerhalb und zwischen der Host-MCU, dem Speicher und den Begleitkomponenten des Kryptographie-Bausteins.

Hacker versuchen, auf Daten zuzugreifen, die sich in einem oder mehreren der drei üblichen Stadien befinden: in Ruhe, in Übertragung oder in Gebrauch. Der MAXQ1061 eliminiert diese Angriffsflächen, indem er in Ruhe befindlichen Daten in seinem sicheren Speicher schützt und jegliche Verwendung von geheimen Daten im Gerät selbst abwickelt, was ein Abfangen von Daten während der Übertragung oder im Gebrauch verhindert. Mit seinen 32 KB an integriertem, sicheren EEPROM bietet der Baustein Speicherplatz für alle Schlüssel, Zertifikate und kritische Daten durch ein flexibles Dateisystem, das benutzerdefinierte Sicherheitsrichtlinien unterstützt. Flexibilität für benutzerdefinierte Sicherheitsimplementierungen ermöglicht Entwicklern beispielsweise das Exportieren des Master Secret, um dieses während der Meldungsbearbeitung verwenden zu können.

Niemals den Chip verlassen

Zwar bieten auch andere Kryptographie-Bausteine eine sichere Speicherung, doch unterscheidet sich der MAXQ1061 durch Integration von Hardware-Engines und Firmware, die zur Ausführung kryptographischer Algorithmen und Durchführung von Protokollen auf höherer Ebene wie etwa TLS benötigt werden (Bild 2). Sichere Daten müssen niemals den Chip verlassen, was die entsprechenden Angriffsflächen wirksam eliminiert.

Die enthaltenen Verschlüsselungs-Beschleuniger helfen weitere Probleme bei der TLS-Implementierung zu lösen. Die TLS-Leistung ist von der Geschwindigkeit der zugrunde liegenden Kryptographie abhängig und wird durch die Art der Umsetzung des TLS-Protokolls bestimmt. Entweder kommt eine hochgradig sichere (aber langsame) asymmetrische Kryptographie wie ESDSA (Elliptic Curve Digital Signature Algorithm) in Verbindung mit dem TLS-Handshake-Protocol zum Einsatz oder eine weniger sichere (aber schnellere) symmetrische Kryptographie wie etwa AES (Advanced Encryption Standard) in Verbindung mit dem TLS-Record-Protocol. Der MAXQ1061 unterstützt diesen Ansatz, indem er nicht nur die TLS-Ausführung beschleunigt, sondern auch deren Implementierung in IoT-Designs drastisch vereinfacht.

Bild 3: Sichere Kommunikation: Der MAXQ1061 entlastet die Host-MCU, indem er wichtige Sequenzen der Protokolle TLS Handshake und TSL Record übernimmt, die für die gegenseitige Authentifizierung und den nachfolgenden sicheren Datenaustausch erforderlich sind. Digi-Key / Maxim

Bild 3: Der MAXQ1061 entlastet die Host-MCU, denn er übernimmt wichtige Sequenzen der Protokolle TLS-Handshake und TSL-Record bei der Authentifizierung und beim sicheren Datenaustausch. Maxim Integrated

Entlastung für den Host-Prozessor

Die im MAXQ1061 integrierte kryptographische Toolbox kombiniert hardware-beschleunigte Kryptographie mit geschützter Firmware und erlaubt es kritische TLS-Schichten wie SSL (Secure Sockets Layer) und DTLS (Datagram Transport Layer Security) zu implementieren. Bei der Durchführung der Protokolle TLS-Handshake und TLS-Record entlastet der MAXQ1061 die Host-MCU, indem er die detaillierten Transaktionen bei jeder Abfolge von Operationen übernimmt (Bild 3). Für TLS stellt der Baustein das Client-Zertifikat bereit und wickelt die Authentifizierungssequenz mit dem Remote-Server ab. Für allgemeine kryptographische Anforderungen mit TLS-Record-Exchange nutzt der Baustein die integrierte hardware-basierte AES-Engine zur Beschleunigung von Ver- und Entschlüsselung.

Eine integrierte 128-Bit-AES-Engine arbeitet direkt über den SPI-Kanal des Bausteins und entlastet den Host-Prozessor, indem sie für eine Fast-Stream-Verschlüsselung und Entschlüsselung sorgt. In diesem Modus streamt ein dedizierter DMA-Controller direkt über die SPI-Schnittstelle Daten zu und von der AES-Engine, wodurch eine On-the-Fly-Kryptographie möglich wird.

Über eine einfache Hardware- und Software-Schnittstelle lässt sich der MAXQ1061 an eine Host-MCU in einem IoT-Design anbinden. Mit seinem Evaluierungskit MAXQ1061-KIT demonstriert Maxim diese grundlegende Hardware-Schnittstelle (Bild 4). Wie aus dem beiliegenden Schaltplan hervorgeht, unterstützt das Kit sowohl SPI- als auch I2C-Schnittstellen. Erkennbar sind auch einfache Schaltungen, mit denen die Weck- und Manipulationserkennungsmechanismen realisiert sind. Weitere Schalteinrichtungen ermöglichen dem Entwickler einen Wechsel zwischen verschiedenen Betriebsarten und lassen die Platine mit einem externen Host-Prozessor verbinden.

Bild 4: Digi-Key

Bild 4: Das Evaluierungskit MAXQ1061-KIT bietet ein grundlegendes Referenzdesign für die Integration des MAXQ1061. Maxim Integrated

Kompexe Software einfach zu bedienen

Wie bei der Hardware-Schnittstelle verfolgt der Baustein auch bei der Software einen einfachen Ansatz. Auf der untersten Ebene der Software-Schnittstelle nutzt der Baustein ein einfaches Protokoll zur Kommunikation mit der Host-MCU über die SPI- oder I2C-Hardware-Schnittstellen. Um mit dem Baustein zu kommunizieren, sendet ein Host-Prozessor einen Byte-String, der wie folgt formatiert ist:

AA CMD LENGTH DATA CRC

Um also beispielsweise eine Ping-Abfrage an den Baustein zu senden, würde die Host-CPU den folgenden Byte-String senden:

AA 00 F7 00 04 00 01 02 03 E1 09

Als Antwort sendet der Baustein eine ähnliche Byte-Sequenz mit den folgenden Feldern:

55 ERR_CODE LENGTH DATA CRC

Als Reaktion auf die Ping-Abfrage würde der MAXQ1061 den folgenden Byte-String senden:

55 00 00 00 04 00 01 02 03 22 32

Softwarepaket des MAXQ1061

Bild 5: Das Softwarepaket des MAXQ1061 umfasst einen vollständigen TLS-Stack, der die Hardware-basierten TLS-Mechanismen des Bausteins nutzt, und verwendet eine API, die auf dem Standardtreibersatz jeder Ziel-Host-Plattform aufbaut. Maxim Integrated

Natürlich abstrahiert das Softwarepaket von Maxim diese Low-Level-Operationen in einer Abfolge von funktionell intuitiven Aufrufen an die bereitgestellte Bibliothek und das zugrunde liegende API (Application Programming Interface). Darüber hinaus vereinfacht die Software die Architektur, indem sie ihre API auf vorhandenen SPI- und I2C-Treibern innerhalb einer Zielplattform aufbaut (Bild 5).

TLS-Operationen erfolgen in der Softwareumgebung des MAXQ1061 über eine auf ihn modifizierte Version von mbed-TLS. Damit ist eine Abstraktionsebene oberhalb vom TCP/IP-Netzwerk-Stack der Zielplattform verfügbar.

Für erfahrene Programmierer bedeutet die Verwendung von mbed-TLS einfach, dass vertraute Anrufe an die Netzwerkebene in mbed-TLS-Funktionsaufrufe umgewandelt werden müssen – zum Beispiel durch Ändern von read-Aufrufen an die Netzwerkebene zu mbedtls_ssl_read- und write-Aufrufe zu mbedtls_ssl_write. Zur Nutzung der MAXQ1061-Funktionen brauchen erfahrene mbed-TLS-Entwickler nur die von Maxim bereitgestellte Version des mbed-TLS-Stacks zu verwenden.

Eine solide Sicherheitsgrundlage

Angesichts immer ausgefeilterer Sicherheitsbedrohungen erweist sich die Fähigkeit zur Durchführung der Authentifizierung und zur sicheren Kommunikation zunehmend als entscheidende Anforderung an IoT-Komponenten und alle angeschlossenen Systeme. Für Entwickler bietet der MAXQ1061 und die begleitende Software eine einfache Möglichkeit zur Implementierung grundlegender Sicherheitsmaßnahmen in ihren Anwendungen. Schlüsselsicherheit, High-Speed-Kryptographie und TLS-Kommunikation bilden zwar nur einen Teil einer umfassenden Sicherheitsrichtlinie, und doch bietet der MAXQ1061 eine solide Sicherheitsgrundlage zur Implementierung von Richtlinien auf höherer Ebene, die zum Schutz vor neuen Bedrohungsarten nötig sind.

Rich Miron

Senior Technical Content Developer bei Digi-Key Electronics

(jwa)

Kostenlose Registrierung

Der Eintrag "freemium_overlay_form_all" existiert leider nicht.

*) Pflichtfeld

Sie sind bereits registriert?