Nur wenige IoT-Geräte sind nicht mit der Cloud oder einer mobilen App verbunden. Im Gegenteil, diese Verbindungen sind meist sogar Teil des Produkts. Aus diesem Grund sollten alle Sicherheitsbedenken gleichzeitig auch auf solche Companion-Systeme übertragen werden.
Sicherheit beginnt mit der Kommunikation zwischen den Systemen. Hier müssen starke -Verschlüsselungsmechanismen und -protokolle verwendet werden. Aber auch die sind nur Werkzeuge.
Die wichtigste Grundlage ist ein solides Verständnis davon, wie man diese Werkzeuge verwendet.
Das nächste wichtige Glied in der Kommunikations-Kette ist das Cloud-Backend. Die Herausforderungen, mit denen man hier konfrontiert wird, sind sehr unterschiedlich, aber genauso wichtig, denn der erfolgreiche Angriff auf eine Cloud-Anwendung kann jedes Gerät und jeden Benutzer, der damit kommuniziert, gefährden. Information ist Macht und das Stehlen von Informationen ist ein boomendes Geschäft! In dieser Welt ist ein sorglos implementierter API-Endpunkt, der Kundendaten preisgibt, ein ernstzunehmendes Risiko. Einmal gefunden, kann das "Anzapfen" dieser Lecks automatisiert werden. Abgesehen von rechtlichen Konsequenzen kann das dem Ruf eines Unternehmens ernsthaft schaden.
Es ist allgemein anerkannt, dass Sicherheit durch bloße Geheimhaltung ("Security through obscurity") nicht funktionieren kann. Die Hoffnung, dass ein System auf den ersten Blick zu kompliziert erscheint, um einen Angreifer zu entmutigen, ist sinnlos.
Ebenso wird häufig nicht berücksichtigt, dass die finale Anwendung am Ende auf einem fremden Gerät ausgeführt wird: Apps laufen in feindlichem Territorium; keine Geheimnisse sind sicher! Werkzeuge zur Dekompilierung und "Deobfuscation" sind frei im Internet verfügbar.
Zu guter Letzt sollten Sie daran denken, dass Sie unbewusst Metadaten über die Gewohnheiten Ihrer Benutzer generieren. Es ist leicht vorstellbar, dass ein Gerät, welches das Licht im Haus eines Benutzers steuert, jedes Mal, wenn das Licht ein- oder ausgeschaltet wird, mit einem Server kommunizieren könnte. Das Abgreifen dieser Metainformationen über lange Zeiträume kann ein sehr klares Bild der täglichen Routine eines Benutzers ergeben.
Zusammengefasst:
- Die gesamte Kommunikation muss mit standardisierten Techniken verschlüsselt werden. Wenn Sie TLS nutzen, verwenden Sie mindestens Version 1.3
- Senden Sie absolut keine Daten im Klartext. Ja, das ist eine Wiederholung, aber nur um die Wichtigkeit zu unterstreichen.
- Sichern Sie alle API-Endpunkte gegen automatisierte Datenextraktion, indem Sie Anfragelimitierungen setzen und schaffen Sie Mechanismen, die automatisch auf verdächtiges Verhalten aufmerksam machen.
- Geheimnisse sind im Code nicht sicher, sobald sie sich auf dem Gerät des Benutzers befinden. Verwenden Sie stattdessen die privilegierten Speicher-APIs der jeweiligen Plattform
- Um die Spur der Meta-Daten zu minimieren, die selbst verschlüsselte Kommunikation hinterlässt, sollten Intervalle zufällig gewählt und Anfragen in Batches zusammengefasst werden