콘텐츠로 건너뛰기
쿼드(QUAD) 드론연구소

쿼드(QUAD) 드론연구소

  • 👨‍✈️ 초보 파일럿
  • 🎖️ 개발자
  • 🥇 전문가
  • 💎 다이아몬드
  • 🛠️ Tech-Tip
  • 📝 블로그
  • ⚠️ 저작권
login
쿼드(QUAD) 드론연구소
쿼드(QUAD) 드론연구소

🕰️PX4와 ArduPilot의 개발 배경

4
  • ArduPilot 주요 개발자
  • ArduPilot
  • PX4 주요 개발자
  • PX4

📚드론 개발 라이브러리

10
  • 1.드론 개발자 로드맵(Load-Map)
  • 2.드론 개발 소프트웨어 개요
  • 3.MAVLINK
  • 4.PyMAVLink
  • 5.MavProxy
  • 6.MAVSDK
  • 7.MAVROS
  • 8.PX4 uORB with ROS 2
  • 9.자율주행드론 개발 프로세스
  • 10.학습 로드맵(Road-map)

🧩자율주행드론 시스템 아키텍처

4
  • Smart UAV is Robot!
  • PX4 System 아키텍쳐
  • PX4 Software 아키텍쳐
  • 쿼드(QUAD) 자율주행드론 UAV 시스템 아키텍처

🐧Linux (Ubuntu) 기초

14
  • Ubuntu 22.04 설치 (PC에 직접 설치)
  • Windows 10/11 WSL2 설치
  • Linux 개요
  • 리눅스 쉘 기본 명령어
  • 자주쓰는 명령어 정리 (Ubuntu 사용)
  • 자주 사용하는 터미널 명령어
  • Linux Package 에 대한 이해
  • su와 sudo 명령어 활용법
  • 리눅스 파일 시스템 이해하기
  • 리눅스 권한에 대한 이해
  • 빌드 시스템에 대한 이해
  • Make(Makefile) 사용 가이드
  • CMake 의 이해
  • CMake 사용 가이드

픽스호크(Pixhawk) 기초

29
  • 쿼드(QUAD) 자율주행 드론(UAV) 개발 키트
  • 픽스호크 드론의 기초 개요
  • 드론에 사용되는 물리학
  • 멀티콥터의 동작 원리
  • ArduPilot vs. PX4 선택
  • PX4 시스템 아키텍처
  • 지상국(Ground Control System) 선택
  • Pixhawk 6C 비행 컨트롤러
  • Pixhawk 6X 비행 컨트롤러
  • 드론에서 사용되는 센서간 통신제어 방식
  • Pixhawk 배선
  • Pixhawk 전원 공급
  • GPS/나침반
  • 거리 측정기 (LiDAR)
  • 고도(Altitude) 이해
  • 컴패니언 컴퓨터
  • 오프보드(Offboard) 제어
  • 컴패니언 컴퓨터 GPIO를 이용한 FC 제어
  • ESC(전자속도제어기)
    • ESC (전자속도제어기)
    • BLHeli32 및 BLHeli_S ESC
    • DShot ESC
    • DroneCAN ESC
    • PWM, OneShot 및 OneShot125 ESC
  • 무선제어시스템(Radio)
    • 무선 제어 시스템 (Radio)
    • 조종기/수신기
    • 수신기 RSSI 강도 표시
  • Telemetry 라디오
    • Telemetry 라디오
    • SiK Radio 설정
    • 다중 Point-to-Point 설정

Q250 사용 가이드

17
  • Q250 빠른 시작 가이드
  • QGroundControl 설치
  • Q250 펌웨어 재설치 (선택)
  • Q250 파라메터 설정
  • FS-i6x 조종기와 수신기 설정
  • 비행 모드
  • 전원 설정
  • Actuators (모터) 설정
  • Flight Behavior 설정
  • 텔레메트리 연결
  • GPS 연결
  • 컴패니언컴퓨터 전원 공급장치(UBEC) 사용 가이드
  • LED 컨트롤러 사용 가이드
  • 컴패니언 컴퓨터와 FC의 UART 케이블 연결
  • Optical-Flow & LiDAR 설정
  • 지자계 간섭 문제 해결
  • fake_gps (가상 GPS)

