ความมั่นคงไซเบอร์ UAS
UAT 367 ความมั่นคงไซเบอร์ ระบบเชื่อมโยงการบัญชาการและควบคุม และการจัดการจราจรระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- ระบุพื้นผิวการโจมตีของระบบ UAS ตั้งแต่อากาศยาน สถานีภาคพื้น ลิงก์ ไปจนถึงเซิร์ฟเวอร์และซัพพลายเชน
- วิเคราะห์ภัยคุกคามด้วย STRIDE บนแผนภาพการไหลของข้อมูลที่มีขอบเขตความเชื่อถือ
- จัดลำดับความเสี่ยงด้วยโอกาสเกิดคูณผลกระทบ
- ออกแบบการป้องกันหลายชั้นและบอกข้อจำกัดของสมมติฐานความเป็นอิสระ
ทำไมต้องรู้
โดรนส่งเวชภัณฑ์ที่บินนอกระยะสายตา (BVLOS) พึ่งคอมพิวเตอร์และเครือข่ายทุกขั้น ตั้งแต่การรับแผนการบิน การส่งคำสั่ง ไปจนถึงการส่งภาพกลับ ถ้าผู้ไม่หวังดีปลอมคำสั่งได้ หรือทำให้โดรนหลงตำแหน่งได้ ผลเสียหายไม่ได้อยู่แค่ข้อมูล แต่เป็นอากาศยานที่ตกใส่คนหรือเวชภัณฑ์ที่ไม่ถึงมือผู้ป่วย บทความทบทวนของ AlTawy และ Youssef (2017) และ Wang และคณะ (2023) จึงมองความมั่นคงไซเบอร์ของโดรนว่าเป็นเรื่องความปลอดภัยการบินด้วย
UAT 105 สอนหลัก CIA และ HMAC ไปแล้ว วิชานี้ต่อยอดไปสู่การวิเคราะห์ระบบจริงทั้งระบบ ทั้งวิชาใช้กรณีสมมติเดียว: เครือข่ายส่งเวชภัณฑ์ด้วยโดรน BVLOS จากโรงพยาบาลจังหวัดไป รพ.สต. 3 แห่ง ใช้ C2 สองช่องทาง (วิทยุและ LTE) และเชื่อมกับผู้ให้บริการจัดการจราจรในพื้นที่ทดลอง ตัวเลขทั้งหมดเป็นข้อมูลสมมติสำหรับฝึก โค้ด Python ของทุกโมดูลดาวน์โหลดได้ที่ /downloads/uat-367/
พื้นผิวการโจมตีและขอบเขตความเชื่อถือ
พื้นผิวการโจมตี (attack surface) คือทุกจุดที่ผู้โจมตีส่งข้อมูลเข้าหรือดึงข้อมูลออกจากระบบได้ เปรียบกับบ้านที่ต้องนับทุกประตูและหน้าต่าง ไม่ใช่แค่ประตูหน้า ระบบส่งเวชภัณฑ์มีอย่างน้อย:
- อากาศยาน ตัวควบคุมการบิน คอมพิวเตอร์บนลำ ช่อง USB และพอร์ตดีบัก
- ลิงก์ วิทยุ C2, LTE และสัญญาณ GNSS ที่รับจากอวกาศ
- สถานีภาคพื้น โปรแกรมควบคุม (GCS) บนโน้ตบุ๊ก บัญชีผู้ใช้ และกุญแจที่เก็บไว้
- ผู้ให้บริการและคลาวด์ เซิร์ฟเวอร์ภารกิจ ผู้ให้บริการ UTM (USS) และข้อมูลผู้ป่วยที่ผูกกับพัสดุ
- ซัพพลายเชน เฟิร์มแวร์ ไลบรารี และอุปกรณ์จากผู้ผลิต
ขอบเขตความเชื่อถือ (trust boundary) คือเส้นที่ข้อมูลข้ามจากส่วนที่เราควบคุมไปยังส่วนที่เชื่อถือไม่ได้เท่ากัน ทุกเส้นที่ข้ามขอบเขตต้องถามว่า “ใครส่งมา แก้ไขระหว่างทางได้หรือไม่ ใครอ่านได้”
วิเคราะห์ภัยด้วย STRIDE
Shostack (2014) เสนอให้ไล่ภัยคุกคามทีละประเภทตาม STRIDE บนแผนภาพการไหลของข้อมูล แต่ละตัวอักษรคือการละเมิดคุณสมบัติด้านความปลอดภัยหนึ่งข้อ
| ภัย | ความหมาย | คุณสมบัติที่ถูกละเมิด | ตัวอย่างในระบบส่งเวชภัณฑ์ |
|---|---|---|---|
| Spoofing | แอบอ้างเป็นผู้อื่น | การยืนยันตัวตน | ส่งคำสั่ง C2 ปลอมบนลิงก์ที่ไม่ลงลายเซ็น |
| Tampering | แก้ไขข้อมูล | ความถูกต้องครบถ้วน | แก้เส้นทางภารกิจในเซิร์ฟเวอร์ |
| Repudiation | ปฏิเสธการกระทำ | การพิสูจน์ย้อนหลัง | ไม่มี log ที่ยืนยันว่าใครสั่งยกเลิกเที่ยวบิน |
| Information disclosure | ข้อมูลรั่ว | การรักษาความลับ | ดักวิดีโอ LTE และข้อมูลพัสดุ |
| Denial of service | ทำให้ใช้งานไม่ได้ | ความพร้อมใช้ | รบกวน GNSS หรือวิทยุบนเส้นทาง |
| Elevation of privilege | ยกระดับสิทธิ์ | การอนุญาต | ได้สิทธิ์ผู้ดูแลบนโน้ตบุ๊ก GCS |
เมื่อได้รายการภัยแล้ว ให้คะแนน โอกาสเกิด (L) และ ผลกระทบ (I) ระดับ 1–5 แล้วคูณเป็นคะแนนความเสี่ยง วิธีนี้ง่ายและอธิบายได้ แต่เป็นการประมาณเชิงลำดับ ไม่ใช่ความน่าจะเป็นจริง ต้องให้ผู้รู้หลายฝ่ายให้คะแนนร่วมกันและทบทวนเป็นระยะ
ตัวอย่างที่ 1 จัดลำดับภัย STRIDE
คะแนนเป็นค่าสมมติที่ทีมตกลงกันในการประชุม threat modeling
threats = [
("S", "forged C2 commands on an unsigned link", 3, 5),
("T", "mission route altered on the server", 2, 5),
("R", "no signed log of who aborted a flight", 3, 2),
("I", "LTE video and parcel data intercepted", 3, 4),
("D", "GNSS or radio jamming on the route", 4, 4),
("E", "admin rights gained on the GCS laptop", 2, 5),
]
def level(risk):
return "HIGH" if risk >= 15 else "MEDIUM" if risk >= 8 else "LOW"
for cat, name, like, imp in sorted(threats, key=lambda x: -x[2] * x[3]):
risk = like * imp
print(f"{cat} {name:<40} L{like} x I{imp} = {risk:>2} {level(risk)}")
D GNSS or radio jamming on the route L4 x I4 = 16 HIGH
S forged C2 commands on an unsigned link L3 x I5 = 15 HIGH
I LTE video and parcel data intercepted L3 x I4 = 12 MEDIUM
T mission route altered on the server L2 x I5 = 10 MEDIUM
E admin rights gained on the GCS laptop L2 x I5 = 10 MEDIUM
R no signed log of who aborted a flight L3 x I2 = 6 LOW
การรบกวนสัญญาณและคำสั่งปลอมอยู่ระดับสูง จึงเป็นเรื่องแรกที่ต้องจัดการในโมดูล 2 และ 3 ภัยที่คะแนนเท่ากัน (T และ E) ต้องใช้ดุลยพินิจเพิ่ม เช่น ดูว่าแก้ได้ถูกและเร็วเพียงใด
ป้องกันหลายชั้น
ไม่มีมาตรการเดียวที่กันได้ทุกอย่าง แนวคิด ป้องกันหลายชั้น (defense in depth) วางมาตรการซ้อนกันเพื่อให้ผู้โจมตีต้องผ่านทุกชั้น Anderson (2020) เตือนว่าชั้นต่าง ๆ ช่วยได้จริงเมื่อ ล้มเหลวอย่างอิสระ ถ้าทุกชั้นพึ่งรหัสผ่านเดียวหรือกุญแจที่เก็บบนเครื่องเดียวกัน ผู้โจมตีที่ได้สิ่งนั้นจะผ่านทุกชั้นพร้อมกัน
ตัวอย่างที่ 2 โอกาสที่คำสั่งปลอมผ่านทุกชั้น
ค่าเป็นโอกาสสมมติที่ผู้โจมตีผ่านแต่ละชั้นได้
layers = [
("network segmentation of the GCS", 0.30),
("MAVLink 2 signing", 0.05),
("command allowlist and geofence on the aircraft", 0.20),
]
p = 1.0
for name, bypass in layers:
p *= bypass
print(f"+ {name:<48} attack still succeeds with p = {p:.4f}")
print(f"about 1 in {1 / p:,.0f} attempts, if the layers fail independently")
+ network segmentation of the GCS attack still succeeds with p = 0.3000
+ MAVLink 2 signing attack still succeeds with p = 0.0150
+ command allowlist and geofence on the aircraft attack still succeeds with p = 0.0030
about 1 in 333 attempts, if the layers fail independently
ถ้ากุญแจลายเซ็นเก็บไว้บนโน้ตบุ๊กเครื่องเดียวกับที่ถูกเจาะ ชั้นที่สองจะไม่ช่วยอะไรเลย ตัวเลขจริงจึงแย่กว่าผลคูณนี้ การแยกที่เก็บกุญแจจึงสำคัญพอ ๆ กับการมีหลายชั้น
กิจกรรมในชั้นเรียนและปฏิบัติการ
ปฏิบัติการ: threat model ของระบบในห้องปฏิบัติการ
- วาดแผนภาพการไหลของข้อมูลของโดรนในห้องปฏิบัติการ (SITL หรือลำจริง) พร้อมขอบเขตความเชื่อถือ
- ไล่ STRIDE ทีละเส้นที่ข้ามขอบเขต เขียนภัยอย่างน้อย 10 ข้อ
- ให้คะแนน L และ I แยกกันสามคน แล้วเทียบและตกลงร่วม ใช้โค้ดตัวอย่างที่ 1 จัดลำดับ
- เลือกภัยสามอันดับแรก ออกแบบมาตรการป้องกันหลายชั้น และระบุว่าชั้นใดพึ่งสิ่งเดียวกัน
- บันทึกลงสมุดปฏิบัติการ ห้ามทดลองโจมตีระบบหรือคลื่นความถี่ที่ไม่ได้รับอนุญาต
ข้อผิดพลาดที่พบบ่อย
ระวัง
- คิดถึงแค่ลิงก์วิทยุ และลืมโน้ตบุ๊ก GCS คลาวด์ และซัพพลายเชน
- ให้คะแนนความเสี่ยงคนเดียว โดยไม่มีผู้ปฏิบัติงานจริงร่วม
- ถือว่าคะแนน L × I เป็นความน่าจะเป็น
- ซ้อนหลายชั้นที่พึ่งจุดอ่อนเดียวกัน
- ทำ threat model ครั้งเดียว แล้วไม่ทบทวนเมื่อระบบเปลี่ยน
สรุป
- พื้นผิวการโจมตีของ UAS ครอบคลุมอากาศยาน ลิงก์ สถานีภาคพื้น คลาวด์ และซัพพลายเชน
- STRIDE ช่วยไล่ภัยครบหกประเภทบนเส้นที่ข้ามขอบเขตความเชื่อถือ
- คะแนน L × I ใช้จัดลำดับ ไม่ใช่ความน่าจะเป็น
- ป้องกันหลายชั้นได้ผลเมื่อชั้นต่าง ๆ ล้มเหลวอย่างอิสระ
แบบฝึกตรวจความเข้าใจ
- การดักวิดีโอจาก LTE เป็นภัยประเภทใดใน STRIDE
- ภัยที่โอกาส 4 ผลกระทบ 3 ได้คะแนนและระดับใดตามเกณฑ์ในตัวอย่าง
- สามชั้นป้องกันมีโอกาสถูกผ่าน 0.5, 0.1, 0.1 โอกาสผ่านทุกชั้นเท่าใด (ถ้าอิสระกัน)
- ขอบเขตความเชื่อถือคืออะไร
- ทำไมการเก็บกุญแจลายเซ็นบนเครื่อง GCS ที่ถูกเจาะจึงทำให้การป้องกันหลายชั้นอ่อนลง
เฉลย
- Information disclosure
- ระดับกลาง
- หรือ 1 ใน 200
- เส้นที่ข้อมูลข้ามจากส่วนที่เราควบคุมไปยังส่วนที่เชื่อถือได้ไม่เท่ากัน
- ผู้โจมตีที่ได้เครื่องนั้นได้ทั้งการเข้าถึงเครือข่ายและกุญแจพร้อมกัน ชั้นต่าง ๆ จึงไม่อิสระกัน
สรุปสูตรสำคัญ
| คะแนนความเสี่ยง | |
| โอกาสผ่านทุกชั้นป้องกัน (ถ้าเป็นอิสระกัน) |
แหล่งอ้างอิงหลัก
- AlTawy, R., & Youssef, A. M. (2017). Security, privacy, and safety aspects of civilian drones: A survey. ACM Transactions on Cyber-Physical Systems, 1(2), Article 7, 1–25. link
- Wang, Z., Li, Y., Wu, S., Zhou, Y., Yang, L., Xu, Y., Zhang, T., & Pan, Q. (2023). A survey on cybersecurity attacks and defenses for unmanned aerial systems. Journal of Systems Architecture, 138, 102870. link
- Shostack, A. (2014). Threat modeling: Designing for security. Wiley. link
- National Institute of Standards and Technology. (2024). The NIST cybersecurity framework (CSF) 2.0. link
- Anderson, R. (2020). Security engineering (3rd ed.). Wiley.
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ
หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม