IoT-Sicherheit – Kryptographie
Anmerkung des Herausgebers:Die Sicherung des Internets der Dinge ist nicht nur für die Integrität von Datenströmen und Software innerhalb jeder IoT-Anwendung von entscheidender Bedeutung, sondern auch für die Integrität der mit diesen Anwendungen verbundenen Unternehmensressourcen. IoT-Sicherheit ist ein komplexes Problem, das einen systematischen Ansatz zum Verständnis möglicher Bedrohungen und entsprechender Abwehrmethoden erfordert.
Angepasst an das Internet der Dinge für Architekten, von Perry Lea.
Kapitel 12. IoT-Sicherheit
Von Perry Lea
Kryptografie
Verschlüsselung und Geheimhaltung sind absolute Anforderungen von IoT-Bereitstellungen. Sie werden zur Sicherung der Kommunikation, zum Schutz der Firmware und zur Authentifizierung verwendet. In Bezug auf die Verschlüsselung sind im Allgemeinen drei Formen zu berücksichtigen:
Verschlüsselung mit symmetrischem Schlüssel :Verschlüsselungs- und Entschlüsselungsschlüssel sind identisch. RC5, DES, 3DES und AES sind alle Formen der symmetrischen Schlüsselverschlüsselung.
Verschlüsselung mit öffentlichem Schlüssel :Der Verschlüsselungsschlüssel wird öffentlich veröffentlicht, damit jeder Daten verwenden und verschlüsseln kann. Nur die empfangende Partei hat einen privaten Schlüssel, der verwendet wird, um die Nachricht zu entschlüsseln. Dies wird auch als asymmetrische Verschlüsselung bezeichnet. Die asymmetrische Kryptographie verwaltet das Datengeheimnis, authentifiziert Teilnehmer und erzwingt die Nichtabstreitbarkeit. Bekannte Internetverschlüsselungs- und Nachrichtenprotokolle wie Elliptic Curve, PGP, RSA, TLS und S/MIME gelten als öffentliche Schlüssel.
Kryptografischer Hash :Ordnet Daten beliebiger Größe einer Bitfolge (genannt Digest) zu. Diese Hash-Funktion ist als „Einweg“ konzipiert. Im Wesentlichen besteht die einzige Möglichkeit, den Ausgabe-Hash neu zu erstellen, darin, jede mögliche Eingabekombination zu erzwingen (sie kann nicht umgekehrt ausgeführt werden). MD5, SHA1, SHA2 und SHA3 sind alle Formen von Einweg-Hashes. Diese werden normalerweise verwendet, um digitale Signaturen wie signierte Firmware-Images, Authentifizierungscode für Nachrichten . zu codieren s (MAC ) oder Authentifizierung. Beim Verschlüsseln einer Kurznachricht wie einem Passwort kann die Eingabe zu klein sein, um effektiv einen fairen Hash zu erstellen; in diesem Fall ein Salz oder eine nicht private Zeichenfolge wird an das Kennwort angehängt, um die Entropie zu erhöhen. Ein Salt ist eine Form der Schlüsselableitungsfunktion (KDF ):
Klicken für größeres Bild
Elemente der Kryptographie. Hier sind die symmetrischen, asymmetrischen und Hashing-Funktionen. Beachten Sie die Schlüsselverwendung bei symmetrischer und asymmetrischer Kryptographie. Symmetric muss identische Schlüssel verwenden, um Daten zu verschlüsseln und zu entschlüsseln. Die Schlüssel sind zwar schneller als die asymmetrische Verschlüsselung, müssen aber gesichert werden.
Symmetrische Kryptographie
Bei der Verschlüsselung bezieht sich Klartext auf die unverschlüsselte Eingabe und die Ausgabe wird Chiffretext genannt, da sie verschlüsselt ist. Der Standard für die Verschlüsselung ist der Advanced Encryption Standard (AES ), die ältere DES-Algorithmen aus den 1970er Jahren ersetzten. AES ist Teil der FIPS-Spezifikation und des weltweit verwendeten ISO/IEC 18033-3 Standards. AES-Algorithmen verwenden feste Blöcke von 128, 192 oder 256 Bit. Nachrichten, die größer als die Bitbreite sind, werden in mehrere Blöcke aufgeteilt. AES hat vier grundlegende Betriebsphasen während der Verschlüsselung. Der Pseudocode für eine generische AES-Verschlüsselung wird hier angezeigt:
// Pseudocode für eine AES-128-Chiffre
// in:128 Bit (Klartext)
// out:128 Bit (Chiffrtext)
// w :44 Wörter, jeweils 32 Bit (erweiterter Schlüssel)
state =in
w=KeyExpansion(key) //Schlüsselerweiterungsphase (verschlüsselt den Schlüssel effektiv selbst)
AddRoundKey(state, w[0 , Nb-1]) //Anfangsrunde
für Runde =1 Schritt 1 bis Nr–1 //128 Bit=10 Runden, 192 Bit =12 Runden, 256 Bit =14 Runden
SubBytes(state ) //Nichtlinearität in der Verschlüsselung bereitstellen
ShiftRows(state) //Vermeidet, dass Spalten unabhängig voneinander verschlüsselt werden,
kann den Algorithmus schwächen
MixColumns(state) //Transformiert jede Spalte und fügt Diffusion hinzu zur
Verschlüsselung
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) //Erzeugt einen Unterschlüssel und
kombiniert ihn mit state.
end for
SubBytes(state) //Endrunde und Bereinigung.
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1] )
out =state
Scrollen oder ziehen Sie die Ecke des Felds nach nach Bedarf erweitern.

