วิธีตรวจสอบค่า SHA-256 ของไฟล์ที่ดาวน์โหลดในเบราว์เซอร์
เช็คซัมคือลายนิ้วมือสั้น ๆ ที่คำนวณจากเนื้อหาของไฟล์ หากคำนวณแฮชของไฟล์ที่ดาวน์โหลดแล้วได้ผลตรงกับค่าที่ผู้เผยแพร่ระบุไว้ แปลว่าไฟล์นั้นเหมือนกับไฟล์ที่ผู้เผยแพร่คำนวณทุกไบต์ หากต่างกันแม้เพียงหนึ่งบิต ค่าแฮชจะเปลี่ยนไปทั้งหมด ลากไฟล์ลงในเครื่องมือสร้างแฮช วางค่าที่เผยแพร่ไว้ แล้วเครื่องมือจะแสดงว่าอัลกอริทึมใดตรงกัน
เครื่องมือสร้างแฮชไฟล์ที่โหลดมาตรงกับต้นฉบับไหมใช้ฟรีเช็คซัมพิสูจน์อะไรได้บ้าง
เช็คซัมใช้ตรวจจับการเปลี่ยนแปลง ไม่ว่าจะเป็นไฟล์ที่ดาวน์โหลดไม่สมบูรณ์ เพราะการเชื่อมต่อไม่เสถียร ไฟล์เสียหายจากดิสก์ที่กำลังจะพัง หรือมิเรอร์ที่ให้บิลด์ต่างจากต้นฉบับ ข้อผิดพลาดเหล่านี้พบบ่อย และแฮชที่ตรงกันช่วยยืนยันว่าไม่ได้เกิดขึ้น
แต่เช็คซัมไม่ได้พิสูจน์ว่าผู้เผยแพร่น่าเชื่อถือ สมมุติผู้โจมตีสามารถเปลี่ยนไฟล์บนหน้าดาวน์โหลดและแก้ค่าแฮชที่แสดงข้างกันได้ ทั้งสองค่าจะตรงกัน และการตรวจสอบจะผ่าน เช็คซัมจะน่าเชื่อถือได้เท่ากับแหล่งที่คุณได้ค่าแฮชมา เพื่อให้การตรวจสอบมีความหมาย ค่าแฮชควรมาจากช่องทางที่ต่างจากไฟล์ เช่น ประกาศการเผยแพร่ที่มีลายเซ็นดิจิทัล ไฟล์เช็คซัมที่มีลายเซ็น GPG ประวัติของตัวจัดการแพ็กเกจ หรือเว็บไซต์ของผู้เผยแพร่ที่คุณพิมพ์ที่อยู่เองโดยตรง การคัดลอกแฮชจากลิงก์เดียวกับไฟล์แทบไม่ช่วยอะไรเลยเมื่อเจอผู้โจมตีที่ตั้งใจ
และค่าแฮชที่ตรงกันก็ไม่ได้บอกว่าโปรแกรมทำอะไร มันยืนยันเพียงว่าคุณมีไฟล์ที่ผู้เผยแพร่คำนวณแฮชไว้ ส่วนว่าไฟล์นั้นปลอดภัยหรือไม่ เป็นเรื่องของผู้เผยแพร่ ซึ่งต้องดูจากลายเซ็น ชื่อเสียงของแหล่งดาวน์โหลด และขั้นตอนการตรวจสอบของโปรเจกต์ หากโปรเจกต์มีขั้นตอนนั้น
ผู้เผยแพร่มักระบุค่าแฮชไว้ที่ไหน
ให้มองใกล้ปุ่มดาวน์โหลดก่อน โปรเจกต์จำนวนมากพิมพ์ค่า SHA-256 ไว้บนหน้าดาวน์โหลด โปรเจกต์ขนาดใหญ่มักเผยแพร่ไฟล์ที่มักตั้งชื่อว่า SHA256SUMS หรือคล้ายกัน โดยมีหนึ่งบรรทัดต่อการดาวน์โหลดหนึ่งรายการ และบางครั้งมีไฟล์ลายเซ็นวางอยู่ข้าง ๆ แพลตฟอร์มซอฟต์แวร์บางแห่งเก็บแฮชไว้ในข้อมูลเมตาของตัวเอง ส่วน README และบันทึกประกาศรุ่นก็เป็นที่ที่มักพบค่าแฮชเช่นกัน
ให้อ่านชื่ออัลกอริทึมด้วย บรรทัดที่ระบุ SHA-256 ต้องใช้แฮช SHA-256 ซึ่งมี 64 อักขระเลขฐานสิบหก ค่าที่มี 32 อักขระคือ MD5 และ 40 อักขระคือ SHA-1 เครื่องมือต้องรู้ว่ากำลังเทียบค่าแบบไหน และคุณก็ต้องรู้เช่นกัน
เทียบแฮชใน 4 ขั้นตอน
- ดาวน์โหลดไฟล์หนึ่งครั้งจากหน้าทางการ
- เปิดเครื่องมือสร้างแฮช เลือก ไฟล์ แล้วลากไฟล์เข้ามา รอจนเสร็จ ไฟล์ขนาดใหญ่มากอาจใช้เวลานาน และอาจเกินสิ่งที่เบราว์เซอร์รองรับในหน่วยความจำได้
- วางค่าแฮชที่เผยแพร่ในช่อง ค่าแฮชที่คาดหวัง (ไม่บังคับ) ระบบไม่สนใจตัวพิมพ์ใหญ่-เล็กและช่องว่าง จึงใช้ค่าตัวพิมพ์ใหญ่ที่คัดลอกจากหน้าเว็บได้
- ดูผลการเทียบ เครื่องมือจะแสดงว่าอัลกอริทึมใดตรงกัน หากไม่ตรงกับอันใด อย่าเพิ่งรันไฟล์ ให้ดาวน์โหลดใหม่ หากไฟล์ที่สองยังไม่ผ่าน แปลว่าค่าที่เผยแพร่กับไฟล์ของคุณไม่ตรงกัน ควรถามผู้เผยแพร่ว่าค่าใดถูกต้อง
หากชอบใช้เทอร์มินัล การตรวจสอบเดียวกันทำได้ด้วยคำสั่งเดียว บน Linux รัน sha256sum ตามด้วยไฟล์ บน macOS ใช้ shasum -a 256 ได้ผลเหมือนกัน ใน Windows PowerShell ใช้ Get-FileHash -Algorithm SHA256 ตามด้วยพาธของไฟล์ ผลลัพธ์คือสตริงเลขฐานสิบหกชุดเดียวกับที่เครื่องมือแสดง
แฮชไม่ได้มีไว้เทียบกับค่าที่เผยแพร่เท่านั้น การตรวจสอบไฟล์เสียหาย ใช้แนวคิดเดียวกันเพื่อบอกว่าไฟล์เสียหายหรือไม่ ส่วนไฟล์ซ้ำ ก็ค้นหาด้วยวิธีเดียวกัน คือเทียบแฮชเพื่อหาสำเนาที่เหมือนกันในโฟลเดอร์
แฮชข้อความที่พิมพ์
โหมดข้อความจะแฮชสิ่งที่คุณพิมพ์หรือวางไว้ โดยแปลงข้อความเป็นไบต์ UTF-8 ก่อน กล่องข้อความจัดเก็บการขึ้นบรรทัดใหม่เป็น LF ดังนั้นข้อความที่วางจะถูกแฮชด้วยการขึ้นบรรทัดแบบ LF ไม่ว่ามาจากระบบใด ไฟล์ที่บันทึกบน Windows มักใช้ CRLF ท้ายแต่ละบรรทัดแทน และไบต์ของไฟล์นั้นให้แฮชที่ต่างกัน ดังนั้นเมื่อผู้เผยแพร่ให้ค่าแฮชของไฟล์ ให้ใช้โหมดไฟล์และแฮชตัวไฟล์นั้นโดยตรง หากต้องการดูว่าสองเวอร์ชันต่างกันตรงไหนบ้าง เครื่องมือเทียบข้อความ จะแสดงการเปลี่ยนแปลงเคียงข้างกัน
ทำไม MD5 และ SHA-1 จึงไม่ปลอดภัย
เครื่องมือมี MD5 และ SHA-1 เพราะหน้าดาวน์โหลดรุ่นเก่าจำนวนมากยังแสดงค่าเหล่านี้อยู่ สำหรับการตรวจจับไฟล์เสียหายถือว่าใช้ได้ การเปลี่ยนแปลงโดยไม่ตั้งใจแทบจะไม่มีทางทำให้ได้ค่า MD5 หรือ SHA-1 ที่ตรงกันโดยบังเอิญ
แต่เมื่อเจอผู้โจมตี ทั้งสองค่านี้ไม่ปลอดภัย การชนกัน (collision) คือการที่อินพุตต่างกันสองชุดให้ค่าแฮชเดียวกัน ปัจจุบันสร้าง collision ของ MD5 ได้ด้วยต้นทุนต่ำ ดังนั้นการใช้งานด้านความปลอดภัยไม่ควรพึ่ง MD5 เลย มีการสาธิต collision ของ SHA-1 ต่อสาธารณะในปี 2017 และเบราว์เซอร์กับหน่วยงานออกใบรับรองก็เลิกใช้ SHA-1 สำหรับลายเซ็นแล้ว หากผู้เผยแพร่ให้ได้เฉพาะ MD5 หรือ SHA-1 ให้ขอ SHA-256 หรือไฟล์เช็คซัมที่มีลายเซ็นแทน และสำหรับกรณีที่มีคนอาจแก้ไขไฟล์โดยตั้งใจ ให้ใช้ SHA-256 หรือที่แข็งแกร่งกว่า ณ เวลาที่เขียนบทความนี้ยังไม่มีวิธีโจมตีเชิงปฏิบัติที่ทำลาย SHA-256 ได้ คู่มืออัลกอริทึม อธิบายว่าควรเลือกแบบไหน
คำตอบสั้น ๆ
ค่าแฮชที่ตรงกันหมายความว่าไฟล์ปลอดภัยหรือไม่ หมายความว่าไฟล์นั้นคือไฟล์ที่ถูกคำนวณแฮชไว้ ส่วนความปลอดภัยขึ้นอยู่กับว่าค่าแฮชมาจากแหล่งที่คุณเชื่อถือหรือไม่
ไฟล์สองไฟล์ต่างกันจะมี SHA-256 เดียวกันได้หรือไม่ ในทางปฏิบัติไม่ได้ ณ เวลาที่เขียนบทความนี้ยังไม่มีวิธีที่ใช้ได้จริงในการหาคู่ไฟล์เช่นนั้น
ทำไมค่าแฮชไม่ตรงหลังจากคัดลอกมา ให้ตรวจชื่ออัลกอริทึมก่อน จากนั้นดูว่ามีอักขระหายไปหรือเกินมา หรือการคัดลอกถูกตัดออกหรือไม่ ระบบไม่สนใจตัวพิมพ์ใหญ่-เล็กและช่องว่าง จึงไม่ใช่สาเหตุ
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


