อัลกอริทึมวิทยาการเข้ารหัสที่เสียหายหรือมีความเสี่ยง

หมวดหมู่ OWASP: MASVS-CRYPTO: การเข้ารหัส

ภาพรวม

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

ผลกระทบ

ข้อมูลที่ละเอียดอ่อนอาจถูกเปิดเผย แก้ไข หรือปลอมแปลง อัลกอริทึมการเข้ารหัสที่เสียหรือมีความเสี่ยงอาจนำไปสู่ช่องโหว่และอาจถูกนำไปใช้ในทางที่ผิดเพื่อถอดรหัสข้อมูลที่ละเอียดอ่อน ดัดแปลงข้อมูล หรือแอบอ้างเป็นเอนทิตีที่ถูกต้องตามกฎหมาย ผลกระทบจากการใช้ประโยชน์จากช่องโหว่ดังกล่าวอาจมีตั้งแต่การละเมิดข้อมูลและการสูญเสียทางการเงินไปจนถึงความเสียหายต่อชื่อเสียงและการสูญเสียความไว้วางใจจากผู้ใช้

ความเสี่ยง: ฟังก์ชันแฮชแบบเข้ารหัสที่อ่อนแอหรือใช้งานไม่ได้

การใช้ฟังก์ชันแฮชการเข้ารหัสที่อ่อนแอหรือใช้งานไม่ได้ (เช่น MD5 หรือ SHA1) ก่อให้เกิดความเสี่ยงอย่างมากต่อความปลอดภัยและความสมบูรณ์ของข้อมูล ฟังก์ชันแฮช ออกแบบมาเพื่อสร้างลายนิ้วมือ (แฮช) ที่ไม่ซ้ำกันและมีความยาวคงที่ของข้อมูลที่ป้อน จึงมีประโยชน์สำหรับวัตถุประสงค์ต่างๆ รวมถึงการยืนยันความสมบูรณ์ของข้อมูล การจัดเก็บรหัสผ่าน และลายเซ็นดิจิทัล อย่างไรก็ตาม เมื่อใช้ฟังก์ชันแฮชที่อ่อนแอหรือถูกบุกรุก อาจเกิดช่องโหว่หลายประการดังนี้

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

การลดปัญหา

การใช้ฟังก์ชันแฮชแบบเข้ารหัสที่แข็งแกร่งและผ่านการตรวจสอบอย่างดี เช่น SHA-2 หรือ SHA-3 และการอัปเดตฟังก์ชันเหล่านี้อย่างต่อเนื่องเมื่อพบช่องโหว่ใหม่ๆ เป็นสิ่งสำคัญในการลดความเสี่ยงเหล่านี้ นอกจากนี้ การนำแนวทางปฏิบัติด้านความปลอดภัยมาใช้ เช่น การเพิ่ม Salt ในรหัสผ่านและการใช้อัลกอริทึมการแฮชเฉพาะรหัสผ่าน เช่น bcrypt หรือ Argon2 จะช่วยเพิ่มการปกป้องข้อมูลได้อีกด้วย


ความเสี่ยง: ฟังก์ชันการเข้ารหัสที่อ่อนแอหรือใช้งานไม่ได้

การใช้ฟังก์ชันการเข้ารหัสลับที่ไม่ปลอดภัยหรือใช้งานไม่ได้ (เช่น DES หรือ RC4) ทำให้เกิดความเสี่ยงอย่างร้ายแรงต่อการรักษาความลับของข้อมูลที่ละเอียดอ่อน การเข้ารหัส ออกแบบมาเพื่อปกป้องข้อมูลโดยการแปลงข้อมูลให้อยู่ในรูปแบบที่อ่านไม่ได้ แต่หากอัลกอริทึมการเข้ารหัสมีข้อบกพร่อง ก็อาจมีการข้ามการป้องกันเหล่านี้ได้

  • การละเมิดข้อมูล: อัลกอริทึมการเข้ารหัสที่อ่อนแอมีแนวโน้มที่จะถูกโจมตีหลายรูปแบบ รวมถึงการโจมตีแบบ Brute Force, การโจมตีแบบข้อความธรรมดาที่ทราบ และ เทคนิคการวิเคราะห์รหัสลับ หากการโจมตีสำเร็จ การโจมตีเหล่านี้จะเปิดเผยข้อมูลที่เข้ารหัส ทำให้มีการเข้าถึงข้อมูลที่ละเอียดอ่อนโดยไม่ได้รับอนุญาต เช่น รายละเอียดส่วนบุคคล บันทึกทางการเงิน หรือข้อมูลธุรกิจที่เป็นความลับ
  • การดัดแปลงและแก้ไขข้อมูล: แม้ว่าผู้โจมตีจะถอดรหัสข้อมูลได้ไม่สมบูรณ์ แต่ก็ยังอาจดัดแปลงข้อมูลได้โดยไม่ถูกตรวจพบหาก อัลกอริทึมการเข้ารหัสอ่อนแอ ซึ่งอาจนำไปสู่การแก้ไขข้อมูลโดยไม่ได้รับอนุญาต ซึ่งอาจส่งผลให้เกิดการฉ้อโกง การสื่อให้เข้าใจผิด หรือกิจกรรมที่เป็นอันตรายอื่นๆ

