"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go IoT 플랫폼으로 IoT 데이터 무결성 확보

Go IoT 플랫폼으로 IoT 데이터 무결성 확보

2024-11-08에 게시됨
검색:618

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)에는 푸시 간격(초) 및 푸시 시간 오류(초)라는 두 가지 주요 필드가 있습니다. 이 두 필드를 통해 기기의 보고 동작이 비정상적인지 여부를 판단하고 후속 논리적 처리를 진행할 수 있습니다.

계산방법

기기의 보고 속도가 푸시 간격 및 오류 내에 있는지 여부와 오류 범위를 벗어나는지 여부를 계산하려면 먼저 몇 가지 변수와 조건을 정의해야 합니다.

  1. 장치의 푸시 간격은 ( T )(초)로 표시됩니다.
  2. 기기의 푸시 시간 오류는 ( E )(초)로 표시됩니다.
  3. 기기의 실제 푸시 간격은 ( T_{\text{actual}} )(초)로 표시됩니다.

0. 실제 푸시 간격 계산

  1. 첫 번째 푸시 타임스탬프: 장치가 처음으로 데이터를 푸시한 시간( T_{\text{1}} ).
  2. 두 번째 푸시 타임스탬프: 장치가 두 번째로 데이터를 푸시한 시간( T_{\text{2}} ).
  3. 실제 푸시 간격: ( T_{\text{actual}} = T_2 - T_1 )

1. 푸시 간격 이내 여부 및 오류 계산

실제 푸시 간격( T_{\text{actual}} )이 다음 조건을 충족하는 경우 장치의 속도는 푸시 간격 및 오류 내에 있는 것으로 간주됩니다.
[ T - E \leq T_{\text{실제}} \leq T E ]

2. 외부오류 여부 계산

실제 푸시 간격( T_{\text{actual}} )이 위 조건을 충족하지 않는 경우 장치의 속도는 오류를 벗어난 것으로 간주됩니다. 즉:
[ T_{\text{실제}} T E ]

계산 예

추정하다:

  • 푸시 간격( T = 60 )초
  • 푸시 시간 오류( E = 5 )초
  • 기기가 2024년 9월 20일 10:00:00에 첫 번째 데이터를 전송했습니다(예: ( T_1 ))
  • 기기에서 2024년 9월 20일 10시 1분 5초에 두 번째 데이터를 전송했습니다. (예: ( 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 개발 플랫폼에서는 이러한 비정상적인 데이터에 대해 다음과 같은 조치를 취합니다.

  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에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다. 그것
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3