MD5 (Message-Digest Algorithm) เป็นโปรโตคอลทางเข้ารหัสใช้สำหรับยืนยันข้อความ ตรวจสอบความสมบูรณ์ของเนื้อหา และลายเซ็นดิจิทัล ทำงานบนฟังก์ชันแฮชที่ตรวจสอบว่าไฟล์ที่ส่งตรงกับไฟล์ที่รับฝ่ายได้รับหรือไม่
หลักการทำงาน
MD5 เป็นรุ่นที่ 5 ของ Message-Digest Algorithm ที่ロン รีเวสต์ (Ron Rivest) พัฒนา สร้าง Message Digest 128 บิต กระบวนการ:
- แปลงข้อความธรรมดาเป็นบล็อก 512 บิต
- แบ่งแต่ละบล็อกเป็น 16 ส่วนย่อย ส่วนละ 32 บิต
- ประมวลผลผ่าน 5 ขั้นตอน: Padding, Append Length, แบ่งบล็อก 512 บิต, เริ่มต้น Chaining Variables และ 4 รอบการประมวลผล
- ใช้ค่าคงที่ต่างๆ ในแต่ละรอบ
- ผลลัพธ์คือ Message Digest 128 บิต (4 วิร์ด × 32 บิต)
การใช้งานหลัก
- Checksum สำหรับเอกสาร: สร้างแฮชเฉพาะตัวสำหรับไฟล์ ผู้ใช้คำนวณแฮชของไฟล์ที่ดาวน์โหลดมาเปรียบเทียบ หากตรงกัน = ไฟล์ไม่ถูกปลอมแปลง
- ยืนยันตัวตนไฟล์: ใช้ MD5 hash เช็คไฟล์สำเนากับต้นฉบับ รวดเร็วกว่าเช็คทีละบิต
- เก็บรหัสผ่านแบบหนึ่งทาง: ระบบปฏิบัติการ UNIX หลายระบบรองรับ MD5 checksum ในแพ็กเกจการกระจาย
ข้อจำกัดและช่องโหว่สำคัญ
นักวิจัยพบว่า MD5 ไม่ทนทานต่อการโจมตี Collision (Collision Resistance) — สามารถสร้างไฟล์สองไฟล์ที่ต่างกันแต่ให้ค่าแฮช MD5 เหมือนกันได้ เนื่องจาก:
- โปรโตคอลการยืนยันตัวตนชื่อดังอย่าง SSL/TLS ต้องการความทนทานต่อ Collision
- MD5 จึงถูกแทนที่ด้วยอัลกอริทึมแฮชใหม่ๆ เช่น SHA-256, SHA-3
ปัจจุบัน MD5 ใช้ได้เฉพาะสำหรับ การตรวจสอบความสมบูรณ์ไฟล์ทั่วไป (non-security checksum) ไม่ควรใช้ในงานเข้ารหัส ลายเซ็นดิจิทัล หรือการยืนยันตัวตนที่ต้องการความปลอดภัยสูง