Blockchiffren stellen Verschlüsselungsalgorithmen dar, die auf einem symmetrischen Schlüssel basieren und mit einem einzelnen Datenblock arbeiten. Moderne Chiffren basieren auf Claude Shannons Arbeit über Produktchiffren im Jahr 1949. Ein Chiffriermodus ist ein Algorithmus, der eine Blockchiffre verwendet und beschreibt, wie eine Chiffre wiederholt angewendet wird, um große Datenmengen, die aus vielen Blöcken bestehen, zu transformieren. Die meisten modernen Chiffren erfordern auch einen Initialisierungsvektor (IV ), um unterschiedliche Geheimtexte zu gewährleisten, auch wenn derselbe Klartext wiederholt eingegeben wird. Es gibt verschiedene Betriebsarten wie:
Elektronisches Codebuch (ECB) :Dies ist die einfachste Form der AES-Verschlüsselung, wird jedoch mit anderen Modi verwendet, um eine erweiterte Sicherheit zu erreichen. Die Daten werden in Blöcke unterteilt und jeder einzeln verschlüsselt. Identische Blöcke erzeugen identische Chiffren, was diesen Modus relativ schwach macht.
Cipher Block Chaining (CBC) :Klartextnachrichten Xored mit dem vorherigen Geheimtext, bevor sie verschlüsselt werden.
Cipher Feedback Chaining (CFB) :Ähnlich wie CBC, bildet aber einen Verschlüsselungsstrom (die Ausgabe der vorherigen Verschlüsselung wird in die nächste eingespeist). CFB hängt von der vorherigen Blockchiffre ab, um Eingaben für die aktuell generierte Chiffre bereitzustellen. Aufgrund der Abhängigkeit von vorherigen Chiffren kann CFB nicht parallel verarbeitet werden. Streaming-Chiffren ermöglichen es, dass ein Block während der Übertragung verloren geht, aber nachfolgende Blöcke können sich von dem Schaden erholen.
Output Feedback Chaining (OFB) :Ähnlich wie CFB ist dies eine Streaming-Chiffre, ermöglicht jedoch die Anwendung von Fehlerkorrekturcodes vor der Verschlüsselung.
Zähler (CTR) :Wandelt eine Blockchiffre in eine Streamchiffre um, verwendet aber einen Zähler. Der inkrementierende Zähler speist jede Blockchiffre parallel, was eine schnelle Ausführung ermöglicht. Die Nonce und der Zähler werden miteinander verkettet, um die Blockchiffre zu füttern.
CBC mit Message Authentication Code (CBC-MAC) :Ein MAC (auch bekannt als Tag oder MIC) wird verwendet, um eine Nachricht zu authentifizieren und zu bestätigen, dass die Nachricht vom angegebenen Absender stammt. Der MAC oder MIC wird dann der Nachricht zur Überprüfung durch den Empfänger hinzugefügt.
Diese Modi wurden erstmals in den späten 1970er und frühen 1980er Jahren konstruiert und vom National Institute of Standards and Technology in FIPS 81 als DES-Modi befürwortet. Diese Modi bieten eine Verschlüsselung für die Vertraulichkeit von Informationen, schützen jedoch nicht vor Änderungen oder Manipulationen. Dazu wird eine digitale Signatur benötigt und die Security-Community hat CBC-MAC zur Authentifizierung entwickelt. Die Kombination von CBC-MAC mit einem der Legacy-Modi war schwierig, bis Algorithmen wie AES-CCM etabliert waren, die sowohl Authentifizierung als auch Geheimhaltung bieten. CCM steht für Counter with CBC-MAC Mode.

AES-CCM verwendet duale Chiffren:CBC und CTR. Der AES-CTR- oder Counter-Modus wird für die allgemeine Entschlüsselung des einfließenden Chiffretext-Streams verwendet. Der eingehende Stream enthält ein verschlüsseltes Authentifizierungs-Tag. AES-CTR entschlüsselt das Tag sowie die Nutzdaten. Aus dieser Phase des Algorithmus wird ein „erwartetes Tag“ gebildet. Die AES-CBC-Phase des Algorithmus markiert als Eingabe die entschlüsselten Blöcke aus der AES-CTR-Ausgabe und den ursprünglichen Header des Frames. Die Daten sind verschlüsselt; die einzigen relevanten Daten, die für die Authentifizierung benötigt werden, sind jedoch die berechneten Tags. Wenn das berechnete AES-CBC-Tag vom erwarteten AES-CTR-Tag abweicht, besteht die Möglichkeit, dass die Daten während der Übertragung manipuliert wurden.
Die folgende Abbildung zeigt einen eingehenden verschlüsselten Datenstrom, der sowohl mit AES-CBC authentifiziert als auch mit AES-CTR entschlüsselt wird. Dies gewährleistet sowohl die Geheimhaltung als auch die Authentizität der Herkunft einer Nachricht:
Klicken für größeres Bild
AES-CCM-Modus.

Internet der Dinge-Technologie
- Der Weg zur industriellen IoT-Sicherheit
- Absicherung des IoT-Bedrohungsvektors
- IoT-Sicherheit – wer ist dafür verantwortlich?
- Alles läuft IoT
- IoT-Sicherheit – Ein Hindernis für die Bereitstellung?
- Sicherung des IoT durch Täuschung
- Automatisierung und IoT:Eine himmlische Kombination für Logistik und Sicherheit im Gesundheitswesen
- Sicherheit erschließt das wahre Potenzial des IoT
- Ein Jahr im Rückblick:12 Überlegungen zur IoT-Sicherheit
- Machine Vision ist der Schlüssel zu Industrie 4.0 und IoT