MD5, SHA-1 หรือ SHA-256: ควรใช้แฮชแบบไหนกับไฟล์ดาวน์โหลด
เมื่อจะตรวจสอบไฟล์ดาวน์โหลด ควรใช้ SHA-256 หรือ SHA-512 ทุกครั้งที่ผู้เผยแพร่มีให้ MD5 และ SHA-1 ยังใช้ตรวจจับความเสียหายโดยไม่ตั้งใจได้ เช่น ไฟล์ดาวน์โหลดที่ขาดหายไปครึ่งทาง แต่นักวิจัยได้แสดงให้เห็นแล้วว่าไฟล์สองไฟล์ที่ต่างกันสามารถถูกสร้างให้มีค่า MD5 หรือ SHA-1 เดียวกันได้ ดังนั้นเมื่อค่าจากอัลกอริทึมเหล่านี้ตรงกัน ก็ไม่สามารถพิสูจน์ได้ว่าไฟล์นั้นเป็นไฟล์ที่ผู้เผยแพร่สร้างขึ้นจริง แฮชคือลายนิ้วมือ ไม่ใช่การเข้ารหัส และจะมีความหมายก็ต่อเมื่อมาจากแหล่งที่คุณเชื่อถือได้เท่านั้น
เครื่องมือสร้างแฮชไฟล์ที่โหลดมาตรงกับต้นฉบับไหมใช้ฟรีแฮชทำอะไรได้และทำอะไรไม่ได้
ฟังก์ชันแฮชจะแปลงข้อมูลที่มีขนาดใดก็ได้ให้เป็นลายนิ้วมือที่มีความยาวคงที่ ข้อมูลเดิมจะได้ลายนิ้วมือเดิมเสมอ และหากเปลี่ยนแค่หนึ่งไบต์ ลายนิ้วมือที่ได้จะต่างไปโดยสิ้นเชิง จึงทำให้แฮชเหมาะกับการเปรียบเทียบ หากลายนิ้วมือของสำเนาที่คุณมีตรงกับที่ประกาศไว้ ไฟล์ทั้งสองแทบจะเหมือนกันทุกประการ
แฮชไม่ใช่การเข้ารหัส ไม่สามารถย้อนกลับเพื่อกู้ไฟล์ได้ และไม่ใช้กุญแจใด ๆ มันไม่ได้ซ่อนอะไรไว้ และตัวมันเองไม่ได้พิสูจน์ว่าใครเป็นผู้สร้างไฟล์ checksum ก็คือแฮชที่ผู้เผยแพร่แสดงไว้ข้างลิงก์ดาวน์โหลด เพื่อให้คุณเอาไปเทียบนั่นเอง
ตัวเลือกทั่วไปสี่แบบ
| อัลกอริทึม | ความยาวผลลัพธ์ | ใช้สำหรับ |
|---|---|---|
| MD5 | 128 บิต, 32 อักขระเฮกซะเดซิมอล | ตรวจจับความเสียหายโดยไม่ตั้งใจเท่านั้น |
| SHA-1 | 160 บิต, 40 อักขระเฮกซะเดซิมอล | การตรวจแบบเดิม หลีกเลี่ยงการใช้เพื่อความปลอดภัย |
| SHA-256 | 256 บิต, 64 อักขระเฮกซะเดซิมอล | ตัวเลือกที่นิยมสำหรับไฟล์ดาวน์โหลด |
| SHA-512 | 512 บิต, 128 อักขระเฮกซะเดซิมอล | ตระกูลเดียวกัน แต่ให้ผลลัพธ์ที่ยาวกว่า |
ทำไม MD5 และ SHA-1 จึงไม่เพียงพอ
การชน (collision) หมายถึงข้อมูลนำเข้าสองชุดที่ต่างกันแต่ให้แฮชเดียวกัน การชนของ MD5 เป็นที่รู้จักมาตั้งแต่ปี 2004 ส่วนในปี 2017 นักวิจัยได้เผยแพร่การชนของ SHA-1 ในทางปฏิบัติ คือไฟล์ PDF สองไฟล์ที่ต่างกันแต่มีแฮชเดียวกัน
สำหรับไฟล์ดาวน์โหลด เรื่องนี้สำคัญเพราะผู้โจมตีที่ควบคุมไฟล์ได้สามารถสร้างไฟล์ที่เป็นอันตรายขึ้นมา โดยให้มีค่า MD5 หรือ SHA-1 เหมือนกับไฟล์ของแท้ได้ หากผู้เผยแพร่ระบุเฉพาะ MD5 หรือ SHA-1 การที่ค่าตรงกันก็ไม่ได้ยืนยันว่าไฟล์นั้นของแท้อีกต่อไป คู่มือ FAQ ของเครื่องมือสร้างแฮชเองก็ย้ำประเด็นนี้ว่า ให้ใช้ SHA-256 หรือ SHA-512 กับทุกเรื่องที่เกี่ยวข้องกับความปลอดภัย
ณ เวลาที่เขียนบทความนี้ ยังไม่พบการชนของ SHA-256 ที่ทำได้จริง นี่คือเหตุผลที่ SHA-256 เป็นตัวเลือกที่นิยม คู่มือตรวจสอบ checksum ด้วย SHA-256 อธิบายขั้นตอนไว้อย่างละเอียด
เลือกให้ถูกแบบ
- หากผู้เผยแพร่มี SHA-256 หรือ SHA-512 ให้ใช้ค่านั้น และไม่ต้องพิจารณา MD5 และ SHA-1 เพื่อความปลอดภัย
- หากมีเฉพาะ MD5 หรือ SHA-1 ก็ยังควรตรวจด้วย เครื่องมือสร้างแฮช เพราะช่วยจับไฟล์ที่เสียหายหรือไม่สมบูรณ์ได้ ให้ถือว่าค่าที่ตรงกันหมายถึง "ไม่เสียหาย" ไม่ใช่ "ของแท้"
- หากไม่มีแฮชให้เลย ก็ตรวจความสมบูรณ์ด้วยวิธีนี้ไม่ได้ ให้ดาวน์โหลดจากหน้าทางการที่ใช้ HTTPS และหากโครงการเผยแพร่ไฟล์ checksum ที่มีลายเซ็น ก็ให้ตรวจลายเซ็นด้วย
เครื่องมือสร้างแฮช คำนวณ MD5, SHA-1, SHA-256, SHA-384 และ SHA-512 พร้อมกันได้ ทั้งสำหรับข้อความหรือไฟล์หนึ่งไฟล์ ไฟล์จะถูกอ่านในเบราว์เซอร์ของคุณ และไม่มีการอัปโหลดใด ๆ ขึ้นเซิร์ฟเวอร์ วางแฮชที่ผู้เผยแพร่ให้ไว้ในช่อง Expected hash เครื่องมือจะลบช่องว่างและไม่สนใจตัวพิมพ์ใหญ่-เล็กก่อนเปรียบเทียบ ดังนั้นแฮชที่พิมพ์เป็นตัวพิมพ์ใหญ่หรือแบ่งเป็นกลุ่มก็ยังเทียบได้ตรงกัน ไฟล์ขนาดใหญ่มากอาจทำให้หน่วยความจำของเบราว์เซอร์รับไม่ไหว ในกรณีนั้นให้ใช้เครื่องมือบรรทัดคำสั่ง เช่น sha256sum บน Linux หรือ shasum -a 256 บน Mac
ค่าที่ตรงกันบอกอะไรคุณได้บ้าง
หากแฮชตรงกัน หมายความว่าสำเนาของคุณแทบจะเหมือนกับไฟล์ที่ถูกนำมาคำนวณทุกประการ แต่ไม่ได้บอกว่าใครเป็นคนคำนวณ หรือไฟล์นั้นเป็นไฟล์ที่ผู้เผยแพร่ตั้งใจจะปล่อยจริงหรือไม่ ในจุดนี้แหล่งที่มาสำคัญกว่าอัลกอริทึม หากแฮชมาจากหน้าประกาศรุ่นของผู้เผยแพร่เอง และคุณเข้าไปที่หน้านั้นโดยตรง ไม่ได้ผ่านลิงก์ในข้อความที่ได้รับมา ค่าที่ตรงกันถือเป็นหลักฐานที่น่าเชื่อถือ แต่ถ้าแฮชมาจากความคิดเห็น มิเรอร์ หรือฟอรัม ให้ถือว่ายังไม่ได้รับการยืนยัน จนกว่าคุณจะพบค่าเดียวกันในหน้าที่เชื่อถือได้
checksum ต้องมาจากแหล่งที่เชื่อถือได้
checksum ที่วางอยู่บนเซิร์ฟเวอร์เดียวกันกับไฟล์ พิสูจน์ได้เพียงว่าสำเนาตรงกับสิ่งที่เซิร์ฟเวอร์นั้นเก็บไว้ หากผู้โจมตีเปลี่ยนไฟล์ เขาก็เปลี่ยน checksum ที่อยู่ข้างกันได้เช่นกัน checksum จะช่วยได้ก็ต่อเมื่อมาจากที่อื่นที่แยกออกจากกัน เช่น บันทึกประกาศรุ่นที่มีลายเซ็นของโครงการ หรือหน้าที่คุณเข้าถึงโดยไม่ผ่านลิงก์ดาวน์โหลด
แฮชสำหรับรหัสผ่านไม่เหมือนกัน
การเก็บรหัสผ่านก็ใช้การแฮชเช่นกัน แต่ต้องใช้แฮชที่ช้าโดยออกแบบมาสำหรับรหัสผ่าน และมี salt ที่ไม่ซ้ำกันสำหรับแต่ละรหัสผ่าน แฮชที่เร็วอย่าง SHA-256 ไม่เหมาะกับงานนี้ สำหรับไฟล์ดาวน์โหลด เป้าหมายคือการเปรียบเทียบ ซึ่ง SHA-256 ทำได้ดีมาก
กรณีพิเศษ
- ตัวพิมพ์ อักษรเฮกซ์ A ถึง F มีค่าเท่ากันไม่ว่าจะเป็นตัวพิมพ์ใหญ่หรือเล็ก จึงเปรียบเทียบได้โดยไม่ต้องสนใจตัวพิมพ์
- แฮชที่ถูกตัดทอน บางเว็บไซต์แสดงเฉพาะส่วนต้นของแฮช การตรงกันเพียงบางส่วนพิสูจน์อะไรได้น้อยมาก จึงควรเทียบทั้งค่า
- หลายไฟล์ บางโครงการเผยแพร่ไฟล์ checksum ไฟล์เดียวสำหรับทั้งรุ่น ให้หาบรรทัดที่มีชื่อไฟล์ตรงทุกตัวอักษร เพราะการตรงกับบรรทัดของไฟล์อื่นไม่ได้พิสูจน์อะไรเลย
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


