「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go IoT プラットフォームで IoT データの整合性を確保

Go IoT プラットフォームで IoT データの整合性を確保

2024 年 11 月 8 日に公開
ブラウズ:954

Securing IoT Data Integrity with Go IoT Platform

翻訳:

Go IoT 開発プラットフォームは、Go プログラミング言語を使用して開発された、無料で効率的かつスケーラブルなモノのインターネット (IoT) ソリューションです。このプラットフォームは、MQTT、HTTP、WebSocket、COAP、TCP/IP などのデータ送信プロトコルをサポートし、JavaScript に基づくアラーム機能やデータ統計サービス用の軽量構成ツールを提供します。

公式ウェブサイト:http://iot-dev-egi.pages.dev/

リポジトリアドレス: https://github.com/iot-ecology/go-iot-platform

React開発エンジニアを募集しています。あなたの参加を歓迎します。

イベントの説明

EMQX は、いつでも多くのデバイスから第 2 レベルのデータ レポートを受信できますが、これは通常のビジネス プロセスに準拠していない可能性があります。たとえば、通常の状況では、デバイスは 5 分ごとにデータを報告することがあります。報告デバイスが正規かどうかを識別するには、EMQX の安定性に影響を与えるためにデータを意図的に頻繁に報告する悪意のあるデバイスである可能性があるかどうかを検出する方法が必要です。

Go IoT 開発プラットフォームのソリューション

物理デバイスの詳細: 物理デバイスの詳細 (DeviceInfo) には、プッシュ間隔 (秒) とプッシュ時間エラー (秒) という 2 つのキー フィールドがあります。これら 2 つのフィールドを使用すると、デバイスのレポート動作が異常かどうかを判断し、その後の論理処理を続行できます。

計算方法

デバイスのレポート レートがプッシュ間隔とエラーの範囲内であるかどうか、およびエラーの範囲外であるかどうかを計算するには、まずいくつかの変数と条件を定義する必要があります。

  1. デバイスのプッシュ間隔は ( T ) (秒) で示されます。
  2. デバイスのプッシュ時間エラーは ( E ) (秒) で示されます。
  3. デバイスの実際のプッシュ間隔は、( T_{\text{actual}} ) (秒) で示されます。

0. 実際の押し間隔の計算

  1. 初回プッシュ タイムスタンプ: デバイスが最初にデータをプッシュした時刻 ( T_{\text{1}} )。
  2. 2 回目のプッシュ タイムスタンプ: デバイスが 2 回目にデータをプッシュした時刻 ( T_{\text{2}} )。
  3. 実際のプッシュ間隔: ( T_{\text{実際の}} = T_2 - T_1 )

1. プッシュ間隔内か否かの計算と誤差

実際のプッシュ間隔 ( T_{\text{actual}} ) が次の条件を満たす場合、デバイスのレートはプッシュ間隔内にあるとみなされ、エラーになります:
[ T - E \leq T_{\text{実際の}} \leq T E ]

2. 外部誤差かどうかの計算

実際のプッシュ間隔 ( T_{\text{actual}} ) が上記の条件を満たさない場合、デバイスのレートはエラーの範囲外であるとみなされます。つまり:
[ T_{\text{actual}} T E ]

計算例

仮定する:

  • プッシュ間隔 ( T = 60 ) 秒
  • プッシュ時間エラー ( E = 5 ) 秒
  • デバイスは、2024 年 9 月 20 日の 10:00:00 に最初のデータを送信しました (つまり ( T_1 ))
  • デバイスは 2024 年 9 月 20 日の 10:01:05 に 2 番目のデータを送信しました (つまり ( T_2 ))

( T_{\text{actual}} ) の計算

[ T_{\text{実際の}} = (10:01:05 - 10:00:00) = 65 \text{ 秒} ]

プッシュ間隔内かどうかとエラーを確認します。

[ 60 - 5 \leq 65 \leq 60 5 ]
[ 55 \leq 65 \leq 65 ]
( 55 \leq 65 \leq 65 ) が成り立つため、デバイスのレートはプッシュ間隔と誤差の範囲内にあります。

外部エラーかどうかを確認します。

( 65 ) は ( 60 5 ) より小さくないため、デバイスのレートは誤差の範囲外ではありません。

この方法により、デバイスの実際のプッシュ間隔を正確に計算し、設定されたプッシュ間隔とエラー ルールに準拠しているかどうかをさらに分析できます。

問題の処理

前述の計算方法により、報告されたデータが予想されるプッシュ間隔と誤差範囲に適合しているかどうかを判断できます。一般に、この範囲に適合するデータは正常とみなされ、処理する必要がありますが、この範囲を超えるデータは異常とみなされ、破棄される必要があります。 Go IoT Development Platformでは、このような異常なデータに対して、以下のような対策を講じます。

  1. データ破棄:プッシュ間隔やエラー範囲を超えたデータを直接破棄します。メッセージ キュー内のメッセージを消費するときは、永続的なストレージを使用せずにこれらのデータを直接 ACK (肯定応答) します。

  2. EMQX サーバー管理ツールによるメンテナンス

1. EMQX のブラックリストを通じてクライアントを除外する

EMQX のブラックリスト機能を使用すると、悪意のあるクライアントまたは異常なレポート クライアントを制限できます。ここでは、オブジェクトを無効にすることの長所と短所、およびその使用例の詳細な分析を示します:

無効なオブジェクト 利点 デメリット ユースケース
クライアントID - 高精度で、特定のクライアントを直接制限できます。
- 実装が簡単です。通常、クライアント ID は一意で、管理と追跡が簡単です。
- クライアントが ID を変更した場合、ブラックリストに再度追加する必要があります。
- クライアント ID を識別して記録するメカニズムが必要です。
- 個々のデバイスまたはクライアントの正確な制御が必要なシナリオに適しています。
- レポート デバイスの MQTT クライアント ID の識別と記録が簡単な場合。
ユーザー名 - 同じユーザー名を使用してデバイスのグループを管理できます。
- デバイスのグループの管理が簡素化されます。
- 個々のデバイスを正確に制御する必要があるシナリオには適していません。
- デバイスがユーザー名を共有している場合、正規のデバイスが誤って制限される可能性があります。
- デバイスが同じアカウントのパスワードをバッチまたはルールに従って使用するシナリオに適しています。
- デバイス管理がより集中化され、個々のデバイスのきめ細かい制御が必要ない場合。
IPアドレス - 特定の IP アドレスからのすべてのリクエストをすばやく制限できます。
- 固定 IP アドレスを持つデバイスに対してシンプルで効果的です。
- 動的 IP またはモバイル デバイスには効果がありません。
- 同じ IP の下にある他の正当なデバイスを誤って制限する可能性があります。
- デバイスが固定 IP アドレスを持つシナリオに適しています。
- 特定の IP からのトラフィックを迅速に制限する必要があり、その IP の下に他の正当なデバイスがない場合。

上記 3 つはクライアント ID を最初に優先する必要があります。

2. EMQX が提供する API インターフェイスを介してクライアントを除外する

EMQX は、管理者がサーバーから特定の MQTT クライアントを削除できる API インターフェイスを提供します。 MQTT クライアントが再接続メカニズムを実装している場合、それを削除するだけではクライアントが完全に削除されない可能性があることに注意してください。

参照: EMQX ドキュメント - クライアントの除外

リリースステートメント この記事は次の場所に転載されています: https://dev.to/beck_moulton/securing-iot-data-integrity-with-go-iot-platform-42gf?1 侵害がある場合は、[email protected] に連絡して削除してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3