Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

So sichern Sie die UART-Kommunikation in IoT-Geräten

Mit kryptografischen Blöcken, die in MCUs integriert sind, ist es für Entwickler möglich geworden um jeden Kommunikationskanal abzusichern, einschließlich Schnittstellen wie UART, die selbst keine Sicherheit bieten.

Mit der zunehmenden Zahl von hochkarätigen Daten- und Datenschutzverletzungen in den Internet of Things (IoT)-Systemen haben Unternehmen und Verbraucher ein größeres Bewusstsein für die Notwendigkeit der Sicherheit beim Kauf vernetzter Produkte. Die Bereitstellung erstklassiger Produkte oder Dienstleistungen reicht nicht mehr aus. Geräte, die keine ausreichende Sicherheit bieten, werden nicht in der Lage sein, mit denen zu konkurrieren, die End-to-End-Sicherheit bieten.

Viele Protokolle implementieren Sicherheit innerhalb des Standards und sind fester Bestandteil jedes Controllers. Eingebettete Geräte, die sich über einen universellen asynchronen Empfänger-Sender (UART) verbinden, sind jedoch nicht geschützt. UART ist eine der einfachsten digitalen Kommunikationsschnittstellen zwischen Geräten. Es ist ein Kommunikationsprotokoll ohne ACK, das von jedem Gerät gelesen werden kann, wenn die Baudrate bekannt ist.

Um zu verhindern, dass Daten gelesen oder in das System eingespeist werden, muss der Kommunikationskanal durch die Systeme, die die Daten senden und empfangen, gesichert werden. Selbst wenn ein Eindringling mit der richtigen Baudrate Zugriff auf den Kommunikationskanal erhält, ist der Kanal somit geschützt.

Symmetrische und asymmetrische Sicherheit

Kommunikationskanäle werden oft mit kryptografischen Algorithmen gesichert. Grob gesagt lassen sich kryptografische Algorithmen in symmetrisch und asymmetrisch einteilen. Bei symmetrischen Schlüsselalgorithmen teilen sich Sender und Empfänger einen einzigen geheimen Schlüssel. Der Sender verschlüsselt die Nachricht mit dem Schlüssel und teilt die verschlüsselte Nachricht mit dem Empfänger. Der Empfänger verwendet dann denselben Schlüssel, um die Nachricht zu entschlüsseln.

Das Hauptsicherheitsproblem bei symmetrischen Schlüsselalgorithmen ist der sichere Austausch des geheimen Schlüssels zwischen Sender und Empfänger. Wenn der Schlüssel während des Schlüsselaustauschs von einer anderen Entität erfasst wird, kann diese Entität auch vom Absender gesendete Nachrichten entschlüsseln. Daher ist es entscheidend, dass der Schlüssel bei symmetrischen Schlüsselalgorithmen sicher nur mit dem Sender und dem Empfänger geteilt wird.

Um einen sicheren symmetrischen Schlüsselaustausch zu ermöglichen, werden asymmetrische Schlüsselalgorithmen verwendet. Asymmetrische Algorithmen verwenden unterschiedliche Schlüssel für die Verschlüsselungs- und Entschlüsselungsprozesse. Obwohl diese Schlüssel unterschiedlich sind, sind sie mathematisch verwandt. Der symmetrische Schlüssel kann sicher ausgetauscht werden, indem er mit einem asymmetrischen Schlüssel verschlüsselt wird und der Empfänger ihn mit dem zugehörigen asymmetrischen Schlüssel entschlüsselt. Ein Nachteil asymmetrischer Algorithmen besteht darin, dass sie komplexe mathematische Berechnungen beinhalten und tendenziell rechenintensiv sind.

Für höchste Sicherheit wird die RSA-Verschlüsselung als asymmetrischer Schlüsselalgorithmus verwendet. Bei RSA hat eine kommunizierende Entität einen öffentlichen Schlüssel und einen privaten Schlüssel. Der öffentliche Schlüssel wird, wie der Name schon sagt, öffentlich geteilt und ist für jeden verfügbar. Im Gegensatz dazu wird der private Schlüssel nur von der kommunizierenden Entität gehalten. Um eine Nachricht an die Entität zu senden, verschlüsselt der Absender die Nachricht mit dem öffentlichen Schlüssel der Entität. Diese verschlüsselte Nachricht kann nur mit dem privaten Schlüssel entschlüsselt werden. Da der private Schlüssel nur dem vorgesehenen Empfänger zur Verfügung steht, stellt dies sicher, dass nur der Empfänger die Nachricht entschlüsseln kann.

