Module 2/5 · Weeks 4–6 · 27 h

GNSS and link attacks

UAT 367 Cybersecurity, Command and Control Links and Unmanned Aircraft Systems Traffic Management

About 90 minDraft, awaiting reviewLast updated 27 September 2026

Lesson

By the end of this module you will be able to

  1. Compute the jamming-to-signal ratio (J/S) from transmit power and free-space loss
  2. Explain GNSS spoofing and gradual capture of an aircraft
  3. Detect GNSS anomalies by comparing with dead reckoning
  4. Choose countermeasures such as multiple constellations, OSNMA and sensor consistency checks

Prerequisites: UAT 367 Module 1 · UAT 312 Module 4 (link budget and free-space loss)

Why this matters

GPS signals reaching the ground are extremely weak. IS-GPS-200N specifies a minimum received power of −158.5 dBW, or −128.5 dBm, for the L1 C/A signal, below the background noise level. Receivers need processing gain to pull the signal out. A transmitter of just a few milliwatts can drown it over a wide area, and anyone who can transmit a convincing imitation can deceive the drone about its position. A medical delivery route passing over communities needs to know what can happen and how to detect it.

Law and safety

Transmitting jamming or spoofing signals over the air breaks spectrum law and endangers other aircraft. Every experiment in this course is done in simulation or on recorded data only (the drone knowledge base’s GNSS unit stresses the same point).

Jamming

Jamming means transmitting energy in the same band until the receiver can no longer separate the signal. The metric is J/S, the jammer power relative to the wanted signal (dB). When J/S exceeds what the receiver tolerates, it loses track of the satellites. That tolerance depends on the receiver model, antenna and protection techniques, so it must come from manufacturer documentation or authorised laboratory testing.

Free-space path loss, following ITU-R P.525, increases by 6 dB every time the distance doubles.

Example 1 Radius in which a 10 mW jammer denies GPS

Assume the jammer transmits 10 dBm (10 mW) omnidirectionally, both antennas are 0 dBi, there are no obstructions, and the receiver tolerates J/S up to 40 dB (an assumed value).

import math

F_L1 = 1575.42e6     # Hz
S_GPS = -128.5       # dBm minimum L1 C/A received power per IS-GPS-200N
P_JAM = 10.0         # dBm (10 mW) omnidirectional
JS_LIMIT = 40.0      # dB assumed receiver tolerance

def fspl_db(d_m):
    return 20 * math.log10(d_m) + 20 * math.log10(F_L1) - 147.55

for d in (100, 500, 1000, 2000, 5000):
    js = P_JAM - fspl_db(d) - S_GPS
    print(f"{d:>5} m: J/S {js:5.1f} dB  {'lost' if js > JS_LIMIT else 'tracking'}")
radius = 10 ** ((P_JAM - S_GPS - JS_LIMIT - (20 * math.log10(F_L1) - 147.55)) / 20)
print(f"radius where J/S reaches {JS_LIMIT:.0f} dB: {radius:,.0f} m")
  100 m: J/S  62.1 dB  lost
  500 m: J/S  48.1 dB  lost
 1000 m: J/S  42.1 dB  lost
 2000 m: J/S  36.1 dB  tracking
 5000 m: J/S  28.1 dB  tracking
radius where J/S reaches 40 dB: 1,274 m

Under this model, a small handheld device can deny position to a drone over more than a kilometre. In reality it depends on terrain, antenna direction and obstructions. The diagram below shows J/S falling in a straight line on a logarithmic scale.

Graph of J/S in decibels against distance from the jammer, 100 to 5000 metres on a logarithmic scale. A pink line falls from about 62 dB at 100 metres to about 28 dB at 5000 metres. A grey dashed horizontal line at 40 dB is the assumed limit, crossing at about 1,274 metres
Figure 1 Jamming-to-signal ratio against distance

C2 links can be jammed on the same principle, except that C2 signals are much stronger than GNSS. The effect of C2 jamming is a lost link, which needs the lost-link procedures of UAT 312 and Module 3.

Spoofing

Spoofing means transmitting signals that look like real satellites so the receiver computes the wrong position or time. Humphreys et al. (2008) built a portable spoofer that starts by matching the real signals and then drags the solution away gradually, so the receiver sees no sudden jump. Kerns et al. (2014) extended this to capturing drones, analysing the conditions under which a spoofer can dictate the drone’s position and velocity estimates; in a field test they caused a small rotorcraft to lose its way and crash.

Covert capture is more dangerous than jamming, because the drone still believes it knows where it is and never enters a failsafe mode.

Detection by sensor consistency

The core idea is to compare GNSS with a source the spoofer cannot reach, such as dead reckoning (DR) from the IMU, air data or visual odometry. If the difference exceeds what DR error can explain, GNSS is suspect. Groves (2013) describes this as consistency checking in multisensor navigation.

Example 2 Catching a spoofer that drags the position slowly

DR drifts 0.05 m/s to the east. Spoofing starts at 20 s and drags the position north with an acceleration of 0.02 m/s². An alarm is raised when the residual exceeds 5 m.

import math

DR_DRIFT = 0.05                    # m/s dead-reckoning drift
SPOOF_START, SPOOF_ACC = 20, 0.02  # s, m/s² covert position drag
LIMIT = 5.0                        # m alarm threshold

