โมดูล 2/5 · สัปดาห์ 4–6 · 27 ชม.

การโจมตี GNSS และลิงก์

UAT 367 ความมั่นคงไซเบอร์ ระบบเชื่อมโยงการบัญชาการและควบคุม และการจัดการจราจรระบบอากาศยานไร้คนขับ

เวลาเรียนประมาณ 90 นาทีร่าง รอตรวจปรับปรุงล่าสุด 27 กันยายน 2569

บทเรียน

เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ

  1. คำนวณอัตราส่วนสัญญาณรบกวนต่อสัญญาณ (J/S) จากกำลังส่งและการสูญเสียในอวกาศอิสระ
  2. อธิบายการปลอมสัญญาณ GNSS และการยึดอากาศยานแบบค่อยเป็นค่อยไป
  3. ตรวจจับความผิดปกติของ GNSS ด้วยการเทียบกับ dead reckoning
  4. เลือกมาตรการป้องกัน เช่น หลายระบบดาวเทียม OSNMA และการตรวจความสอดคล้องของเซนเซอร์

ความรู้พื้นฐานที่ควรมี: UAT 367 โมดูล 1 · UAT 312 โมดูล 4 (link budget และ free-space loss)

ทำไมต้องรู้

สัญญาณ GPS ที่มาถึงพื้นโลกอ่อนมาก เอกสาร IS-GPS-200N กำหนดกำลังรับต่ำสุดของสัญญาณ L1 C/A ไว้ที่ −158.5 dBW หรือ −128.5 dBm ต่ำกว่าระดับสัญญาณรบกวนพื้นหลังเสียอีก ตัวรับจึงต้องใช้เทคนิคประมวลผลเพื่อดึงสัญญาณขึ้นมา เครื่องส่งกำลังต่ำเพียงไม่กี่มิลลิวัตต์ก็กลบสัญญาณได้ในรัศมีกว้าง และผู้ที่ส่งสัญญาณเลียนแบบได้ก็หลอกตำแหน่งของโดรนได้ เส้นทางส่งเวชภัณฑ์ที่บินผ่านชุมชนจึงต้องรู้ว่าอะไรเกิดขึ้นได้และตรวจจับอย่างไร

กฎหมายและความปลอดภัย

การส่งสัญญาณรบกวนหรือปลอมสัญญาณ GNSS ในอากาศเปิดผิดกฎหมายการใช้คลื่นความถี่และเป็นอันตรายต่ออากาศยานอื่น ทุกการทดลองในวิชานี้ทำในแบบจำลองหรือข้อมูลบันทึกเท่านั้น (หน่วยความรู้เรื่อง GNSS ของคลังความรู้โดรนย้ำเรื่องนี้ไว้เช่นกัน)

การรบกวนสัญญาณ (jamming)

การรบกวน คือการส่งพลังงานในย่านความถี่เดียวกันจนตัวรับแยกสัญญาณไม่ออก ตัวชี้วัดคือ J/S กำลังของสัญญาณรบกวนเทียบกับสัญญาณที่ต้องการ (dB) เมื่อ J/S สูงเกินที่ตัวรับทนได้ ตัวรับจะเสียการติดตามดาวเทียม ค่าที่ทนได้ขึ้นกับรุ่นตัวรับ สายอากาศ และเทคนิคป้องกัน จึงต้องหาจากเอกสารผู้ผลิตหรือการทดสอบในห้องปฏิบัติการที่ได้รับอนุญาต

การสูญเสียในอวกาศอิสระ (free-space path loss) ตามคำแนะนำ ITU-R P.525 เพิ่มขึ้น 6 dB ทุกครั้งที่ระยะเพิ่มเป็นสองเท่า

ตัวอย่างที่ 1 รัศมีที่เครื่องรบกวน 10 mW ทำให้ GPS ใช้ไม่ได้

สมมติเครื่องรบกวนส่ง 10 dBm (10 mW) แบบรอบทิศ สายอากาศทั้งสองฝั่ง 0 dBi ไม่มีสิ่งกีดขวาง และตัวรับทน J/S ได้ไม่เกิน 40 dB (ค่าสมมติ)

import math

F_L1 = 1575.42e6     # Hz
S_GPS = -128.5       # dBm กำลังรับต่ำสุด L1 C/A ตาม IS-GPS-200N
P_JAM = 10.0         # dBm (10 mW) แบบรอบทิศ
JS_LIMIT = 40.0      # dB ค่าสมมติของตัวรับ

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

เครื่องเล็กขนาดพกพาทำให้โดรนเสียตำแหน่งได้ในรัศมีกว่าหนึ่งกิโลเมตรตามแบบจำลองนี้ ของจริงขึ้นกับภูมิประเทศ ทิศของสายอากาศ และสิ่งบดบัง แผนภาพด้านล่างแสดงว่า J/S ลดลงตามระยะแบบเส้นตรงบนสเกลลอการิทึม

