1. ไฟล์ชื่อเดียวกันต่างจากไฟล์ที่มีเนื้อหาเหมือนกัน
เมื่อชื่อและขนาดของไฟล์ติดตั้งที่ดาวน์โหลดตรงกับหน้าคำแนะนำ เราอาจคิดได้ง่ายว่าได้รับไฟล์มาอย่างถูกต้องแล้ว แต่ชื่อเปลี่ยนได้ และไฟล์ที่มีขนาดเท่ากันก็อาจมีเนื้อหาต่างกัน ในทางกลับกัน การคัดลอกไฟล์ภาพถ่ายเป็นอีกชื่อหนึ่งไม่ได้หมายความว่าไบต์ภายในจะต้องเปลี่ยนไปเสมอ แฮชจึงช่วยในการเปรียบเทียบ โดยนำเนื้อหาไฟล์เข้าสู่การคำนวณที่กำหนดไว้แล้วแสดงเป็นค่าสั้น ๆ คำถามที่ต้องการตรวจสอบไม่ใช่ว่าชื่อไฟล์ดูน่าเชื่อถือหรือไม่ แต่คือไบต์ที่ได้รับตรงกับค่าอ้างอิงที่เชื่อถือได้หรือไม่ เมื่อย้ายไฟล์สำรองไปยังอุปกรณ์จัดเก็บข้อมูลอื่น ก็สามารถตั้งคำถามเดียวกันได้
SHA-256 เป็นอัลกอริทึมที่สร้างค่าแฮชขนาด 256 บิตจากข้อมูลนำเข้า โดยทั่วไปแสดงเป็นเลขฐานสิบหก 64 หลัก เพราะเลขฐานสิบหกหนึ่งหลักแทน 4 บิต แม้ไฟล์จะใหญ่ขึ้น ความยาวของผลลัพธ์ก็ไม่ได้เพิ่มตามสัดส่วนขนาดไฟล์ เมื่อใช้อัลกอริทึมเดียวกันกับไบต์ชุดเดียวกัน จะได้ผลลัพธ์เดียวกัน อย่างไรก็ตาม เพราะต้องนำข้อมูลนำเข้าทั้งหมดไปแทนด้วยค่าที่มีความยาวจำกัด ตามหลักการจึงมีการชนกันได้ กล่าวคือข้อมูลนำเข้าต่างกันแต่ได้ค่าเดียวกัน ควรแยกคำกล่าวว่าใช้เปรียบเทียบในทางปฏิบัติได้ ออกจากคำกล่าวว่าตั้งชื่อให้ทุกไฟล์อย่างไม่ซ้ำกันในทางคณิตศาสตร์ RFC 6234 มีวิธีคำนวณแฮชและข้อมูลทดสอบ รวมถึง SHA-256
2. แฮชไม่ใช่การเข้ารหัสหรือสำเนาไฟล์ที่ย่อขนาด
การรู้ค่าแฮชไม่ได้ทำให้มีปุ่มถอดรหัสเพื่อกู้เอกสารหรือภาพถ่ายต้นฉบับกลับมา การเข้ารหัสออกแบบให้เรียกคืนข้อความต้นฉบับได้ด้วยกุญแจที่เหมาะสม แต่แฮชเชิงวิทยาการเข้ารหัสไม่ใช่รูปแบบจัดเก็บข้อมูลเพื่อกู้ต้นฉบับ อย่างไรก็ตาม นี่ไม่ได้หมายความว่าเพียงเปิดเผยเฉพาะแฮชก็จะเก็บข้อมูลนำเข้าทุกแบบเป็นความลับได้ หากข้อมูลนำเข้าที่เป็นไปได้มีเพียงไม่กี่แบบ ก็สามารถคำนวณแฮชของแต่ละแบบมาเปรียบเทียบกันได้ ดังนั้นจึงไม่ควรขยายคำอธิบาย SHA-256 สำหรับตรวจสอบไฟล์ไปเป็นคำแนะนำว่า แค่แฮชรหัสผ่านโดยตรงแล้วเก็บไว้ก็เพียงพอ การตรวจสอบความครบถ้วนสมบูรณ์ การรักษาความลับ และการจัดเก็บรหัสผ่านเป็นงานที่มีข้อกำหนดต่างกัน
เมื่อคำนวณทั้งไฟล์ สิ่งที่เปรียบเทียบก็ไม่ใช่เพียงตัวอักษรที่เห็นบนหน้าจอ แม้ดูเหมือนประโยคเดียวกัน แต่ไบต์อาจต่างกันได้หากรูปแบบการขึ้นบรรทัดใหม่ การเข้ารหัสอักขระ หรือเมทาดาทาภายในเอกสารต่างกัน ไฟล์ที่ได้หลังแตกไฟล์บีบอัดเป็นคนละเป้าหมายในการเปรียบเทียบกับไฟล์บีบอัดเดิม หากปรับอักขระให้อยู่ในรูปมาตรฐานหรือเปลี่ยนการขึ้นบรรทัดก่อนคำนวณ ก็จะได้แฮชของข้อมูลที่ผ่านการแปลงนั้นแล้ว หากผู้เผยแพร่ให้ค่าของไฟล์บีบอัดต้นฉบับ ควรเปรียบเทียบกับตัวไฟล์บีบอัดที่ได้รับก่อน ความแตกต่างนี้เป็นตัวอย่างการนำเรื่องการแสดงผลกับไบต์จากบทความ Unicode และ UTF-8 ที่มีอยู่แล้ว มาใช้กับการตรวจสอบไฟล์จริง
3. เปรียบเทียบไฟล์ที่ดาวน์โหลดด้วยอัลกอริทึมและค่าอ้างอิงเดียวกัน
ก่อนตรวจสอบ ให้ดูเวอร์ชันเป้าหมาย ระบบปฏิบัติการ ชื่อไฟล์ และอัลกอริทึมแฮชควบคู่กันในคำแนะนำการเผยแพร่อย่างเป็นทางการของผู้สร้าง ไฟล์ติดตั้งสำหรับระบบปฏิบัติการอื่นหรือค่าของเวอร์ชันอื่นไม่สามารถใช้เป็นเกณฑ์เปรียบเทียบได้ ใน PowerShell สามารถอ่านและคำนวณไฟล์ในเครื่องด้วย Get-FileHash -LiteralPath '.\download.zip' -Algorithm SHA256 คำสั่งนี้ไม่ได้เรียกใช้งานเนื้อหาในพาธดังกล่าว เอกสารทางการของ Microsoft อธิบายว่าคำนวณค่าจากเนื้อหาไฟล์ และการเปลี่ยนชื่ออย่างเดียวไม่ทำให้ค่าเปลี่ยน ให้แก้ชื่อไฟล์และพาธให้ตรงกับไฟล์ที่ได้รับจริง และอย่าแก้ไขไฟล์ระหว่างคำนวณ
ในผลลัพธ์ ให้เทียบทั้ง 64 หลักในช่อง Hash กับค่า SHA-256 ที่ผู้เผยแพร่ประกาศ อย่าสรุปว่าทั้งค่าตรงกันเพียงเพราะหลักต้นหรือท้ายไม่กี่หลักเหมือนกัน ตัวอักษรภาษาอังกฤษตัวใหญ่และตัวเล็กในเลขฐานสิบหกแทนจำนวนเดียวกัน แต่หากมีอักขระอื่นปนมาหรือจำนวนหลักไม่ครบ ให้ตรวจค่าที่คัดลอกมาก่อน ผลที่ตรงกันสนับสนุนความสอดคล้องระหว่างไบต์ที่ได้รับกับค่าอ้างอิงที่เราเชื่อถือ แต่ไม่ได้เป็นผลการตรวจข้อเท็จจริงในเอกสาร คุณภาพโปรแกรม หรือพฤติกรรมที่เป็นอันตราย หากไฟล์อ้างอิงเองมีปัญหา สำเนาที่เหมือนกันทุกอย่างก็มีแฮชเดียวกันด้วย ต้องแยกการตัดสินว่าคำนวณสำเร็จ ออกจากการตัดสินว่าควรใช้ไฟล์นั้นหรือไม่
4. ค่าที่ไม่ตรงกันเป็นสัญญาณให้หาสาเหตุ ไม่ใช่หลักฐานยืนยันการโจมตี
ตัวอย่างเช่น สมมติว่านำไฟล์เผยแพร่ที่ได้รับเมื่อวานมาเทียบกับค่าที่อยู่ในคำแนะนำวันนี้ แล้วพบว่าไม่ตรงกัน นี่เป็นกรณีตัวอย่างเพื่ออธิบาย ไม่ใช่บันทึกเหตุการณ์จริง ขั้นแรกให้ดูว่าคำแนะนำอ้างถึงเวอร์ชันเดียวกันหรือไม่ ได้รับไฟล์สำหรับอุปกรณ์อื่นมาหรือไม่ และคำนวณก่อนดาวน์โหลดเสร็จหรือไม่ อาจเป็นการคำนวณไฟล์ที่แตกออกมาแล้วแทนไฟล์บีบอัด หรือโปรแกรมแก้ไขเอกสารได้บันทึกเอกสารใหม่ จึงต้องแยกกรณีที่เป้าหมายเปรียบเทียบเปลี่ยนไป ออกจากกรณีที่เนื้อหาเปลี่ยนระหว่างส่งหรือจัดเก็บ เพียงข้อเท็จจริงที่ว่าค่าต่างกัน ไม่สามารถบอกได้ว่าใครเปลี่ยนอะไรเมื่อใด
อย่าเรียกใช้ไฟล์ติดตั้งที่ค่าไม่ตรงกันทันทีเพื่อทดลองตรวจสอบ ให้ตรวจคำแนะนำการเผยแพร่และค่าอ้างอิงทางการอีกครั้ง แล้วเปรียบเทียบไฟล์ที่ดาวน์โหลดมาใหม่ หากยังต่างกัน ควรดูประกาศแก้ไขหรือช่องทางสนับสนุนของผู้เผยแพร่ และบันทึกผลไว้ บันทึกควรมีเวลาตรวจสอบ ที่อยู่แหล่งที่มา เวอร์ชันไฟล์ อัลกอริทึม และค่าที่คำนวณได้ หากคำนวณซ้ำแล้วได้ค่าเดิม ก็เป็นเบาะแสว่าอ่านไฟล์ในเครื่องปัจจุบันด้วยวิธีเดียวกัน แต่ไม่ได้แก้ปัญหาค่าที่ผู้เผยแพร่ลงไว้ผิด หรือปัญหาเส้นทางการเผยแพร่ หากเขียนทับบันทึกอ้างอิงด้วยค่าที่คาดหวัง จะสูญเสียหลักฐานที่จะใช้ตัดสินว่ามีการเปลี่ยนแปลงในภายหลังหรือไม่
5. เหตุผลที่เชื่อถือค่าอ้างอิงและบทบาทของลายเซ็นดิจิทัล
หากผู้โจมตีแก้ไขได้ทั้งไฟล์และค่าแฮชที่แสดงคู่กัน ก็สามารถคำนวณแฮชของไฟล์ที่แก้แล้วใส่เป็นค่าอ้างอิงใหม่ได้ NIST SP 800-175B อธิบายข้อจำกัดนี้เมื่อใช้แฮชเพียงอย่างเดียวโดยไม่มีกุญแจหรือลายเซ็น การรับค่าจากหน้า HTTPS ที่ที่อยู่ทางการช่วยตรวจแหล่งที่มาและเส้นทางการส่ง แต่ไม่ได้รับประกันว่าจะขจัดกรณีที่ตัวเซิร์ฟเวอร์เผยแพร่ถูกบุกรุกได้ด้วย สิ่งสำคัญไม่ใช่ว่าข้อความแฮชดูยาวหรือไม่ แต่คือได้ค่าอ้างอิงมาจากไหนและผ่านกระบวนการสร้างความเชื่อถืออย่างไร การที่สองค่าซึ่งคัดลอกจากหน้าจอเดียวกันตรงกัน ไม่ได้ยืนยันตัวตนของผู้สร้างโดยลำพัง
ลายเซ็นดิจิทัลช่วยตรวจสอบความสัมพันธ์ระหว่างลายเซ็นกับข้อมูล โดยใช้กุญแจสาธารณะที่ได้มาด้วยวิธีที่เชื่อถือได้ เป็นต้น หากผู้เผยแพร่มีขั้นตอนตรวจสอบลายเซ็น ให้ทำตามคำแนะนำทางการ รวมถึงวิธีตรวจเจ้าของกุญแจและลายนิ้วมือของกุญแจ การเชื่อกุญแจสาธารณะที่เพิ่งเห็นครั้งแรกข้างไฟล์ไม่ทราบที่มาโดยทันที ไม่ได้แก้ปัญหาจุดเริ่มต้นของความเชื่อถือ HMAC ซึ่งใช้กุญแจลับร่วมกันก็เป็นเครื่องมือยืนยันความแท้จริงที่ต่างจากแฮชทั่วไป แต่ไม่ใช่ฟังก์ชันที่จะเติมให้การดาวน์โหลดทุกครั้งตามใจแล้วแก้ปัญหาได้ แม้ลายเซ็นถูกต้อง ก็ไม่ได้แปลว่าโปรแกรมไม่มีข้อบกพร่องหรือเนื้อหาเอกสารเป็นจริง ความตรงกันของไบต์ การยืนยันแหล่งที่มา และการประเมินเนื้อหาสัมพันธ์กัน แต่แต่ละเรื่องต้องมีหลักฐานตรวจสอบของตนเอง
6. ในการสำรองข้อมูลและทำงานร่วมกัน ให้บันทึกขอบเขตการเปรียบเทียบด้วย
สำหรับการสำรองภาพถ่ายส่วนตัว การเก็บ SHA-256 ของไฟล์ต้นฉบับไว้เทียบกับสำเนาช่วยตรวจว่ามีการเปลี่ยนระหว่างย้ายหรือไม่ ขณะเดียวกันควรเก็บรายการอ้างอิงไม่ให้สูญหายหรือถูกเขียนทับไปพร้อมต้นฉบับ หากโปรแกรมจัดการภาพถ่ายเขียนข้อมูลการหมุนหรือเมทาดาทาการถ่ายภาพใหม่ แฮชของไฟล์อาจเปลี่ยนได้แม้ภาพที่เห็นดูคล้ายเดิม ดังนั้นควรแยกก่อนว่าเป้าหมายคือรักษาไบต์ทุกตัว หรือดูว่าความหมายของภาพที่แก้ไขแล้วยังเหมือนกันหรือไม่ หากต้องการตรวจทั้งโฟลเดอร์ จะจบด้วยแฮชของไฟล์เดียวไม่ได้ แต่ต้องจัดการรายการไฟล์ที่รวมไว้ พาธสัมพัทธ์ และค่าของแต่ละไฟล์ด้วยกัน
ในการทบทวนเอกสารร่วมกัน แฮชยังใช้เป็นเครื่องหมายตรึงฉบับที่ตรวจแล้วได้ แต่การตรวจว่าแฮชตรงกันไม่สามารถแทนหลักฐานว่ามีคนอ่านทั้งฉบับหรือเทียบคำแปลจริง ต้องบันทึกว่าตรวจอะไร เมื่อใด และด้วยวิธีใด แล้วเชื่อมบันทึกนั้นเข้ากับค่าของไฟล์ที่เกี่ยวข้องจึงจะมีความหมาย ภาพในบทความนี้เป็นแผนภาพอธิบายที่จัดทำขึ้นเองเพื่อสรุปการเปรียบเทียบไบต์ แหล่งที่มาของค่าอ้างอิง และขอบเขตการตรวจสอบ ไม่ใช่ผลการวัดจริงหรือใบรับรอง เมื่อตรวจไฟล์ ลองบันทึกเป้าหมายและอัลกอริทึม แหล่งที่มาของค่าอ้างอิง และขอบเขตที่สามารถกล่าวอ้างจากผลได้ตามลำดับ วิธีนี้ช่วยไม่ให้ขยายความหมายของค่าที่ตรงหรือไม่ตรงเกินจริง และทำให้คนถัดไปทำขั้นตอนเดิมซ้ำได้