MAVLink 2 message signing lets a drone or ground station check that a message comes from a holder of a shared secret key. A signed packet carries a 48-bit signature and a timestamp, and unsigned or badly signed packets can be rejected. It is optional, so a vehicle that does not enable it accepts whatever its rules allow.
What MAVLink is
MAVLink is a messaging protocol used between drones, other unmanned vehicles and their ground control software. Commands, telemetry and parameters travel over it, often across a radio link. Anyone who can send valid looking messages on that link can try to influence the vehicle.
How signing works
According to the MAVLink documentation, a signed packet sets an incompatibility flag and appends 13 bytes: an 8-bit link ID, a 48-bit timestamp and a 48-bit signature. The signature is the first 48 bits of a SHA-256 hash over the packet, the timestamp and a 32-byte secret key shared by both ends.
Timestamps must increase for each stream, and packets more than one minute behind the local timestamp are discarded. That limits replay, where an attacker records a valid message and sends it again later.
The caveats you need to read
The documentation is candid about the limits.
- Signing is optional. The page does not say it is on by default, so check your own stack.
- Unsigned packets are accepted under implementation-specific rules. Examples given include accepting unsigned packets over a secure USB or wired link.
- Systems may optionally accept incorrectly signed packets, and the page says this should come with a highly visible unsafe or insecure indication.
- The key is a shared secret, so anyone who has it can sign. It must be shared only over a secure link, never broadcast, and kept out of parameters and logs.
- Timestamps are only loosely tied to real time and may drift, especially on devices without a reliable time source.
- The common C and Python libraries support one key per link. That is a library choice, not a protocol limit.
What signing does not give you
It does not encrypt the traffic, so telemetry can still be read by anyone who can receive it. It does not give each operator a separate identity, because the key is shared. And it does not help if the ground station itself is compromised.
A practical checklist
- Turn signing on for every link that carries commands, and test that unsigned commands are rejected.
- Generate a unique key per vehicle, rather than one key for a fleet.
- Load keys over a wired or otherwise trusted connection.
- Strip keys and signatures from telemetry logs before you share them.
- Limit which unsigned message types you accept, and write down why.
- Treat the ground control software as part of the attack surface and keep its dependencies current.
Safeguard's dependency scanning can cover the software libraries in ground control tools you build or maintain. It does not assess radio links.
Quick check
Does message signing encrypt drone telemetry?
No. Signing lets a receiver verify the sender holds the key. It does not hide the content of messages.
Is signing on by default?
The MAVLink documentation does not say it is. Check your vehicle and ground station configuration.
Sources
Last reviewed: 19 October 2026.