for t in range(0, 61):
    dr_err = DR_DRIFT * t
    offset = 0.5 * SPOOF_ACC * (t - SPOOF_START) ** 2 if t > SPOOF_START else 0.0
    residual = math.hypot(dr_err, offset)
    if residual > LIMIT:
        print(f"ALARM at t = {t} s: residual {residual:.2f} m, position already dragged {offset:.2f} m")
        break
    if t % 10 == 0:
        print(f"t = {t:>2} s: residual {residual:.2f} m (spoofed offset {offset:.2f} m)")
t =  0 s: residual 0.00 m (spoofed offset 0.00 m)
t = 10 s: residual 0.50 m (spoofed offset 0.00 m)
t = 20 s: residual 1.00 m (spoofed offset 0.00 m)
t = 30 s: residual 1.80 m (spoofed offset 1.00 m)
t = 40 s: residual 4.47 m (spoofed offset 4.00 m)
ALARM at t = 42 s: residual 5.28 m, position already dragged 4.84 m

The system catches it 22 seconds after spoofing starts, by which time the position has been dragged almost 5 m. A lower threshold detects sooner but raises more false alarms, because DR drifts on its own. The threshold must be chosen from real flight data for that drone model.

Graph of distance against time from 0 to 60 seconds. A solid blue line, the GNSS minus dead-reckoning residual, rises slowly until 20 seconds and then steeply. A pink dashed line, the spoofed offset, starts at zero at 20 seconds and curves upward. A grey dashed horizontal line at 5 metres is the limit. A blue dot at 42 seconds marks the alarm
Figure 2 Detecting a spoofer that slowly drags the position

Countermeasures

  • Multiple constellations and frequencies make it harder to spoof or jam every signal at once.
  • Navigation message authentication, such as Galileo OSNMA, whose Initial Service the European Commission declared on 24 July 2025, lets a receiver check that navigation data really comes from the system. It does not prevent jamming.
  • Sensor consistency checks, as in Example 2, plus checks for impossible values such as speed beyond the drone’s performance.
  • Antennas and mounting that reduce reception from near the horizon, the direction ground-based jammers transmit from.
  • Procedures when GNSS is unusable, such as hovering or flying on another navigation source to a safe point, tested in SITL first.

Module lab

Lab: simulating and detecting GNSS anomalies

  1. Use the code from Example 1 with several transmit powers and J/S limits, and map the radius against the delivery route.
  2. In SITL, simulate GNSS loss following the PX4 or ArduPilot guide; observe the mode changes and record the log.
  3. Use real flight logs without attacks to measure DR error, then choose a new threshold for the code from Example 2.
  4. Create a dragged position in a log file (no real transmission) and test how many seconds it takes to detect.
  5. Write a proposed GNSS-anomaly procedure for the medical delivery route.

Common mistakes

Watch out

  • Testing jamming or spoofing in the open air.
  • Treating the satellite count as proof that the position is right.
  • Setting a detection threshold without looking at real DR error.
  • Believing OSNMA prevents jamming.
  • Having no procedure for when GNSS is unusable.

Summary

  • The GPS L1 C/A signal can be as weak as −128.5 dBm, so low-power jammers work over wide areas.
  • J/S follows from transmit power, path loss and the wanted signal power.
  • Gradual spoofing can capture a drone without triggering a failsafe.
  • Comparing with DR and other sensors helps detection, but thresholds must come from real data.

Check your understanding

  1. When distance increases from 500 m to 1,000 m, how many dB does free-space loss increase?
  2. The jamming signal arrives at −90 dBm and the GPS signal at −128.5 dBm. What is J/S?
  3. Why is gradual spoofing harder to detect than a jump?
  4. What does OSNMA help with, and what does it not help with?
  5. What are the pros and cons of lowering the residual threshold from 5 m to 2 m?
Answers
  1. dB
  2. dB
  3. The residual grows slowly, close to normal DR error, with no jump to notice.
  4. It confirms that navigation data really comes from Galileo; it does not help when jamming prevents reception.
  5. Detection is faster, but false alarms become more frequent because DR drifts on its own.

Key formulas

Free-space path loss
Jamming-to-signal ratio
GNSS versus dead-reckoning residual

Key references

  1. Space Systems Command. (2022). IS-GPS-200N: NAVSTAR GPS space segment/navigation user segment interfaces. link
  2. International Telecommunication Union. (2024). Calculation of free-space attenuation (Recommendation ITU-R P.525-5). link
  3. Humphreys, T. E., Ledvina, B. M., Psiaki, M. L., O'Hanlon, B. W., & Kintner, P. M., Jr. (2008). Assessing the spoofing threat: Development of a portable GPS civilian spoofer. In Proceedings of ION GNSS 2008 (pp. 2314–2325). Institute of Navigation. link
  4. Kerns, A. J., Shepard, D. P., Bhatti, J. A., & Humphreys, T. E. (2014). Unmanned aircraft capture and control via GPS spoofing. Journal of Field Robotics, 31(4), 617–636. link
  5. European Union Agency for the Space Programme. Galileo Open Service Navigation Message Authentication (OSNMA). link
  6. Groves, P. D. (2013). Principles of GNSS, inertial, and multisensor integrated navigation systems (2nd ed.). Artech House. link

Further reading

Study the assigned knowledge units in advance, review media and take the module quiz

In class / field

Intensive lab and field practice recorded in a lab notebook

Learning evidence: Lab notebook signed by the instructor

Module quiz

This is a formative self-check, not a graded exam

Knowledge domain: Cybersecurity and UAS traffic management · Control, autopilot and navigation · Mission planning, flight and simulation