Wie sichere ich die Kommunikation zwischen App und IoT-Gerät?

18

Ich arbeite derzeit an einem Projekt, das die Bluetooth-Kommunikation zwischen einer mobilen Anwendung (die derzeit die Ionic-Plattform verwendet) und einem eingebetteten Gerät umfasst. Zum Vergleich: Unser Produkt ähnelt einem Smart Lock .

Sicherheit ist von größter Bedeutung, und wir suchen nach Möglichkeiten, um sicherzustellen, dass unsere Hard- und Software nicht gehackt werden kann. Welche Schritte sollten wir unternehmen, um sicherzustellen, dass unser System sicher ist?

Bearbeiten: Ja, wir verschlüsseln derzeit die Kommunikation und verwenden HTTPS, wenn das Gerät mit unserem Server kommuniziert.

Joel Brewer
quelle
HTTPS verwenden? Codieren Sie beide Geräte? Verschlüsselung
Mawg
1
Consiedr fragte auch bei security.stackexchange.com
Mawg
2
@Mawg Soweit mir bekannt ist, gilt HTTPS nicht für Bluetooth (oder zumindest nicht im normativen / vernünftigen Sinne).
Goldlöckchen
1
Ich stimme dafür, diese Frage als "Off-Topic" zu schließen, da dies nicht zeigt, wie spezifisch das Internet der Dinge ist. Es sichert nur die Kommunikation zwischen Geräten.
Helmar
4
@Helmar Die Kommunikation zwischen Geräten ist ein ziemlich wichtiges Merkmal des IoT, sogar ein entscheidendes Merkmal. Ich verstehe daher nicht, warum diese Frage nicht zum Thema gehört.
Gilles 'SO- hör auf böse zu sein'

Antworten:

13

Um sicherzustellen, dass Ihr Gerät sicher genug ist, habe ich einige Tipps:

  1. Fügen Sie der Bluetooth-Kommunikation eine gewisse Verschlüsselung hinzu. Ich würde empfehlen, die Verschlüsselungsschlüssel fernzuhalten. Beispielsweise können Sie den Benutzer auffordern, einen QR-Code zu scannen, der sich auf dem Gerät befindet, in der Verpackung aufgedruckt ist usw. bei der Ersteinrichtung der mobilen App, möglicherweise mit einem AES-Schlüssel. Wie du willst. Auf diese Weise soll verhindert werden, dass jemand das im Klartext übermittelte Passwort sieht.
  2. Wenn Sie können, halten Sie sich vom EZB-Modus (CBC-Modus verwenden) des ausgewählten Verschlüsselungsalgorithmus fern, da er möglicherweise einige Informationen zu den übertragenen Daten enthält. Weitere Informationen dazu finden Sie hier .
  3. Stellen Sie bei der Bluetooth-Datenübertragung sicher, dass Sie eine eindeutige ID angeben, damit die Nachricht nicht wiederholt werden kann (z. B. können Sie einen Zeitstempel einfügen). Sie können auch ein TOTP-ähnliches System implementieren.
  4. Stecken Sie einen Anschluss in das Gerät, über den das Flashen einfach durchgeführt werden kann, damit Sie feststellen, dass die Software einen Fehler aufweist (und aus irgendeinem Grund kein Update von OTA möglich ist), ist das Gerät kein teures Briefbeschwerer, sondern nur ein Gerät das muss an einen PC angeschlossen und auf neue Software geflasht werden.
  5. Extra: Überprüfen Sie das HTTPS-Zertifikat, um sicherzustellen, dass jemand mit einem falschen Stammzertifikat (möglicherweise selbst ausgestellt und auf dem Clientgerät installiert) die Serverkommunikation nicht abfangen kann. Hier ist eine SO, die nach Android fragt. Sie müssen in der Lage sein, ähnliche Ressourcen auch für iOS zu finden .

Wenn Sie mehr über Kryptologie und Verschlüsselung erfahren möchten, die Sie zum Sichern Ihres Geräts verwenden, lesen Sie dieses (kostenlose) eBook . Es spricht viel über gute und schlechte Implementierungen von Verschlüsselungsalgorithmen und sollte Ihnen bei der Sicherung Ihres Produkts helfen. (Hinweis 1: Bitte erstellen Sie keinen eigenen Algorithmus. Hinweis 2: Ich bin nicht mit crypto101 oder lvh verbunden.)

Ave.
quelle
2
"Wenn Sie können, bleiben Sie weg von der EZB". Nein, schlechter Rat. Ein passabler Ratschlag wäre „Niemals die EZB verwenden“, er ist jedoch noch unvollständig. Eine bessere Antwort würde sagen, dass Sie es falsch machen , wenn Sie die Buchstaben CBC in Ihren Code eingeben . Insbesondere gewährleistet AES-CBC nicht die Integrität oder Authentizität der Kommunikation.
Gilles 'SO- hör auf böse zu sein'
@Gilles ECB ist sicherlich besser als all die iot-Geräte, die heutzutage nur Klartext oder einfach xor mit einem festgelegten Wert übertragen Sie können versuchen, etwas zu tun, das die Sicherheit so lange wie möglich gewährleistet und das nicht die EZB betrifft, sondern eine ordnungsgemäße Implementierung von AES-CBC 256).
Ave
13