กราฟ J/S เป็นเดซิเบลตามระยะจากเครื่องรบกวน 100 ถึง 5000 เมตรบนสเกลลอการิทึม เส้นสีชมพูลดจากราว 62 dB ที่ 100 เมตรเหลือราว 28 dB ที่ 5000 เมตร เส้นประสีเทาแนวนอนที่ 40 dB คือเกณฑ์สมมติ จุดตัดที่ราว 1,274 เมตร
ภาพที่ 1 อัตราส่วนสัญญาณรบกวนต่อสัญญาณ GPS ตามระยะ

ลิงก์ C2 ก็ถูกรบกวนได้ด้วยหลักเดียวกัน ต่างกันที่สัญญาณ C2 แรงกว่า GNSS มาก ผลของการรบกวน C2 คือลิงก์ขาด ซึ่งต้องมีขั้นตอนเมื่อ C2 ขาดตาม UAT 312 และโมดูล 3

การปลอมสัญญาณ (spoofing)

การปลอมสัญญาณ คือการส่งสัญญาณที่เหมือนดาวเทียมจริงเพื่อให้ตัวรับคำนวณตำแหน่งหรือเวลาผิด Humphreys และคณะ (2008) สร้างเครื่องปลอมสัญญาณแบบพกพาที่เริ่มจากสัญญาณที่ตรงกับของจริง แล้วค่อย ๆ ลากออกไป ตัวรับจึงไม่สังเกตเห็นการเปลี่ยนแปลงแบบกระโดด Kerns และคณะ (2014) ต่อยอดเป็นการยึดโดรน โดยวิเคราะห์เงื่อนไขที่ผู้ปลอมกำหนดค่าตำแหน่งและความเร็วที่โดรนประมาณได้ และในการทดสอบภาคสนามทำให้โดรนเฮลิคอปเตอร์ขนาดเล็กหลงทางจนตก

การยึดแบบแนบเนียนน่ากลัวกว่าการรบกวน เพราะโดรนยังคิดว่าตัวเองรู้ตำแหน่ง ไม่เข้าสู่โหมดปลอดภัย

ตรวจจับด้วยความสอดคล้องของเซนเซอร์

แนวคิดหลักคือเทียบ GNSS กับแหล่งที่ผู้ปลอมเข้าไม่ถึง เช่น dead reckoning (DR) จาก IMU ความเร็วลม หรือ visual odometry ถ้าผลต่างสูงเกินที่ความคลาดของ DR อธิบายได้ แปลว่า GNSS ผิดปกติ ตำราของ Groves (2013) เรียกการตรวจนี้ว่าการตรวจความสอดคล้องของระบบนำทางหลายเซนเซอร์

ตัวอย่างที่ 2 จับการปลอมที่ค่อย ๆ ลากตำแหน่ง

DR คลาดสะสม 0.05 m/s ไปทางตะวันออก การปลอมเริ่มวินาทีที่ 20 ลากตำแหน่งไปทางเหนือด้วยความเร่ง 0.02 m/s² แจ้งเตือนเมื่อผลต่างเกิน 5 m

import math

DR_DRIFT = 0.05                    # m/s ความคลาดสะสมของ dead reckoning
SPOOF_START, SPOOF_ACC = 20, 0.02  # s, m/s² การลากตำแหน่งแบบแนบเนียน
LIMIT = 5.0                        # m เกณฑ์แจ้งเตือน

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

ระบบจับได้หลังการปลอมเริ่ม 22 วินาที ตอนนั้นตำแหน่งถูกลากไปเกือบ 5 m แล้ว เกณฑ์ที่ต่ำลงจับได้เร็วขึ้นแต่แจ้งเตือนผิดบ่อยขึ้น เพราะ DR เองก็คลาด การเลือกเกณฑ์จึงต้องใช้ข้อมูลบินจริงของโดรนรุ่นนั้น

กราฟระยะตามเวลา 0 ถึง 60 วินาที เส้นทึบสีฟ้าคือส่วนต่างระหว่าง GNSS กับ dead reckoning ค่อย ๆ เพิ่มจนถึงวินาทีที่ 20 แล้วชันขึ้น เส้นประสีชมพูคือระยะที่ถูกลากเริ่มจากศูนย์ที่วินาทีที่ 20 แล้วโค้งขึ้น เส้นประสีเทาแนวนอนที่ 5 เมตรคือเกณฑ์ จุดสีฟ้าที่ 42 วินาทีคือเวลาแจ้งเตือน
ภาพที่ 2 การตรวจจับการปลอมสัญญาณที่ค่อย ๆ ลากตำแหน่ง

