ความปลอดภัย: สิ่งที่จะเรียนต่อ
หน้านี้ชี้ให้เห็นช่องโหว่ของระบบปัจจุบัน ยังไม่ได้สอนวิธีแก้ในรอบนี้
Noteสถานะ
เนื้อหาความปลอดภัยจะเรียนในรอบถัดไป หน้านี้มีไว้ให้ตระหนักว่าระบบที่สร้างไว้ยังไม่ปลอดภัยตรงไหน และเป็นเหตุผลที่ห้ามนำไปใช้นอกห้องเรียนที่ควบคุมเครือข่ายได้
โคมไฟของเราทำงานได้ตามที่ตั้งใจ แต่ระบบ IoT ที่ “ทำงานได้” ไม่เท่ากับ “ปลอดภัย” ลองคิดตามว่าผู้ไม่หวังดีที่อยู่ใน Wi-Fi เดียวกัน (หรือนักเรียนที่แกล้งเพื่อน) ทำอะไรได้บ้าง
| สิ่งที่ระบบเป็นอยู่ตอนนี้ | ความเสี่ยงที่ควรคิด | หัวข้อที่จะเรียน |
|---|---|---|
ใครเข้าถึง :8000 หรือ :8501 ได้ก็สั่งไฟได้ ไม่มีการล็อกอิน |
คนอื่นสั่งปิดไฟของบอร์ดเรา | การยืนยันตัวตน (authentication) และสิทธิ์ (authorization) |
| ข้อมูลส่งเป็น HTTP ธรรมดา | ดักอ่านหรือแก้ไขข้อมูลระหว่างทางได้ | การเข้ารหัสการสื่อสาร (TLS/HTTPS) |
device_id ใครจะตั้งอะไรก็ได้ |
ปลอมตัวเป็นบอร์ดของคนอื่น ส่งค่าแสงปลอม | การระบุตัวตนอุปกรณ์และ token/คีย์ต่ออุปกรณ์ |
รหัส Wi-Fi อยู่ในไฟล์ arduino_secrets.h บนบอร์ด |
รหัสหลุดถ้าส่งไฟล์ขึ้น GitHub หรือถูกอ่านจากบอร์ด | การจัดการความลับ (secret management) |
| ข้อความแชตถูกส่งให้ AI (อาจผ่านอินเทอร์เน็ต) | ข้อมูลส่วนตัวรั่ว และผู้ใช้พยายาม “หลอก” AI ให้ตอบผิด (prompt injection) | ความเป็นส่วนตัว และการจำกัดสิทธิ์ของ AI |
| ส่งคำขอได้ไม่จำกัดจำนวน | ถูกท่วมคำขอจน gateway ไม่ตอบ (DoS) | การจำกัดอัตราคำขอ (rate limiting) |
| ไม่มีบันทึกว่าใครสั่งอะไรเมื่อไร | ตรวจสอบย้อนหลังไม่ได้ | การบันทึกเหตุการณ์ (audit log) |
สิ่งที่ระบบนี้ทำถูกแล้วบางส่วน
แม้จะยังไม่ปลอดภัยโดยรวม แต่มีหลักการดีที่ใช้ได้ทุกระบบ
- ตรวจข้อมูลขาเข้าเสมอ:
gateway/protocol.pyปฏิเสธข้อมูลที่รูปแบบ ชนิด หรือขอบเขตไม่ตรงสัญญา (ทดสอบแล้วในgateway/tests/) - allowlist ของคำสั่ง: ทั้งกฎและ AI สร้างได้เฉพาะคำสั่งสามแบบ คำสั่งอื่นถูกปฏิเสธ
- AI ไม่ควบคุมอุปกรณ์โดยตรง: คำตอบของ AI ถูกตรวจก่อนเสมอ และมีกฎสำรอง
- ล้มเหลวอย่างปลอดภัย: เมื่อติดต่อ gateway ไม่ได้ บอร์ดใช้กฎของตัวเอง ไม่ค้างอยู่ในสถานะอันตราย
- กันความลับไม่ให้ขึ้น repo:
.gitignoreกันarduino_secrets.h - จำกัดขนาดข้อความ: คำขอเกิน 2 KB ถูกปฏิเสธ (HTTP 413)
คำถามชวนคิด
- ถ้าคุณเป็นผู้โจมตีในห้องเรียนเดียวกัน คุณจะสั่งปิดไฟของเพื่อนด้วยวิธีใด (ใช้ความรู้จาก API ได้เลย แต่ทดลองกับบอร์ดของตัวเองเท่านั้น)
- อุปกรณ์ในบ้านของคุณมีระบบยืนยันตัวตนหรือไม่ มีกรณีใดที่คุณเคยได้ยินว่าอุปกรณ์ IoT ถูกโจมตี
- ถ้าโคมไฟนี้ควบคุมรีเลย์ไฟบ้านจริง ความเสี่ยงข้อใดในตารางจะรุนแรงที่สุด
Warningข้อตกลง
ทดลองเฉพาะกับอุปกรณ์และเครือข่ายของตัวเองหรือที่ได้รับอนุญาตเท่านั้น การลองเข้าระบบของผู้อื่นโดยไม่ได้รับอนุญาตเป็นเรื่องผิดกฎหมายและผิดจริยธรรม