Wenn Sie über Ende-zu-Ende-TCP verfügen können, verwenden Sie Ende-zu-Ende-TLS (z. B. mit HTTPS).

Erfinden Sie das Rad nicht neu, besonders wenn es um Kryptografie geht - die meisten Leute verstehen es falsch. Es sei denn, das Gerät ist zu ressourcenbeschränkt, um TLS zu unterstützen, wenn Sie die AES-Ebene erreichen. Sie es falsch . Der größte Fehler ist, zu verschlüsseln und zu vergessen, sich zu authentifizieren. Wenn Sie einen verschlüsselten Kanal zwischen Ihrem Server und einem Man-in-the-Middle-Computer haben, anstatt einen verschlüsselten Kanal zwischen Ihrem Server und Ihrem Gerät, hat die Verschlüsselung keinen Nutzen gebracht . Wenn Sie TLS nicht verwenden können, vergewissern Sie sich, dass das von Ihnen verwendete Protokoll alles authentifiziert und verschlüsselt, was vertraulich sein muss.

Überlegen Sie sich, welche Garantien Sie für die sichere Verwendung von TLS aus Sicht der einzelnen Teilnehmer benötigen. Im Allgemeinen muss das Gerät wissen, dass es mit dem legitimen Server kommuniziert. Dies bedeutet, dass das Serverzertifikat überprüft werden muss. Auf dem Gerät muss das X.509-Zertifikat einer Zertifizierungsstelle als vertrauenswürdig registriert sein. Dies erfordert Speicher, der von einem Angreifer nicht geändert werden kann, erfordert jedoch keine Vertraulichkeit des Speichers. Beachten Sie, dass Sie das Serverzertifikat nicht direkt fest codieren sollten, da Sie das Zertifikat sonst nicht einfach ersetzen können, wenn es kompromittiert wird. Stattdessen speichert das Gerät die erwartete Identität(Hostname) des Servers und das Zertifikat einer Zertifizierungsstelle, die garantiert, dass ein bestimmter öffentlicher Schlüssel zum erwarteten Hostnamen gehört. Erfinden Sie das Rad nicht noch einmal neu, sondern verlassen Sie sich auf die Zertifikatsüberprüfung, die von Ihrer TLS-Bibliothek oder -Anwendung bereitgestellt wird.

Wenn der Server wissen muss, dass er mit einem legitimen Client kommuniziert, muss jeder Client über ein eigenes Clientzertifikat verfügen. Dies erfordert eine vertrauliche Speicherung auf dem Client. Übergeben Sie das Clientzertifikat aus Ihrer TLS-Bibliothek an die TLS-Sitzungseröffnungsfunktion, oder legen Sie es in der Anwendungskonfiguration fest.

Das sichert die Kommunikation zwischen Ihrem Server und Ihrem Gerät. Wenn die mobile Anwendung direkt mit dem Gerät kommunizieren kann (z. B. um den getrennten Betrieb im lokalen WLAN-Netzwerk zuzulassen), müssen Sie zuerst eine Kopplung zwischen dem Smart Switch und dem Mobiltelefon durchführen. Pairing bedeutet einen Austausch von Schlüsseln, vorzugsweise einen Austausch von öffentlichen Schlüsseln, wenn die Ressourcen dies zulassen, andernfalls eine Vereinbarung von geheimen Schlüsseln. Ziel dieser Kopplung ist es, sicherzustellen, dass jedes Gerät weiß, mit wem es spricht.

Sie müssen auch den Steuerkanal sichern, unabhängig davon, ob er direkt vom Mobilgerät zum Smart Switch oder über einen Server übertragen wird. Denken Sie an die Autorisierung: Gibt es verschiedene Zugriffsebenen auf den Switch, z. B. eine Steuerungsebene, die eine Neukonfiguration ermöglicht, und einen Basiskanal, der nur das Ein- und Ausschalten ermöglicht? Dies wird in der Regel durch einen Authentifizierungsschritt nach dem Einrichten des sicheren Kanals (TLS, falls möglich) erledigt.

Ein weiterer Gesichtspunkt sind Firmware-Updates. Das ist eine heikle Frage: Einerseits gibt es keine absolute Sicherheit, daher müssen Sie ab und zu Sicherheitspatches anwenden. Andererseits ist ein Firmware-Aktualisierungsmechanismus eine komplexe Sache und kann selbst Fehler aufweisen. Stellen Sie mindestens sicher, dass Ihre Firmware-Upgrades signiert sind. Es ist schwierig, sich bei Upgrades nur auf die Sicherheit des Kommunikationskanals zu verlassen, da die Vertrauenswürdigkeit für einen sicheren Kanal größer ist als für eine statische Sicherheitsüberprüfung. Manchmal möchten Sie möglicherweise Firmware-Updates ohne Netzwerkverbindung installieren. Zusätzlich zur Überprüfung der Signatur sollten Sie im Idealfall einen gewissen Schutz vor Rollback haben, damit ein Gegner

Gilles 'SO - hör auf böse zu sein'
quelle