ปัญหา: ต้องเชื่อโดยไม่มีทางตรวจสอบ
เมื่อคุณติดตั้งแอปเบบี้มอนิเตอร์ คุณกำลังให้แอปเข้าถึงพื้นที่ที่เป็นส่วนตัวมาก นั่นคือห้องนอนของลูกน้อย แอปจะฟัง และบางครั้งก็ดูภาพด้วย ขณะเดียวกัน ผู้ปกครองมักไม่เห็นว่าเบื้องหลังเกิดอะไรขึ้น: สตรีมส่งผ่านเซิร์ฟเวอร์ของบุคคลที่สามหรือไม่ มีการเก็บข้อมูลการใช้งานหรือเปล่า และในทางเทคนิคแล้วใครเข้าถึงสิ่งเหล่านี้ได้บ้าง
คำตอบอย่างตรงไปตรงมาคือ สำหรับหลายแอป คุณไม่รู้เลย โค้ดปิดอยู่ และสถาปัตยกรรมก็เป็นเพียงคำกล่าวอ้าง สุดท้ายคุณจึงต้องเชื่อผู้ให้บริการ
โค้ดปิด ช่องโหว่เปิด
ในช่วงไม่กี่ปีที่ผ่านมา มีรายงานเบบี้มอนิเตอร์ถูกแฮ็กมากพอสมควร คนแปลกหน้าสามารถแอบฟัง ขยับกล้อง หรือพูดผ่านลำโพงได้ ส่วนใหญ่ไม่ใช่การโจมตีที่ซับซ้อน แต่เป็นความผิดพลาดร้ายแรง เช่น การเชื่อมต่อที่ไม่เข้ารหัส รหัสผ่านเริ่มต้น หรือไม่มีการยืนยันตัวตน
สำหรับซอฟต์แวร์แบบกรรมสิทธิ์ คนภายนอกมักเห็นจุดอ่อนเหล่านี้หลังจากเกิดเหตุขึ้นแล้ว นักวิจัยด้านความปลอดภัย นักพัฒนาอิสระ และผู้ปกครองมองผลิตภัณฑ์สำเร็จรูปจากภายนอก สำหรับอุปกรณ์ในห้องนอนของลูกน้อย นี่ไม่ใช่รูปแบบที่ดีนัก
ความโปร่งใสเป็นหลักการด้านความปลอดภัย
ความปลอดภัยสารสนเทศมีกฎเก่าแก่ที่มีประโยชน์ข้อหนึ่ง: หลักการของ Kerckhoffs. ความปลอดภัยต้องไม่ขึ้นอยู่กับการเก็บการออกแบบเป็นความลับ ระบบควรปลอดภัยได้แม้มีคนรู้ว่ามันถูกสร้างขึ้นอย่างไร
โค้ดที่มีเอกสารเปิดเผยไม่ได้ทำให้ซอฟต์แวร์ปลอดภัยด้วยตัวเอง แต่ทำให้ตรวจสอบคำกล่าวอ้างได้ ผู้ที่เข้าใจด้านนี้สามารถตรวจดูการไหลของข้อมูล การสร้างคีย์ และกฎต่าง ๆ ได้ แทนที่จะอ่านแค่ข้อความการตลาด
แนวทางของ Timmy: แกนความปลอดภัยที่แยกออกมา
ใน Timmy ตอนนี้ผมแยกให้ชัดเจนมากว่าส่วนใดสำคัญต่อความปลอดภัยอย่างแท้จริง ไม่ใช่ทุกบรรทัดของ UI จะเป็นตัวตัดสินว่าผลิตภัณฑ์ควรได้รับความไว้วางใจหรือไม่ ส่วนที่สำคัญคือโลจิกฝั่งแบ็กเอนด์ ข้อตกลงการส่งสัญญาณ การเข้ารหัสสำหรับการจับคู่ และคำถามว่าข้อมูลใดไปถึงเซิร์ฟเวอร์
นั่นคือเหตุผลที่แกนความปลอดภัยตอนนี้อยู่ใน รีโพซิทอรี baby-monitor-timmy-core. โค้ดของแอปทั้งหมดไม่ได้เปิดเผยในตอนนี้ ส่วนประกอบสำคัญต่อความปลอดภัยถูกแยกออกจาก UI และโลจิกผลิตภัณฑ์ เพื่อให้มีเอกสารและตรวจสอบแยกกันได้
แล้วในทางปฏิบัติหมายความว่าอย่างไร
- ขอบเขตชัดเจน: ส่วนประกอบด้านความปลอดภัยแยกออกจาก UI และโลจิกผลิตภัณฑ์
- การไหลของข้อมูลที่ตรวจสอบได้: การจับคู่ การส่งสัญญาณ และอินเทอร์เฟซแบ็กเอนด์สามารถมีเอกสารแยกกันได้
- ไม่มีตัวติดตามแอบแฝง: เส้นทางสำคัญมีเฉพาะสิ่งที่จำเป็นทางเทคนิคเท่านั้น
- ดูแลรักษาได้ในระยะยาว: แกนที่แยกออกมาตรวจสอบได้ง่ายกว่าโมโนลิทที่ไร้โครงสร้าง
บทสรุป: ผู้ปกครองสมควรได้รับความโปร่งใส
เมื่อแอปเข้าถึงห้องนอนของลูกน้อย ก็ควรตอบคำถามสำคัญอย่างชัดเจน: มีข้อมูลอะไรเกิดขึ้น ข้อมูลไปที่ไหน และใครอ่านได้บ้าง ผู้ปกครองสมควรได้รับมากกว่าตราสัญลักษณ์ความเป็นส่วนตัวที่ท้ายหน้า
Baby Monitor Timmy ควรแสดงให้เห็นว่าผลิตภัณฑ์ที่ดีและความปลอดภัยที่ตรวจสอบได้ไปด้วยกันได้ สำหรับผม นี่ไม่ได้หมายถึงการเปิดเผยทุกส่วนของแอป แต่คือการเปิดส่วนที่กำหนดการจับคู่ การส่งสัญญาณ การเข้าถึงแบ็กเอนด์ และการไหลของข้อมูล