Verschlüsselung mit öffentlichem und privatem Schlüssel

RSA verwendet exponentielle Berechnungen und die Primfaktorzerlegung sehr großer Zahlen, was es sehr sicher, aber auch rechenintensiv macht. Darüber hinaus würde die Implementierung von RSA in Echtzeit – um Latenzen bei der Kommunikation zu vermeiden – die Systemkosten erhöhen, da eine Verarbeitungsmaschine mit höherer Leistung erforderlich ist. Viele eingebettete Systeme benötigen dieses Sicherheitsniveau nicht. Stattdessen können sie einen schlankeren Verschlüsselungsalgorithmus wie Advanced Encryption Standard (AES) verwenden, der praktischer und kostengünstiger ist, da weniger Verarbeitungsressourcen benötigt werden.

AES ist ein symmetrischer kryptografischer Algorithmus, was bedeutet, dass beide Seiten des Kommunikationskanals einen gemeinsamen geheimen Schlüssel haben. Die oben erwähnte Einschränkung von AES liegt in der sicheren gemeinsamen Nutzung des Schlüssels zwischen dem UART-Sender und -Empfänger, ohne ihn externen Entitäten zugänglich zu machen. Um dies zu beheben, kann RSA verwendet werden, um den AES-Schlüssel zu verschlüsseln und sicher auszutauschen. Da der gemeinsame Schlüssel nur einmal geteilt werden muss, kann der Kommunikationskanal die Komplexität und Latenz von RSA ertragen. Mit anderen Worten, die Verzögerung bei der Verarbeitung des RSA-Algorithmus wirkt sich nur auf den anfänglichen Schlüsselaustausch aus, nicht auf jede Nachricht.

Der sichere Schlüsselaustausch erfolgt in mehreren Stufen (Abbildung 1). Zuerst generiert der UART-Empfänger ein RSA-Schlüsselpaar und teilt seinen öffentlichen Schlüssel mit dem Sender. Es spielt keine Rolle, ob eine andere Entität den öffentlichen Schlüssel sieht, da er nur zum Verschlüsseln von Nachrichten verwendet wird, die für den UART-Empfänger bestimmt sind. Der Absender generiert dann zufällig einen AES-Schlüssel und verschlüsselt ihn mit dem öffentlichen Schlüssel des Empfängers. Der Empfänger entschlüsselt den AES-Schlüssel mit dem privaten RSA-Schlüssel.


Abbildung 1:Sicherer Austausch von geheimen AES-Schlüsseln mit öffentlichen und privaten RSA-Schlüsseln. (Quelle:Infineon)

Da nur der Empfänger Zugriff auf den privaten RSA-Schlüssel hat, kann der verschlüsselte AES-Schlüssel nur vom Empfänger entschlüsselt werden. Dadurch wird sichergestellt, dass der AES-Schlüssel nur dem Sender und dem Empfänger bekannt ist und ein Eindringling mit Zugriff auf den Kommunikationskanal den Schlüssel nicht ableiten kann. Darüber hinaus werden alle nachfolgenden Nachrichten zwischen Sender und Empfänger mit dem AES-Schlüssel verschlüsselt, sodass diese Nachrichten für andere Parteien, die sie nicht empfangen sollen, unzugänglich sind. Dadurch wird auch die Gefahr von Man-in-the-Middle-Angriffen (MIM) eliminiert, bei denen Nachrichten nach dem Senden, aber vor dem Empfangen modifiziert werden.

Firmware vs. Hardware

Die Implementierung von Sicherheitsalgorithmen in eingebetteten Geräten unter Verwendung von Firmware stellt viele Designherausforderungen. Kryptografische Algorithmen sind naturgemäß rechenintensiv. Sie erhöhen auch den Speicherbedarf, verzögern die Verarbeitung und führen zu einer erheblichen Komplexität der Systeme. Infolgedessen verbraucht die Implementierung von Sicherheit in der Firmware erhebliche CPU-Zyklen und MCU-Ressourcen. Darüber hinaus wird zur Erfüllung der Echtzeitanwendungsanforderungen eine MCU mit höherer Leistung benötigt, was die Systemkosten erhöht.

