Skip to content

chrihop/Secure_MAVLink_Gateway

Repository files navigation

Secure MAVLink Gateway

flowchart LR;
  src1([Legacy OS])
  src2([CEE-Enclave])
  src3([VM-Enclave])
  msg1(MAVLink Msg.)
  sp[(Security Policies)]
  pipeline[[Pipeline Routetable]]
  pipeline2[[Pipeline]]
  sink1([AutoPilot])
  sink2([Log])
  subgraph Source
    direction LR
    src1 --> pipeline
    src2 --> pipeline
    src3 --> pipeline
  end
  pipeline === msg1
  msg1 === pipeline2
  subgraph Sink
    direction LR
    pipeline2 --> sink1
    pipeline2 --> sink2
  end
  subgraph Verifier
    direction TB
    msg1 -.- sp
  end
Loading

Build

Prerequisites

Instructions

  1. Pull the repositories
git submodule update --init --recursive
  1. Create a build directory
mkdir build
cd build

cmake ..
  1. Create MAVLink header files:
make mavlink_headers
  1. Build the project:
make secure_gateway

Run

./secure_gateway

Test

Case 1 - reject all MEMINFO messages

flowchart LR;
  src1([Replay/UDP :12002])
  src2([Replay/UDP :12022])
  pipeline[[Secure Gateway]]
  sink0([Rejected/Log])
  sink1([Header/TCP :12011])
  src1 --> pipeline
  src2 --> pipeline
  pipeline --> sink1
  subgraph Gateway Internal
    direction TB
    pipeline --> sink0
  end
Loading
# build secure_gateway
# in terminal 1
./secure_gateway


mavproxy.py --master=tcp:localhost:12001


# in terminal 2, connect VMC header
cd test
./mavlink_msg_header.py --header tcp --port 12011

# in terminal 3, connect legacy replay
# note: `-n -1` means replay forever
cd test
./mavlink_msg_replay.py --adapter udp --udp 12002 -n -1

# in terminal 4, connect CEE replay
cd test
./mavlink_msg_replay.py --adapter udp --udp 12022 -n -1

About

Secure MAVLink Gateway

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published