„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Sicherung der IoT-Datenintegrität mit der Go IoT-Plattform

Sicherung der IoT-Datenintegrität mit der Go IoT-Plattform

Veröffentlicht am 08.11.2024
Durchsuche:486

Securing IoT Data Integrity with Go IoT Platform

Übersetzung:

Die Go IoT Development Platform ist eine kostenlose, effiziente und skalierbare Lösung für das Internet der Dinge (IoT), die mit der Programmiersprache Go entwickelt wurde. Die Plattform unterstützt Datenübertragungsprotokolle wie MQTT, HTTP, WebSocket, COAP und TCP/IP und bietet einfache Konfigurationstools für Alarmfunktionen und Datenstatistikdienste auf Basis von JavaScript.

Offizielle Website: http://iot-dev-egi.pages.dev/

Repository-Adresse: https://github.com/iot-ecology/go-iot-platform

Wir suchen React-Entwicklungsingenieure; Ihre Teilnahme ist willkommen.

Ereignisbeschreibung

EMQX kann jederzeit Datenberichte der zweiten Ebene von vielen Geräten empfangen, dies entspricht jedoch möglicherweise nicht dem normalen Geschäftsprozess. Unter normalen Umständen kann ein Gerät beispielsweise alle 5 Minuten Daten melden. Um festzustellen, ob das meldende Gerät legitim ist, benötigen wir eine Methode, um zu erkennen, ob es sich bei dem Gerät möglicherweise um ein bösartiges Gerät handelt, das absichtlich häufig Daten meldet, um die Stabilität von EMQX zu beeinträchtigen.

Die Lösung der Go IoT-Entwicklungsplattform

Details zum physischen Gerät: In den Details zum physischen Gerät (DeviceInfo) gibt es zwei Schlüsselfelder: Push-Intervall (Sekunden) und Push-Zeitfehler (Sekunden). Mit diesen beiden Feldern können wir feststellen, ob das Meldeverhalten des Geräts abnormal ist, und mit der anschließenden logischen Verarbeitung fortfahren.

Berechnungsmethode

Um zu berechnen, ob die Melderate des Geräts innerhalb des Push-Intervalls und des Fehlers liegt und ob sie außerhalb des Fehlers liegt, müssen wir zunächst einige Variablen und Bedingungen definieren:

  1. Das Push-Intervall des Geräts wird als (T) (Sekunden) bezeichnet.
  2. Der Push-Zeitfehler des Geräts wird als ( E ) (Sekunden) bezeichnet.
  3. Das tatsächliche Push-Intervall des Geräts wird als ( T_{\text{actual}} ) (Sekunden) bezeichnet.

0. Berechnung des tatsächlichen Push-Intervalls

  1. First Push Timestamp: Der Zeitpunkt, zu dem das Gerät zum ersten Mal Daten übertragen hat ( T_{\text{1}} ).
  2. Zweiter Push-Zeitstempel: Der Zeitpunkt, zu dem das Gerät Daten zum zweiten Mal pushte ( T_{\text{2}} ).
  3. Tatsächliches Push-Intervall: ( T_{\text{actual}} = T_2 - T_1 )

1. Berechnung, ob innerhalb des Push-Intervalls und des Fehlers

Die Rate des Geräts gilt als innerhalb des Push-Intervalls liegend und es liegt ein Fehler vor, wenn das tatsächliche Push-Intervall ( T_{\text{actual}} ) die folgende Bedingung erfüllt:
[ T - E \leq T_{\text{aktuell}} \leq T E ]

2. Berechnung, ob ein externer Fehler vorliegt

Die Rate des Geräts gilt als außerhalb des Fehlers liegend, wenn das tatsächliche Push-Intervall ( T_{\text{actual}} ) die obige Bedingung nicht erfüllt, d. h.:
[ T_{\text{actual}} T E ]

Beispielrechnung

Annehmen:

  • Push-Intervall (T = 60) Sekunden
  • Push-Zeitfehler ( E = 5 ) Sekunden
  • Das Gerät hat die ersten Daten am 20. September 2024 um 10:00:00 Uhr gesendet (d. h. (T_1))
  • Das Gerät hat die zweiten Daten am 20. September 2024 um 10:01:05 Uhr gesendet (d. h. (T_2))

Berechnung von ( T_{\text{actual}} )

[ T_{\text{actual}} = (10:01:05 - 10:00:00) = 65 \text{ Sekunden} ]

Überprüfen Sie, ob innerhalb des Push-Intervalls und des Fehlers liegt:

