บทความทั้งหมด

Checksum Verifier: วิธีตรวจสอบว่าไฟล์ไม่เสียหาย

ในประเทศไทย การดาวน์โหลด APK จากเว็บไซต์บุคคลที่สามหรือลิงก์ในไลน์/เฟซบุ๊กแทนที่จะเป็น Google Play Store เป็นเรื่องที่พบได้บ่อย โดยเฉพาะแอปธนาคารหรือแอปหน่วยงานรัฐบางตัว ช่องทางนี้เองที่มิจฉาชีพมักใช้แจก APK ปลอมที่หน้าตาเหมือนแอปธนาคารหรือแอปราชการ (เช่น แอปเงินช่วยเหลือหรือแอปยืนยันตัวตน) เพื่อขโมยข้อมูล การเทียบ checksum ที่หน่วยงานต้นทางเผยแพร่กับไฟล์ที่ดาวน์โหลดมาเป็นวิธีง่าย ๆ ที่ช่วยจับการสับเปลี่ยนแบบนี้ได้ก่อนติดตั้ง

checksum ตรวจจับความเสียหายหรือการปลอมแปลงอย่างไร

เนื่องจาก avalanche effect ของฟังก์ชันแฮช ไม่ว่าจะเป็นความเสียหายโดยบังเอิญระหว่างการส่งหรือการแก้ไขโดยเจตนา แค่ไบต์เดียวที่เปลี่ยนไปก็จะเปลี่ยนแฮชที่คำนวณได้ของไฟล์ทั้งหมด ดังนั้นความไม่ตรงกันใด ๆ ระหว่าง checksum ที่คาดหวังกับที่คำนวณได้จึงหมายความอย่างชัดเจนว่าไฟล์แตกต่างจากต้นฉบับ — ทีละไบต์

สิ่งที่ checksum ไม่รับประกัน

แฮชที่ตรงกันยืนยันเพียงว่าไฟล์เหมือนกับไฟล์ที่ใช้คำนวณแฮชที่เผยแพร่เท่านั้น ไม่ได้ยืนยันว่าต้นฉบับนั้นปลอดภัย หากเว็บไซต์ปลอมเป็นผู้เผยแพร่ทั้ง APK อันตรายและ checksum ที่ "ตรงกัน" ขึ้นมาเอง การตรวจสอบจะไม่พบอะไรเลย — ดังนั้นค่าแฮชอ้างอิงต้องมาจากเว็บไซต์ทางการของธนาคารหรือหน่วยงาน ไม่ใช่จากแหล่งเดียวกับที่ดาวน์โหลดไฟล์ที่น่าสงสัยมา

Checksum เทียบกับลายเซ็นดิจิทัล

ต่างจาก checksum ลายเซ็นดิจิทัลถูกสร้างด้วยกุญแจส่วนตัวและตรวจสอบได้ด้วยกุญแจสาธารณะที่ตรงกันเท่านั้น Google Play ตรวจสอบลายเซ็นนี้อัตโนมัติตอนติดตั้ง แต่เมื่อติดตั้ง APK เองโดยตรง (sideload) การป้องกันนี้จะหายไป และการเทียบ checksum ด้วยตนเองจึงเป็นด่านตรวจสอบเดียวที่เหลืออยู่

ทำไมต้องใช้สิ่งนี้

  • ยืนยันว่า APK ของธนาคารหรือหน่วยงานรัฐที่ดาวน์โหลดนอกสโตร์ทางการไม่ถูกแก้ไข
  • เปรียบเทียบไฟล์ขนาดใหญ่สองไฟล์อย่างรวดเร็วโดยไม่ต้องเทียบทีละไบต์
  • ตรวจสอบว่าสำเนาสำรองของไฟล์เหมือนกับต้นฉบับ

เหตุใดบางครั้งจึงใช้ CRC32 แทน SHA-256

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

ลองใช้เครื่องมือ