FIRMWARE-
HÄRDNING
Hotet — kommandoinjektion
MAVLink-protokollet är öppen källkod. Paketformatet är publicerat. Vilken kompetent motståndare som helst kan bygga en MAVLink-sändare från en SDR och en laptop. Utan signering kan autopiloten inte skilja mellan ett kommando från den legitima operatören och ett kommando från fienden. Den mest skadliga attacken är inte att krascha drönaren — det är att sända ett tyst RTL-kommando (Return To Launch). Drönaren flyger lydigt tillbaka till fiendens koordinater som de satt som "hem"-position. Operatören ser drönaren lämna och kan inte stoppa den eftersom fiendens RTL-kommando åsidosätter operatörens inmatningar.
MAVLink-signering förhindrar detta: varje kommando inkluderar en SHA-256-hash beräknad med en 32-bytes hemlig nyckel. Autopiloten verifierar hashen innan den exekverar något kommando. Utan korrekt nyckel kasseras kommandot tyst. Fienden ser drönaren men kan inte kontrollera den. Nyckelgenerering: openssl rand -hex 32 producerar en 256-bits slumpmässig nyckel. Laddas via USB vid första anslutning. Nyckeln existerar enbart i operatörens USB-minne och drönarens volatila minne — den lagras aldrig i persistent flash.
Härdningsparameteruppsättning
BRD_SERIAL_SIGNING=1: aktiverar MAVLink-signering på alla serialportar. Varje inkommande MAVLink-kommando måste bära en giltig HMAC-signatur. Osignerade kommandon kasseras utan respons — angriparen får ingen indikation på att deras kommandon avvisas. Detta är den enskilt viktigaste härdningsparametern.
FS_THR_ENABLE=1: aktiverar gasfailsafe. Om radiolänken försvinner längre än FS_THR_VALUE sekunder exekverar drönaren FS_LONG_ACTN (standard: RTL vid 150 m AGL). Detta förhindrar flygflykt — en drönare som tappar länk utan failsafe fortsätter sitt senaste kommando obegränsat tills batteriet dör, potentiellt landandes i fiendens territorium med intakt elektronik och krypteringsnycklar.
GEO_FENCE_ENABLE=1 med GEO_FENCE_TYPE=7 (höjd plus cirkulärt plus polygon): skapar en virtuell gräns. Om drönaren korsar stängslet — genom pilotfel, vind eller kommandoinjektion — återvänder den automatiskt till startpunkten. GEO_FENCE_ALT_MAX=300 förhindrar drönaren från att stiga över 300 m AGL där den blir synlig för radar och luftvärnssystem.
AFS_ENABLE=1: Avancerad Failsafe. Tillhandahåller ytterligare terminingslogik för katastrofala fel — om alla navigeringskällor fallerar, om autopiloten detekterar hårdvarufel, om multipla failsafe-villkor utlöses simultant. AFS_TERM_ACTION=42 utlöser kontrollerad flygterminering: motorer stängs av, drönaren faller förutsägbart. Detta förhindrar att en okontrollerad drönare flyger in i egna positioner.
SERIAL3_PROTOCOL=-1, SERIAL4_PROTOCOL=-1, SERIAL5_PROTOCOL=-1: avaktiverar alla oanvända serialportar. Varje öppen serialport är en attackyta — en motståndare som får fysisk åtkomst till drönaren kan ansluta till en oanvänd UART och injicera kommandon förbi radiolagertkryptering. Att stänga oanvända portar eliminerar denna vektor.
Vad härdning inte skyddar mot
Fysisk tillfångatagande: om drönaren landar i fiendens territorium har de hårdvaran. Härdning skyddar inte mot fysisk isärtagning — det tillfångatagna drönarprotokollet (nycklar i RAM, LUKS-krypterat SD, inga persistenta hemligheter) hanterar detta separat. Spärrstörning: härdning säkrar kommandokanalen men kan inte övervinna en störsändare som blockerar alla radiofrekvenser — FHSS och CRPA adresserar störning. Kinetisk förstöring: ingen firmwareparameter skyddar mot en kula eller en luftvärnsrobot. Härdning är ett lager i en flerlagers försvarsarkitektur — det är nödvändigt men inte tillräckligt ensamt.
Härdningsverifieringschecklista
Efter att härdningsparametrarna applicerats, verifiera att varje tog effekt. Test 1 — Signering: från en andra markstation utan signeringsnyckeln, sänd ett MAVLink ARM-kommando. Förväntat resultat: drönaren ignorerar det. Om drönaren armeras: signering är inte aktiv. Test 2 — Geofence: flyg till geofencegränsen i SITL. Förväntat: drönaren återvänder automatiskt. Test 3 — Failsafe: koppla bort radiolänken. Förväntat: drönaren går in i RTL inom konfigurerad timeout. Test 4 — Portsökning: anslut en USB-serialadapter till UART3. Förväntat: inget MAVLink-svar (port avaktiverad). Dokumentera alla fyra testresultaten i drönarens underhållslogg. Upprepa efter varje firmwareuppdatering — parametrar kan återställas till standardvärden vid flashning.
Firmwarehärdning är grunden för drönarcybersäkerhet — utan den kringgås varje annan säkerhetsåtgärd på firmwarenivå. En drönare med krypterad MANET men ohärdad firmware accepterar osignerade MAVLink-kommandon genom vilken serialport som helst. Firmwarehärdning stänger dessa bakdörrar permanent. Firmwarekonfigurationen ska verifieras efter varje parameterändring och före varje deployering. Härdningsprocessen tar 15 minuter per drönare vid initial konfiguration och 5 minuter vid verifiering efter firmwareuppdatering. En erfaren tekniker kan härda ett helt kompani om 10 drönare på en eftermiddag — den mest kostnadseffektiva cybersäkerhetsåtgärden i hela drönarprogrammet.
← Ingår i Plutonsintegration
Implementering
# ArduPilot Security Hardening Checklist
HARDENING_PARAMS = {
# MAVLink signing — reject unsigned commands
"BRD_SERIAL_SIGNING": 1,
# Disable unused serial ports
"SERIAL3_PROTOCOL": -1, # Disabled
"SERIAL4_PROTOCOL": -1, # Disabled
"SERIAL5_PROTOCOL": -1, # Disabled
# Geofence — prevent flyaway
"GEO_FENCE_ENABLE": 1,
"GEO_FENCE_TYPE": 7, # Altitude + circle + polygon
"GEO_FENCE_ACTION": 1, # RTL on breach
"GEO_FENCE_ALT_MAX": 300, # Max 300m AGL
# Advanced failsafe
"AFS_ENABLE": 1,
"AFS_TERM_ACTION": 42, # Terminate flight on critical failure
# RC override protection
"RC_OVERRIDE_TIME": 0, # Disable RC override via MAVLink
}
# Apply all parameters
for param, value in HARDENING_PARAMS.items():
print(f"param set {param} {value}")
Relaterade kapitel
Källor
ArduPilot MAVLink-signeringsdokumentation. MAVLink 2.0-protokollspecifikation. ArduPilot failsafe-konfigurationsguide. FSG-A härdningsstandard v3.0.