Q500 사용 가이드

10
  • Q500 사용 가이드 개요
  • QGroundControl 설치
  • Q500 펌웨어 설정
  • Q500 파라메터 설정
  • Radiomaster 조종기 설정
  • 수신기의 전파 수신 강도(RSSI) 설정
  • Pixhawk 6X Ethernet 설정
  • 컴패니언 컴퓨터와 FC 연결 설정
  • 시뮬레이터 사용 가이드
  • fake_gps (가상 GPS)

Q650 사용 가이드

9
  • Q650 사용 가이드 개요
  • QGroundControl 설치
  • Q650 펌웨어 설정
  • Q650 파라메터 설정
  • 조종기 설정
  • 수신기의 전파 수신 강도(RSSI) 설정
  • Pixhawk 6X Ethernet 설정
  • 컴패니언 컴퓨터와 FC 연결 설정
  • H-Flow 설정 가이드

첫 비행 및 튜닝

12
  • 첫 비행 및 튜닝 개요
  • 첫 비행 지침
  • 수동비행 지침
  • 임무 비행
  • 지오펜스
  • 안전지점(Rally Points)
  • 비행 모드
  • 지형 추적/유지
  • PID 튜닝
  • 비행 기록 분석
    • 비행 기록 분석
    • Flight Review를 이용한 로그 분석
    • 비행기록 분석 실습

PX4-Toolchain 개발환경 구성

4
  • Windows 10/11 WSL2 설치
  • ROS(1) + PX4 Toolchain 구성
  • Gazebo Classic 시뮬레이터 사용하기
  • ROS2 + PX4 Toolchain 구성

MAVLink-Python 프로그래밍

17
  • MAVLINK 개요
  • Python MAVLink 라이브러리 사용
  • 드론에 연결하기(Connect)
  • MAVLINK 메시지 주고받기
  • 비행 모드 (PX4 멀티콥터)
  • MAV_CMD
  • PX4 ‘OFFBOARD” 와 Ardupilot ‘GUIDED’ 모드 차이
  • PX4 Offboard 모드에서만 유효한 주요 MAV_CMD
  • 드론에 시동걸기(MAV_CMD_COMPONENT_ARM_DISARM)
  • 이륙하기(MAV_CMD_NAV_TAKEOFF)
  • 이동하기(SET_POSITION_TARGET_GLOBAL_INT)
  • 이동하기(SET_POSITION_TARGET_LOCAL_NED)
  • 기수 방향과 속도 변경
  • [별첨]참고 자료
  • MAVLINK 신뢰성 보장
    • MAVLINK 신뢰성 보장
    • MAVLINK 2 메시지 서명
    • [참고]HMAC-SHA256이란?

🛠️Tech-Tip

2
  • MAVLink Router
  • 쿼드(QUAD) 자율주행 드론용 컴패니언컴퓨터 소프트웨어 – Jetson Orin-Nano 용 (Ver.3.1-Ubuntu 22.04)
카테고리 보기
  • Home
  • Docs
  • MAVLink-Python 프로그래밍
  • MAVLINK 신뢰성 보장
  • MAVLINK 2 메시지 서명

MAVLINK 2 메시지 서명

2 min read

🔐 MAVLink 2 메시지 서명 개요

🎯 목적

  • 메시지가 실제로 신뢰된 송신자에게서 왔는지 인증
  • 메시지의 무결성 확인 (중간에 조작되지 않았는지 검증)
  • 재전송 공격(replay attack) 방지

[참고]

현재까지 PX4는 MAVLink 2의 메시지 서명(Message Signing) 기능을 공식적으로 지원하지 않습니다. 2021년에 MAVLink 서명 기능을 추가하려는 Pull Request가 제출되었지만, 아직까지 병합되지 않았습니다.

PX4 개발자들은 보안 강화를 위해 MAVLink 메시지에 서명 기능을 추가하는 것보다, 전송 계층에서의 암호화(예: VPN, TLS)를 통해 통신을 보호하는 것이 더 효과적이라고 판단하고 있습니다.​