มาตรการป้องกัน

  • หลายระบบดาวเทียมและหลายความถี่ ทำให้ปลอมหรือรบกวนทุกสัญญาณพร้อมกันยากขึ้น
  • การยืนยันความแท้ของข้อความนำทาง เช่น Galileo OSNMA ที่คณะกรรมาธิการยุโรปประกาศบริการขั้นต้นเมื่อ 24 กรกฎาคม 2025 ให้ตัวรับตรวจว่าข้อมูลนำทางมาจากระบบจริง แต่ไม่ได้กันการรบกวน
  • ตรวจความสอดคล้องของเซนเซอร์ ตามตัวอย่างที่ 2 และตรวจค่าที่เป็นไปไม่ได้ เช่น ความเร็วเกินสมรรถนะของโดรน
  • สายอากาศและตำแหน่งติดตั้ง ที่ลดการรับสัญญาณจากแนวราบ ซึ่งเป็นทิศที่เครื่องรบกวนภาคพื้นส่งมา
  • ขั้นตอนเมื่อ GNSS ใช้ไม่ได้ เช่น ลอยค้างหรือบินด้วยแหล่งนำทางอื่นไปยังจุดปลอดภัย ทดสอบใน SITL ก่อน

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: จำลองและตรวจจับความผิดปกติของ GNSS

  1. ใช้โค้ดตัวอย่างที่ 1 ทดลองกำลังส่งและเกณฑ์ J/S หลายค่า วาดแผนที่รัศมีเทียบกับเส้นทางส่งเวชภัณฑ์
  2. ใน SITL จำลองการหาย GNSS ตามคู่มือของ PX4 หรือ ArduPilot สังเกตโหมดที่เปลี่ยนและบันทึก log
  3. นำ log บินจริงที่ไม่มีการโจมตีมาหาความคลาดของ DR แล้วเลือกเกณฑ์ใหม่ให้โค้ดตัวอย่างที่ 2
  4. สร้างข้อมูลปลอมที่ลากตำแหน่งในไฟล์ log (ไม่ส่งสัญญาณจริง) ทดสอบว่าจับได้หลังกี่วินาที
  5. เขียนข้อเสนอขั้นตอนเมื่อ GNSS ผิดปกติสำหรับเส้นทางส่งเวชภัณฑ์

ข้อผิดพลาดที่พบบ่อย

ระวัง

  • ทดลองรบกวนหรือปลอมสัญญาณในที่เปิด
  • เชื่อจำนวนดาวเทียมว่าเป็นหลักฐานว่าตำแหน่งถูก
  • ตั้งเกณฑ์ตรวจจับโดยไม่ดูความคลาดจริงของ DR
  • คิดว่า OSNMA กันการรบกวนได้
  • ไม่มีขั้นตอนเมื่อ GNSS ใช้ไม่ได้

สรุป

  • สัญญาณ GPS L1 C/A ต่ำสุดราว −128.5 dBm เครื่องรบกวนกำลังต่ำจึงมีผลในรัศมีกว้าง
  • J/S คำนวณจากกำลังส่ง การสูญเสียตามระยะ และกำลังสัญญาณที่ต้องการ
  • การปลอมสัญญาณแบบค่อยเป็นค่อยไปยึดโดรนได้โดยไม่ทำให้เข้าโหมดปลอดภัย
  • การเทียบกับ DR และเซนเซอร์อื่นช่วยตรวจจับ แต่ต้องเลือกเกณฑ์จากข้อมูลจริง

แบบฝึกตรวจความเข้าใจ

  1. ระยะเพิ่มจาก 500 m เป็น 1,000 m การสูญเสียในอวกาศอิสระเพิ่มกี่ dB
  2. สัญญาณรบกวนมาถึงตัวรับ −90 dBm สัญญาณ GPS −128.5 dBm J/S เท่าใด
  3. ทำไมการปลอมแบบค่อย ๆ ลากจึงตรวจจับยากกว่าการกระโดด
  4. OSNMA ช่วยเรื่องใด และไม่ช่วยเรื่องใด
  5. ลดเกณฑ์ผลต่างจาก 5 m เป็น 2 m มีข้อดีและข้อเสียอย่างไร
เฉลย
  1. dB
  2. dB
  3. ผลต่างเพิ่มช้า ๆ จนใกล้ความคลาดปกติของ DR และไม่มีค่ากระโดดให้เห็น
  4. ช่วยยืนยันว่าข้อมูลนำทางมาจาก Galileo จริง ไม่ช่วยเมื่อถูกรบกวนจนรับสัญญาณไม่ได้
  5. จับได้เร็วขึ้น แต่แจ้งเตือนผิดบ่อยขึ้นเพราะ DR คลาดสะสมเองอยู่แล้ว

สรุปสูตรสำคัญ

การสูญเสียในอวกาศอิสระ
อัตราส่วนสัญญาณรบกวนต่อสัญญาณ
ส่วนต่าง GNSS กับ dead reckoning

แหล่งอ้างอิงหลัก

  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

อ่านเพิ่มเติม

ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล

ในชั้นเรียน / ภาคสนาม

ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ

หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม

แบบทดสอบประจำโมดูล

แบบทดสอบนี้ใช้ตรวจความเข้าใจ (formative) ไม่ใช่การสอบเก็บคะแนน

โดเมนความรู้: ความมั่นคงไซเบอร์และการจัดการจราจร UAS · การควบคุม ออโตไพลอต และการนำทาง · การวางแผนภารกิจ การบิน และการจำลอง