ความเข้าใจผิดเรื่องความปลอดภัยที่นักเขียนโค้ดมือใหม่มักหลงเชื่อ
บทเรียนจากนักพัฒนาที่พบว่าอัลกอริทึมการเข้ารหัสที่แข็งแกร่งที่สุดไม่ได้ช่วยให้ซอฟต์แวร์ปลอดภัยเสมอไป หากละเลยการจัดการระบบวิศวกรรม

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- มือใหม่มักคิดว่าอัลกอริทึมการเข้ารหัสที่แข็งแกร่งทำให้ซอฟต์แวร์ปลอดภัยทันที
- ช่องโหว่ส่วนใหญ่เกิดจากข้อผิดพลาดทางวิศวกรรมและการออกแบบระบบ
- การจัดการรหัสผ่านและคีย์เข้ารหัสที่ไม่รัดกุมคือสาเหตุหลักของปัญหา
- ความปลอดภัยของแอปพลิเคชันวัดได้จากจุดที่อ่อนแอที่สุดในระบบ
ในช่วงเวลาแรกที่เริ่มศึกษาเรื่องความปลอดภัยทางคอมพิวเตอร์ นักพัฒนาหลายคนมักยึดติดกับความเชื่อที่ว่าสิ่งสำคัญที่สุดคือการเลือกใช้อัลกอริทึมการเข้ารหัสที่มีความแข็งแกร่งสูงสุด โดยคิดไปเองว่าเพียงแค่เลือกเทคโนโลยีเข้ารหัสที่ดีที่สุด ซอฟต์แวร์ที่สร้างขึ้นก็จะปลอดภัยอย่างไร้ช่องโหว่โดยอัตโนมัติ
ในปัจจุบันโลกของเรามีระบบเข้ารหัสและฟังก์ชันทางคริปโตเกอราฟีที่ยอดเยี่ยมมากมาย ซึ่งระบบเหล่านี้ล้วนมีประสิทธิภาพสูงมากเมื่อนำไปใช้งานได้อย่างถูกต้องตามหลักการ อย่างไรก็ตาม หลังจากที่ได้ใช้เวลาหลายเดือนในการพัฒนาแอปพลิเคชันรักษาความปลอดภัยสำหรับเดสก์ท็อปบนวินโดวส์ ข้อเท็จจริงข้อหนึ่งก็ปรากฏชัดเจนขึ้นว่าความล้มเหลวทางด้านความปลอดภัยส่วนใหญ่ไม่ได้เกิดขึ้นเพราะอัลกอริทึมอย่าง AES มีจุดอ่อน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
แต่ปัญหาช่องโหว่เหล่านั้นกลับเกิดขึ้นจากข้อผิดพลาดในการตัดสินใจทางวิศวกรรมและการออกแบบซอฟต์แวร์ เช่น ประเด็นเหล่านี้:
- การจัดการรหัสผ่านที่ไม่มีประสิทธิภาพ
- ระบบบริหารจัดการคีย์เข้ารหัสที่ย่ำแย่
- การละเลยระบบบันทึกการใช้งานหรือ Logging
- การมองข้ามความเสี่ยงจากการเข้าถึงเครื่องคอมพิวเตอร์โดยตรง
- การปล่อยให้หน้าจอผู้ใช้ค้างในระหว่างประมวลผลข้อมูลสำคัญ
- การตั้งสมมติฐานว่าผู้ใช้งานจะไม่ทำข้อผิดพลาดใดๆ เลย
ในทางวิศวกรรมซอฟต์แวร์ แนวคิดที่ว่า 'ระบบมีความปลอดภัยเท่ากับจุดที่อ่อนแอที่สุด' (Chain is only as strong as its weakest link) สะท้อนให้เห็นว่าระบบป้องกันที่ซับซ้อนแค่ไหนก็ไร้ความหมายหากมีช่องโหว่เล็กๆ เช่น การเก็บบันทึกข้อมูลลับในที่ที่เข้าถึงง่าย หรือการจัดการสิทธิ์ผู้ใช้ที่ไม่รัดกุม การออกแบบที่ดีจึงต้องมองภาพรวมรอบด้าน ไม่ใช่พึ่งพาแค่เครื่องมือเข้ารหัสตัวใดตัวหนึ่ง
จุดเปลี่ยนสำคัญเกิดขึ้นเมื่อเลิกหมกมุ่นกับคำถามว่าอัลกอริทึมตัวไหนแข็งแกร่งกว่ากัน แต่เปลี่ยนมาตั้งคำถามใหม่ว่า "จะเกิดอะไรขึ้นหากมีคนสามารถเข้าถึงเครื่องคอมพิวเตอร์เครื่องนี้ได้จริงๆ" ซึ่งคำถามนี้ได้พลิกโฉมวิธีการออกแบบฟีเจอร์ทุกอย่างในระบบไปอย่างสิ้นเชิง
ซอฟต์แวร์ด้านความปลอดภัยที่ยอดเยี่ยมไม่ได้ถูกสร้างขึ้นมาจากการเลือกใช้ระบบคริปโตที่ซับซ้อนที่สุด แต่เกิดจากการตัดสินใจทางวิศวกรรมชิ้นเล็กๆ หลายร้อยรายการที่ทำงานประสานสอดคล้องกันอย่างลงตัว และนี่คือบทเรียนราคาแพงที่สุดที่ได้เรียนรู้จากการลงมือทำจริง
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น