[lec01] 6.566: Computer Systems Security
Lecture แรกของ 6.566: Computer Systems Security เริ่มจากคำถามพื้นฐานว่า เราจะสร้าง computer system ที่ปลอดภัยได้อย่างไร
สิ่งที่น่าสนใจคือ security ไม่ได้มีเป้าหมายเดียว แต่ต้องพิจารณาทั้ง confidentiality, integrity และ availability พร้อมกัน ระบบอาจรักษาความลับได้ดี แต่ถ้าใช้งานไม่ได้ หรือข้อมูลถูกแก้ไขโดยไม่ได้รับอนุญาต ก็ยังถือว่าไม่ปลอดภัย
อีกแนวคิดสำคัญคือ Threat model หรือชุดสมมติฐานว่า attacker สามารถทำอะไรได้บ้าง การออกแบบ security จึงไม่ได้เริ่มจากคำว่า “ระบบนี้ปลอดภัยหรือไม่” แต่เริ่มจาก “ปลอดภัยจากใคร ภายใต้เงื่อนไขอะไร” หากตั้งสมมติฐานผิด ต่อให้กลไกภายในทำงานถูกต้อง ระบบก็ยังถูกโจมตีได้
Security design มักไม่สมบูรณ์ตั้งแต่ครั้งแรก แต่เป็นกระบวนการ iterative ที่ต้องออกแบบ ทดสอบ พบช่องโหว่ และปรับปรุงต่อเนื่อง โดยเฉพาะ corner cases ซึ่งดูเหมือนเป็นกรณีเล็กน้อย แต่ในโลกของ security กรณีเหล่านี้มักกลายเป็นทางเข้าหลักของการโจมตี
อีกมุมที่เป็นจริงมากคือ เราอาจไม่จำเป็นต้องทำให้การโจมตี “เป็นไปไม่ได้” เสมอไป แต่ควรทำให้ cost of attack สูงกว่ามูลค่าที่ attacker จะได้รับ แนวคิดนี้ทำให้ security เป็นทั้งปัญหาทางเทคนิคและปัญหาด้านแรงจูงใจทางเศรษฐศาสตร์
การศึกษาความล้มเหลวและ case studies จึงสำคัญมาก เพราะการโจมตีจริงมักไม่ได้อาศัยข้อผิดพลาดใหญ่เพียงจุดเดียว แต่เกิดจากการนำจุดอ่อนเล็กๆ หลายจุดมาต่อกัน
สุดท้าย Lecture วาง Isolation เป็นจุดเริ่มต้นของ security: โดยปกติ activity หนึ่งไม่ควรส่งผลกระทบต่ออีก activity หนึ่ง แม้ส่วนแรกจะเป็น malicious code หรืออีกส่วนจะมี bug ก็ตาม เมื่อแยกส่วนต่างๆ ออกจากกันได้แล้ว เราจึงค่อยอนุญาตให้มี controlled sharing ภายใต้ Policy ที่ชัดเจน
ประเด็นหลักที่ได้จาก Lecture นี้คือ การสร้าง secure system ไม่ใช่การติดตั้งกลไกป้องกันเพียงชิ้นเดียว แต่คือการกำหนดเป้าหมาย ตั้ง Threat model ตรวจสอบสมมติฐาน ออกแบบ Isolation และเรียนรู้จากความผิดพลาดอย่างต่อเนื่อง