따라서, PX4에서 MAVLink 메시지 서명 기능이 공식적으로 도입될 계획은 현재로서는 없는 것으로 보입니다.​

만약 MAVLink 메시지의 무결성과 인증을 보장하고자 한다면, 전송 계층에서의 보안 조치를 고려하시거나, ArduPilot과 같은 MAVLink 서명 기능을 지원하는 다른 비행 컨트롤러를 사용하는 것이 좋습니다.


✉️ 서명된 MAVLink 메시지 구성

MAVLink 2에서는 기본적인 메시지 포맷 뒤에 서명(Signature) 블록이 추가됩니다. 전체 패킷은 다음과 같이 구성됩니다:Copy

[Header][Payload][CRC][Signature]

서명(Signature) 블록 (13바이트)

바이트 수

필드 이름

설명

1

link_id

통신 채널 구분 ID (1~255)

6

timestamp

UNIX 시간의 하위 6바이트, 재전송 공격 방지

6

signature

HMAC-SHA256을 이용한 해시의 앞 6바이트

전체적으로는 13바이트의 추가 오버헤드가 생깁니다.


🧮 메시지 서명은 어떻게 동작하는가?

  1. 양쪽(드론 ↔ GCS)은 동일한 Secret Key (32바이트)를 공유하고 있어야 합니다.
  2. 메시지를 보낼 때, 다음을 기반으로 HMAC-SHA256 해시를 생성합니다:
    • 메시지 본문 전체 (Header + Payload + CRC)
    • timestamp + link_id
    • 공유된 Secret Key
  3. 이 해시값 중 앞 6바이트를 메시지 끝에 서명으로 추가합니다.
  4. 수신자는 동일한 방식으로 해시를 계산해 서명을 검증합니다.

✅ 활성화 조건 및 설정 방법

1. MAVLink 라이브러리에서 서명 활성화

Python pymavlink 기준:Copy

from pymavlink import mavutil

the_connection = mavutil.mavlink_connection(
    'udp:127.0.0.1:14550',
    source_system=255,
    use_message_signing=True,
    secret_key=b'\x01\x02...32바이트 키...',
    link_id=1
)

2. PX4 or ArduPilot에서 MAVLink 서명 활성화

  • PX4는 현재 MAVLink 서명을 지원하지 않음 (2025년 4월기준)
  • ArduPilot에서는 지원하며, 다음 파라미터들을 설정해야 합니다:
    • AUTH_TYPE = 2 → MAVLink 서명 사용
    • AUTH_KEY → 공유 비밀키 (GCS와 동일해야 함)
    • AUTH_OPTIONS → 비활성화/필수 여부 설정

🔁 Replay Attack 방지는 어떻게 하나요?

  • timestamp는 서명된 메시지마다 포함되며,
  • 수신자는 이전에 본 timestamp보다 과거의 메시지는 무효화합니다.
  • 이로 인해 과거에 캡처한 명령 메시지를 재전송하는 공격이 막힘.

🧪 메시지 서명 적용 시 주의사항

항목

설명

💡 비밀키 공유

송신자와 수신자 모두 같은 32바이트 키를 사용해야 합니다.

🧭 시간 동기화

timestamp 검증을 위해 어느 정도 시간 동기화가 필요합니다.

📶 네트워크 지연

지연이 큰 네트워크에서는 timestamp로 인해 false negative 발생 가능

🚫 지원 제한

일부 지상국(GCS) 도구에서는 아직 MAVLink 서명 미지원 (예: QGroundControl)

업데이트된 날짜 2025년 12월 08일

당신의 감정은 어떤가요?

  • Happy
  • 보통
  • 슬픈

이 문서 공유 :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

제공 BetterDocs

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

© 2025 쿼드(QUAD) 드론연구소 - Kadence WP의 워드프레스 테마

  • 👨‍✈️ 초보 파일럿
  • 🎖️ 개발자
  • 🥇 전문가
  • 💎 다이아몬드
  • 🛠️ Tech-Tip
  • 📝 블로그
  • ⚠️ 저작권
Korean
English