Ein Grund dafür, dass so viele MCU-Ressourcen verwendet werden, liegt darin, dass MCUs Allzweck-Verarbeitungseinheiten sind. Aus diesem Grund integrieren viele MCUs Hardware, die speziell für kryptografische Algorithmen entwickelt wurde. Mit einer integrierten kryptografischen Engine kann eine MCU im Vergleich zu einer MCU ohne hardwarebasierte kryptografische Verarbeitungsfunktionen eine Echtzeitverschlüsselung und -entschlüsselung von Daten mit viel geringerem Platzbedarf und zu geringeren Kosten bereitstellen.

Ein Beispiel dafür ist die PSoC-6-MCU von Infineon. Es verfügt über einen dedizierten kryptografischen Block, der eine Hardwarebeschleunigung von kryptografischen Funktionen bietet. Der kryptografische Block ist flexibel und kann verwendet werden, um verschiedene kryptografische Algorithmen zu unterstützen, um sicherzustellen, dass die Daten geschützt sind. Dies ermöglicht es Entwicklern, eingebettete IoT-Geräte mit Verschlüsselungsstandards wie AES, DES, TDES und RSA und Integritätsprüfungen wie dem sicheren Hash-Algorithmus ( SHA) und zyklische Redundanzprüfung (CRC). Das Auslagern von kryptografischen Funktionen von der MCU auf diese Weise ermöglicht es, kostengünstig Sicherheit in fast alle eingebetteten Anwendungen einzuführen, ohne einen leistungsfähigeren Prozessor einsetzen zu müssen.

Echte Zufallszahlen

Die Absicherung eines eingebetteten Systems erfordert jedoch mehr als nur die Verschlüsselung der Kommunikation. Insbesondere muss der vom System generierte AES-Schlüssel zufällig sein. MCUs sind jedoch deterministisch, sodass die generierten Schlüssel ebenfalls deterministisch wären, was es einem Hacker ermöglicht, „brute force“ zu verwenden, um die verschiedenen möglichen zufälligen Seeds zu durchlaufen und möglicherweise den AES-Schlüssel abzuleiten. Daher benötigt die Firmware eine Möglichkeit, echte Zufallszahlen zu generieren, um die Zufälligkeit des AES-Schlüssels sicherzustellen, damit er nicht brutal erzwungen werden kann.

Dazu muss der kryptografische Block einen True Random Number Generator (TRNG) enthalten. Im kryptografischen Block PSoC 6 beispielsweise verfügt der TRNG über sechs Ringoszillatoren, die physikalische Rauschquellen bereitstellen. Die Ringoszillatoren enthalten temperaturempfindliche Inverter, die Jitter in das Signal des Ringoszillators einbringen. Dieses Signal gibt der MCU Zugriff auf eine echte Zufallszahlenquelle, um die Zufälligkeit der generierten AES-Schlüssel sicherzustellen.

Um beispielsweise einen 16-Byte-Schlüssel zu generieren, wird 16-mal eine Zufallszahl generiert und an die vorherigen Zahlen angehängt. Dies ermöglicht die Möglichkeit von 2^128 Schlüsseln. Es ist mehr als genug, um zu verhindern, dass der „AES“-Schlüssel brutal erzwungen oder erraten wird.

Einige Krypto-Angriffe konzentrieren sich auf die Analyse der erfassten Kommunikation. Mit genügend Ressourcen kann jeder Schlüssel irgendwann gebrochen werden. Um dieser Möglichkeit zu begegnen und die Gesamtsicherheit des Kommunikationskanals zu erhöhen, wird der AES-Schlüssel bei jedem Neustart generiert. Dies ist eine einfache, aber effektive Maßnahme, um die Sicherheit eingebetteter Systeme zu erhöhen. Kurz gesagt, selbst wenn ein Schlüssel von einem Eindringling identifiziert wird, wird der Schlüssel wahrscheinlich nicht mehr verwendet, wenn er ausgenutzt werden kann.

Sicherheit mit Vertrauen

