การโจมตี GNSS และลิงก์
UAT 367 ความมั่นคงไซเบอร์ ระบบเชื่อมโยงการบัญชาการและควบคุม และการจัดการจราจรระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- คำนวณอัตราส่วนสัญญาณรบกวนต่อสัญญาณ (J/S) จากกำลังส่งและการสูญเสียในอวกาศอิสระ
- อธิบายการปลอมสัญญาณ GNSS และการยึดอากาศยานแบบค่อยเป็นค่อยไป
- ตรวจจับความผิดปกติของ GNSS ด้วยการเทียบกับ dead reckoning
- เลือกมาตรการป้องกัน เช่น หลายระบบดาวเทียม OSNMA และการตรวจความสอดคล้องของเซนเซอร์
ทำไมต้องรู้
สัญญาณ 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 ลดลงตามระยะแบบเส้นตรงบนสเกลลอการิทึม
ลิงก์ 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 เองก็คลาด การเลือกเกณฑ์จึงต้องใช้ข้อมูลบินจริงของโดรนรุ่นนั้น
มาตรการป้องกัน
- หลายระบบดาวเทียมและหลายความถี่ ทำให้ปลอมหรือรบกวนทุกสัญญาณพร้อมกันยากขึ้น
- การยืนยันความแท้ของข้อความนำทาง เช่น Galileo OSNMA ที่คณะกรรมาธิการยุโรปประกาศบริการขั้นต้นเมื่อ 24 กรกฎาคม 2025 ให้ตัวรับตรวจว่าข้อมูลนำทางมาจากระบบจริง แต่ไม่ได้กันการรบกวน
- ตรวจความสอดคล้องของเซนเซอร์ ตามตัวอย่างที่ 2 และตรวจค่าที่เป็นไปไม่ได้ เช่น ความเร็วเกินสมรรถนะของโดรน
- สายอากาศและตำแหน่งติดตั้ง ที่ลดการรับสัญญาณจากแนวราบ ซึ่งเป็นทิศที่เครื่องรบกวนภาคพื้นส่งมา
- ขั้นตอนเมื่อ GNSS ใช้ไม่ได้ เช่น ลอยค้างหรือบินด้วยแหล่งนำทางอื่นไปยังจุดปลอดภัย ทดสอบใน SITL ก่อน
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: จำลองและตรวจจับความผิดปกติของ GNSS
- ใช้โค้ดตัวอย่างที่ 1 ทดลองกำลังส่งและเกณฑ์ J/S หลายค่า วาดแผนที่รัศมีเทียบกับเส้นทางส่งเวชภัณฑ์
- ใน SITL จำลองการหาย GNSS ตามคู่มือของ PX4 หรือ ArduPilot สังเกตโหมดที่เปลี่ยนและบันทึก log
- นำ log บินจริงที่ไม่มีการโจมตีมาหาความคลาดของ DR แล้วเลือกเกณฑ์ใหม่ให้โค้ดตัวอย่างที่ 2
- สร้างข้อมูลปลอมที่ลากตำแหน่งในไฟล์ log (ไม่ส่งสัญญาณจริง) ทดสอบว่าจับได้หลังกี่วินาที
- เขียนข้อเสนอขั้นตอนเมื่อ GNSS ผิดปกติสำหรับเส้นทางส่งเวชภัณฑ์
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ทดลองรบกวนหรือปลอมสัญญาณในที่เปิด
- เชื่อจำนวนดาวเทียมว่าเป็นหลักฐานว่าตำแหน่งถูก
- ตั้งเกณฑ์ตรวจจับโดยไม่ดูความคลาดจริงของ DR
- คิดว่า OSNMA กันการรบกวนได้
- ไม่มีขั้นตอนเมื่อ GNSS ใช้ไม่ได้
สรุป
- สัญญาณ GPS L1 C/A ต่ำสุดราว −128.5 dBm เครื่องรบกวนกำลังต่ำจึงมีผลในรัศมีกว้าง
- J/S คำนวณจากกำลังส่ง การสูญเสียตามระยะ และกำลังสัญญาณที่ต้องการ
- การปลอมสัญญาณแบบค่อยเป็นค่อยไปยึดโดรนได้โดยไม่ทำให้เข้าโหมดปลอดภัย
- การเทียบกับ DR และเซนเซอร์อื่นช่วยตรวจจับ แต่ต้องเลือกเกณฑ์จากข้อมูลจริง
แบบฝึกตรวจความเข้าใจ
- ระยะเพิ่มจาก 500 m เป็น 1,000 m การสูญเสียในอวกาศอิสระเพิ่มกี่ dB
- สัญญาณรบกวนมาถึงตัวรับ −90 dBm สัญญาณ GPS −128.5 dBm J/S เท่าใด
- ทำไมการปลอมแบบค่อย ๆ ลากจึงตรวจจับยากกว่าการกระโดด
- OSNMA ช่วยเรื่องใด และไม่ช่วยเรื่องใด
- ลดเกณฑ์ผลต่างจาก 5 m เป็น 2 m มีข้อดีและข้อเสียอย่างไร
เฉลย
- dB
- dB
- ผลต่างเพิ่มช้า ๆ จนใกล้ความคลาดปกติของ DR และไม่มีค่ากระโดดให้เห็น
- ช่วยยืนยันว่าข้อมูลนำทางมาจาก Galileo จริง ไม่ช่วยเมื่อถูกรบกวนจนรับสัญญาณไม่ได้
- จับได้เร็วขึ้น แต่แจ้งเตือนผิดบ่อยขึ้นเพราะ DR คลาดสะสมเองอยู่แล้ว
สรุปสูตรสำคัญ
| การสูญเสียในอวกาศอิสระ | |
| อัตราส่วนสัญญาณรบกวนต่อสัญญาณ | |
| ส่วนต่าง GNSS กับ dead reckoning |
แหล่งอ้างอิงหลัก
- Space Systems Command. (2022). IS-GPS-200N: NAVSTAR GPS space segment/navigation user segment interfaces. link
- International Telecommunication Union. (2024). Calculation of free-space attenuation (Recommendation ITU-R P.525-5). link
- 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
- 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
- European Union Agency for the Space Programme. Galileo Open Service Navigation Message Authentication (OSNMA). link
- Groves, P. D. (2013). Principles of GNSS, inertial, and multisensor integrated navigation systems (2nd ed.). Artech House. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ
หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม