ในประเทศไทย การดาวน์โหลด 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 จึงยังพบได้ในโปรแกรมบีบอัดไฟล์และโปรโตคอลเครือข่ายสำหรับตรวจสอบข้อผิดพลาด ไม่ใช่ในที่ที่ต้องการความปลอดภัยจริง ๆ