An dieser Stelle könnte es verlockend sein, die UART-Schnittstelle als sicher zu betrachten. UART ist jedoch ein Kommunikationsprotokoll ohne ACK. Das bedeutet, dass das Protokoll keinen Mechanismus hat, um sicherzustellen, dass eine vom Empfänger empfangene Nachricht a) vollständig und b) nicht beschädigt ist.

Eine letzte Sicherheitsstufe ist erforderlich, um die Integrität der Nachricht zu bestätigen. Eine effektive Methode, dies zu erreichen, besteht darin, den SHA-Algorithmus zum Hashing der Nachricht zu verwenden. Das Ausführen einer Nachricht durch eine kryptografische Hash-Funktion wie SHA erzeugt einen Hash, eine Ausgabe mit fester Länge. Da Hashfunktionen irreversible Einwegfunktionen sind, besteht die einzige Möglichkeit, die Nachricht zu identifizieren, die einen bestimmten Hash generiert hat, darin, eine Brute-Force-Suche aller möglichen Eingaben zu versuchen.


Abbildung 2:Eine Hash-Funktion gewährleistet die Integrität der Kommunikation während des sicheren Schlüsselaustauschs und der Nachrichtenübertragung. (Quelle:Infineon)

Vor dem Versenden einer Nachricht wird der Hash der gesamten Nachricht an die Nachricht angehängt (Abbildung 2). Die Nachricht plus Hash wird dann mit dem AES-Schlüssel verschlüsselt. Auf diese Weise kann der Hash als Integritätsprüfung dienen. Der Empfänger berechnet nach der Entschlüsselung den Hash der entschlüsselten Nachricht. Der Empfänger vergleicht dann den empfangenen Hash und den berechneten Hash. Wenn sie gleich sind, wurde die Nachricht nicht geändert. Wenn die Hashes jedoch nicht übereinstimmen, weist dies darauf hin, dass die Integrität der Nachricht beeinträchtigt wurde. Dies kann vorkommen, weil ein Hacker versucht hat, die Nachricht zu ändern oder während der Übertragung ein Fehler aufgetreten ist. In jedem Fall ist die Kommunikation fehlgeschlagen.

Beachten Sie, dass der Kommunikationskanal für die Authentizität weiter gestärkt werden kann, indem die Nachricht mit dem privaten Schlüssel des Absenders signiert wird. Die signierte Nachricht kann mit dem öffentlichen Schlüssel des Absenders verifiziert werden, um sicherzustellen, dass nur der Absender die Nachricht gesendet haben konnte. Anders ausgedrückt, keine andere Partei kann nachahmen, der Absender zu sein, da sie nicht über den privaten Schlüssel des Absenders verfügt, wodurch die Authentizität der Nachrichten sichergestellt wird. Weitere Ideen finden Sie in den Community-Codebeispielen, die viele Projekte anderer Ingenieure enthalten.

Die Implementierung von Sicherheit ist beim Design von eingebetteten IoT-Systemen zu einer notwendigen Überlegung geworden. Es ist von entscheidender Bedeutung, dass jedes angeschlossene Gerät sicher ist und Benutzerdaten vor Kompromittierung schützt. Mit in MCUs integrierten kryptografischen Blöcken ist es für Entwickler möglich geworden, jeden Kommunikationskanal abzusichern, einschließlich Schnittstellen wie UART, die selbst keine Sicherheit bieten.

—Harigovind A und Rakshith MB sind leitende Anwendungsingenieure bei Infineon Technologies.

>> Dieser Artikel wurde ursprünglich auf unserer Schwesterseite EDN . veröffentlicht .


Internet der Dinge-Technologie

  1. Wie 5G das industrielle IoT beschleunigen wird
  2. Wie das IoT Arbeitsplätze verbindet
  3. IoT bietet weltweite Vorteile
  4. Wie gestaltet das IoT die Unternehmensmobilität?
  5. 7 wichtige Tipps, um Ihr IoT-Netzwerk zu Hause betriebsbereit und sicher zu halten
  6. IoT lohnend machen:So bauen Sie ein profitables IoT-Geschäftsmodell auf
  7. Bereitstellung einer sicheren Zukunft für Milliarden von IoT-Geräten durch Cyber-Resilienz
  8. Wie gefährlich sind Kill-Chain-Angriffe auf das IoT?
  9. Wie das IoT die Arbeitssicherheit revolutioniert?
  10. Wie das IoT das Kundenerlebnis verbessert