การลดปัญหา

ใช้อัลกอริทึมการเข้ารหัสที่รัดกุมในฟังก์ชันการเข้ารหัส

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

อัลกอริทึมเริ่มต้นที่แนะนำให้ใช้มีดังนี้

  • การเข้ารหัสแบบสมมาตร
    • AES-128/AES-256 ที่มีโหมด GCM
    • Chacha20
  • การเข้ารหัสแบบอสมมาตร
    • RSA-2048/RSA-4096 ที่มีระยะห่างจากขอบ OAEP

ใช้ Primitive ที่ปลอดภัยจากไลบรารีการเข้ารหัสเพื่อลดข้อผิดพลาดที่พบบ่อย

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


ความเสี่ยง: ฟังก์ชันลายเซ็นการเข้ารหัสที่อ่อนแอหรือใช้งานไม่ได้

การใช้ฟังก์ชันลายเซ็นเข้ารหัสที่อ่อนแอหรือใช้งานไม่ได้ (เช่น RSA-PKCS#1 v1.5 หรือฟังก์ชันที่อิงตามฟังก์ชันแฮชที่อ่อนแอ) ก่อให้เกิดความเสี่ยงร้ายแรงต่อความสมบูรณ์ของข้อมูลและการสื่อสาร ลายเซ็นดิจิทัล ออกแบบมาเพื่อการตรวจสอบสิทธิ์ การปฏิเสธความรับผิด และความสมบูรณ์ของข้อมูล เพื่อให้มั่นใจว่าข้อความหรือเอกสารมาจากผู้ส่งที่เฉพาะเจาะจง และไม่มีการดัดแปลง อย่างไรก็ตาม เมื่ออัลกอริทึมลายเซ็นพื้นฐาน มีข้อบกพร่อง การรับประกันเหล่านี้อาจถูกบุกรุกได้

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

การลดปัญหา

ใช้อัลกอริทึมลายเซ็นการเข้ารหัสที่รัดกุม

การใช้ อัลกอริทึมลายเซ็นการเข้ารหัสที่รัดกุมและผ่านการตรวจสอบอย่างดีจึงเป็นสิ่งสำคัญในการลดความเสี่ยงเหล่านี้

  • RSA-2048/RSA-4096 ที่มีระยะห่างจากขอบ PSS
  • อัลกอริทึมลายเซ็นดิจิทัลโดยใช้เส้นโค้งวงรี (ECDSA) ที่มีเส้นโค้งที่ปลอดภัย

ใช้ Primitive ที่ปลอดภัยจากไลบรารีการเข้ารหัสเพื่อลดข้อผิดพลาดที่พบบ่อย

การเลือกอัลกอริทึมลายเซ็นที่เหมาะสมเป็นสิ่งสำคัญ แต่หากต้องการลดช่องโหว่ด้านความปลอดภัยอย่างแท้จริง ให้พิจารณาใช้ไลบรารีการเข้ารหัสที่ให้การรับประกันความปลอดภัยที่แข็งแกร่ง โดยค่าเริ่มต้น ตัวอย่างเช่น Tink ช่วยลดความซับซ้อนในการเลือก ลายเซ็นโดยเสนอ ECDSA ที่มีเส้นโค้งที่ปลอดภัยเป็นตัวเลือกเริ่มต้น ทั้งหมดนี้อยู่ใน API ที่ตรงไปตรงมาและครอบคลุม แนวทางนี้ไม่เพียงแต่ช่วยเพิ่ม ความปลอดภัย แต่ยังช่วยเพิ่มประสิทธิภาพการพัฒนาด้วยการลดความจำเป็นในการกำหนดค่า ที่ซับซ้อนหรือการตัดสินใจ


แหล่งข้อมูล