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.
security
bluetooth
mobile-applications
Joel Brewer
quelle
quelle
Antworten:
Um sicherzustellen, dass Ihr Gerät sicher genug ist, habe ich einige Tipps:
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.)
quelle
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
quelle