[ 60 - 5 \leq 65 \leq 60 5 ]
[ 55 \leq 65 \leq 65 ]
Da ( 55 \leq 65 \leq 65 ) wahr ist, liegt die Rate des Geräts innerhalb des Push-Intervalls und des Fehlers.

Überprüfen Sie, ob ein externer Fehler vorliegt:

Da ( 65 ) nicht kleiner als ( 60 5 ) ist, liegt die Rate des Geräts nicht außerhalb des Fehlerbereichs.

Mit dieser Methode können Sie das tatsächliche Push-Intervall des Geräts genau berechnen und weiter analysieren, ob es den festgelegten Push-Intervall- und Fehlerregeln entspricht.

Problembehandlung

Mit der zuvor erwähnten Berechnungsmethode können wir feststellen, ob die gemeldeten Daten dem erwarteten Push-Intervall und Fehlerbereich entsprechen. Im Allgemeinen gelten Daten, die diesem Bereich entsprechen, als normal und müssen verarbeitet werden, während Daten außerhalb dieses Bereichs als abnormal angesehen werden können und verworfen werden sollten. In der Go IoT-Entwicklungsplattform werden wir für solche abnormalen Daten die folgenden Maßnahmen ergreifen:

  1. Daten verwerfen: Daten direkt verwerfen, die das Push-Intervall und den Fehlerbereich überschreiten. Wenn Sie Nachrichten in der Nachrichtenwarteschlange verbrauchen, bestätigen Sie diese Daten direkt, ohne sie dauerhaft zu speichern.

  2. Wartung durch EMQX-Serververwaltungstools

1. Schließen Sie Kunden über die Blacklist von EMQX aus

Mit der Blacklist-Funktion von EMQX können wir böswillige oder abnormal meldende Clients einschränken. Hier finden Sie eine detaillierte Analyse der Vor- und Nachteile der Deaktivierung von Objekten und ihrer Anwendungsfälle:

Deaktiviertes Objekt Vorteile Nachteile Anwendungsfälle
Kunden-ID - Hohe Präzision, kann bestimmte Clients direkt einschränken.
- Einfach zu implementieren, normalerweise ist die Client-ID eindeutig, einfach zu verwalten und zu verfolgen.
- Wenn der Kunde die ID ändert, muss er erneut zur Blacklist hinzugefügt werden.
- Ein Mechanismus ist erforderlich, um die Kunden-ID zu identifizieren und aufzuzeichnen.
- Geeignet für Szenarien, die eine präzise Steuerung einzelner Geräte oder Clients erfordern.
- Wenn es einfach ist, die MQTT-Client-ID des meldenden Geräts zu identifizieren und aufzuzeichnen.
Benutzername – Kann eine Gruppe von Geräten mit demselben Benutzernamen verwalten.
– Vereinfacht die Verwaltung einer Gruppe von Geräten.
– Nicht geeignet für Szenarien, die eine präzise Steuerung einzelner Geräte erfordern.
– Wenn Geräte einen Benutzernamen teilen, werden legitime Geräte möglicherweise fälschlicherweise eingeschränkt.
– Geeignet für Szenarien, in denen Geräte stapelweise oder nach Regeln dasselbe Kontokennwort verwenden.
– Wenn die Geräteverwaltung stärker zentralisiert ist und keine detaillierte Steuerung einzelner Geräte erforderlich ist.
IP-Adresse - Kann alle Anfragen von einer bestimmten IP-Adresse schnell einschränken.
- Einfach und effektiv für Geräte mit festen IP-Adressen.
– Nicht wirksam für dynamische IP-Adressen oder mobile Geräte.
– Kann andere legitime Geräte unter derselben IP fälschlicherweise einschränken.
– Geeignet für Szenarien, in denen Geräte feste IP-Adressen haben.
– Wenn Sie den Datenverkehr von einer bestimmten IP schnell einschränken müssen und es unter dieser IP keine anderen legitimen Geräte gibt.

Die oben genannten drei sollten zuerst die Client-ID priorisieren.

2. Schließen Sie Clients über die von EMQX bereitgestellte API-Schnittstelle aus

EMQX bietet eine API-Schnittstelle, die es Administratoren ermöglicht, bestimmte MQTT-Clients vom Server zu entfernen. Es ist zu beachten, dass der Client möglicherweise nicht vollständig entfernt wird, wenn der MQTT-Client einen Wiederverbindungsmechanismus implementiert hat.

Referenz: EMQX-Dokumentation – Client-Ausschluss

Freigabeerklärung Dieser Artikel wird unter: https://dev.to/beck_moulton/securing-iot-data-integrity-with-go-iot-platform-42gf?1 reproduziert.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3