Ein bisschen Kontext
Da Sie MQTT mit AWS IoT verwenden, wird erwartet , dass Sie zur Authentifizierung und Sicherheit X.509-Zertifikate verwenden . Amazon hat ein paar Anleitungen, wie Sie Ihre Zertifikate sichern sollten. Deshalb zitiere ich das hier:
Mit Zertifikaten können asymmetrische Schlüssel mit Geräten verwendet werden. Dies bedeutet, dass Sie private Schlüssel in einen sicheren Speicher auf einem Gerät brennen können, ohne dass das vertrauliche kryptografische Material jemals das Gerät verlässt.
Da Sie derzeit die STM32 der mit Read Out Schutz (RDP), alle , aber die meisten bestimmt Angreifer Schwierigkeiten haben , Ihre Zertifikate in Ihrem aktuellen Programm den Zugriff auf :
Der globale Ausleseschutz ermöglicht es dem eingebetteten Firmware-Code (im Flash-Speicher vorinstalliert), sich vor Reverse Engineering, Dumping mit Debug-Tools oder anderen Mitteln für aufdringliche Angriffe zu schützen.
- Stufe 0 - Kein Schutz (Standard)
- Stufe 1 - Der Flash-Speicher ist durch Debuggen oder Code-Dumping durch den im RAM geladenen Code gegen Lesen geschützt
- Stufe 2 - Alle Debug-Funktionen sind deaktiviert
Wird der externe Speicher sicher sein?
Es ist wahrscheinlich nicht so sicher . Wenn der private Schlüssel Ihres Clients gestohlen wird, kann ein Angreifer Daten senden, die scheinbar von Ihrem Gerät stammen, obwohl dies tatsächlich nicht der Fall ist. Obwohl nicht klar ist, welche Daten Sie senden, können nicht vertrauenswürdige Daten ein Sicherheitsrisiko darstellen.
Welche Teile muss ich privat halten?
Wenn Sie ein Gerätezertifikat in AWS IoT erstellen, sollte ein Bild wie das folgende angezeigt werden:
Bild von der Seite " Gerätezertifikat erstellen und aktivieren" der AWS IoT-Dokumentation.
Der private Schlüssel ist das, was Sie wirklich brauchen, um ... privat zu bleiben , und sollte auf jeden Fall, wenn möglich, im lesegeschützten Speicher gespeichert werden. Der öffentliche Schlüssel und das Zertifikat können gemeinsam genutzt werden. Wenn Ihnen also der Speicherplatz ausgeht, können Sie diese sicher in einen externen Speicher verschieben. Auf der Seite finden Sie etwas mehr Kontext. Wie funktioniert SSL / TLS? bei Information Security Stack Exchange und Public-Key-Kryptographie auf Wikipedia. Ich denke, ich würde Ihnen einen schlechten Dienst erweisen, wenn ich dieses Bild nicht einfügen würde, um zu erklären, warum der private Schlüssel geheim sein muss:
.
Bild aus Wikipedia , öffentlich zugänglich.
Der öffentliche Schlüssel Ihres Geräts wird von AWS IoT zum Signieren von Nachrichten verwendet, die an Ihr Gerät gesendet werden sollen (es wird jedoch nicht nachgewiesen, wer die Nachricht sendet ). Es ist also wirklich keine große Katastrophe, wenn jemand den öffentlichen Schlüssel stiehlt, weil er kein Geheimnis sein soll.
Der private Schlüssel wird von Ihrem Gerät zum Entschlüsseln von Nachrichten verwendet. Daher ist es ein etwas größeres Problem, wenn ein Angreifer dies stiehlt.
Sie haben auch gefragt, was passieren würde, wenn der Angreifer das RootCA-Zertifikat stehlen würde. Wenn jemand den privaten Schlüssel von AWS IoT gestohlen hat , wäre dies katastrophal, aber das RootCA-Zertifikat auf Ihrem Gerät ist das nicht . Das RootCA.crt
, was Amazon Ihnen gibt, ist vollständig öffentlich und dient dazu, zu überprüfen, ob Sie in irgendeiner Weise angegriffen werden (höchstwahrscheinlich ein Mann in der Mitte, der vorgibt, die Server von AWS IoT zu sein).
Welchen Schaden könnte ein gehacktes Gerät anrichten?
Ihr gestohlenes Gerät kann nur die in der Richtlinie aufgeführten Aktionen ausführen . Versuchen Sie, dem Prinzip des geringsten Privilegs zu folgen . Gewähren Sie Ihrem Gerät nur die Berechtigungen, die es unbedingt benötigt . Wenn also das Schlimmste passiert, kann es nicht zu viel Chaos anrichten. Für Ihren speziellen Fall:
Das Ding darf nur auf 2 Kanälen (seinem Namen und einem Datenfeed-Kanal) veröffentlichen, die mit einem Datenprozessor verbunden sind, der alle unerwünschten Pakete ignoriert, die zu ihm kommen.
Das ist gut. Jeder Angriff sollte nur auf die beiden MQTT-Themen beschränkt werden, auf denen das Gerät veröffentlichen kann, damit es keinen großen Schaden verursacht.