คำตอบสั้น: SHA-256 คืออัลกอริทึมสร้างค่าแฮชขนาด 256 บิต หรือ 32 ไบต์ เมื่อแสดงเป็นเลขฐานสิบหกจะยาว 64 ตัว ใช้เป็นลายนิ้วมือดิจิทัลสำหรับตรวจว่าข้อมูลตรงกับต้นฉบับอ้างอิงหรือไม่ เป็นพื้นฐานของงานตรวจไฟล์ สำรองข้อมูล และลายเซ็นดิจิทัล แต่ไม่ได้ซ่อนข้อมูล และไม่ควรใช้เดี่ยว ๆ จัดเก็บรหัสผ่าน
เมื่อดาวน์โหลดโปรแกรม ย้ายไฟล์ไปยัง NAS หรือกู้ข้อมูลจาก Backup เราจะรู้ได้อย่างไรว่าไฟล์ยังครบเหมือนเดิม? SHA-256 ช่วยตอบคำถามนี้ด้วยการคำนวณค่าที่เปรียบเทียบได้ แทนการเปิดดูข้อมูลทุกส่วนด้วยตนเอง บทความนี้อธิบายหลักการ ข้อจำกัด และวิธีตรวจ SHA-256 บน Windows, macOS และ Linux ที่นำไปใช้ได้จริง
SHA-256 คืออะไร และทำไมผลลัพธ์จึงยาว 64 ตัว?
SHA-256 ย่อมาจาก Secure Hash Algorithm 256-bit เป็นฟังก์ชันแฮชเชิงเข้ารหัสในตระกูล SHA-2 ซึ่งระบุในมาตรฐาน NIST FIPS 180-4 รับข้อมูลอย่างข้อความ เอกสาร รูปภาพ หรือไฟล์ติดตั้ง แล้วสร้างผลลัพธ์ที่เรียกว่า Hash หรือ Message Digest
ผลลัพธ์ SHA-256 มีขนาดคงที่ 256 บิต = 32 ไบต์ ส่วนที่เห็นเป็นตัวอักษร 0–9 และ a–f ยาว 64 ตัว คือการแสดงผลแบบเลขฐานสิบหก (Hexadecimal) เพราะแต่ละหลักแทนข้อมูล 4 บิต จึงคำนวณได้จาก 256 ÷ 4 = 64 ไม่ว่าไฟล์จะเล็กหรือใหญ่ ขนาดของค่าแฮชยังเท่าเดิม
ตัวอย่าง ค่า SHA-256 ของข้อความ hello แบบ UTF-8 โดยไม่มีช่องว่างหรือการขึ้นบรรทัดใหม่ต่อท้าย คือ
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
ค่าแฮชเป็นเหมือนลายนิ้วมือของข้อมูล แต่ไม่ใช่หมายเลขเฉพาะที่รับประกันว่าไม่มีทางซ้ำกันทางคณิตศาสตร์ ข้อมูลต่างกันอาจให้ค่าเดียวกันได้ เรียกว่า Collision การออกแบบแฮชเชิงเข้ารหัสมุ่งทำให้การค้นหาคู่ที่ชนกันเป็นเรื่องยากมาก
SHA-256 ทำงานอย่างไร?
- รับไบต์ของข้อมูลต้นฉบับ เช่น ข้อความหรือข้อมูลภายในไฟล์
- เตรียมและประมวลผลข้อมูลเป็นบล็อก SHA-256 เติมข้อมูลตามกติกาและคำนวณหลายรอบด้วยการดำเนินการระดับบิต
- สร้างค่าแฮช 256 บิต เพื่อนำไปแสดงผลหรือเปรียบเทียบกับค่าอ้างอิง
ข้อมูลที่มีไบต์เหมือนกันทุกครั้งจะให้แฮชเดียวกัน ส่วนการเปลี่ยน hello เป็น Hello หรือเพิ่มช่องว่างเพียงตัวเดียว มักทำให้แฮชเปลี่ยนไปอย่างมาก เรียกว่า Avalanche Effect จึงตรวจความแตกต่างเล็กน้อยของไฟล์ได้โดยไม่ต้องตีความเนื้อหาข้างใน
ชื่อไฟล์ไม่ใช่เนื้อหาไฟล์: การเปลี่ยนชื่อไฟล์อย่างเดียวไม่ทำให้ SHA-256 ของเนื้อหาเปลี่ยน แต่การแก้ข้อความ Encoding การขึ้นบรรทัดใหม่ หรือ Metadata ที่บันทึกอยู่ภายในไฟล์อาจทำให้ค่าเปลี่ยนได้
SHA-256 สำคัญกับความปลอดภัยของข้อมูลอย่างไร?
ตรวจความสมบูรณ์ของไฟล์ที่ดาวน์โหลด
ผู้ผลิตซอฟต์แวร์อาจประกาศ SHA-256 คู่กับไฟล์ติดตั้ง เมื่อนำไฟล์ที่ดาวน์โหลดมาคำนวณแล้วได้ค่าตรงกัน ก็เป็นหลักฐานที่น่าเชื่อถือในทางปฏิบัติว่าเนื้อหาไฟล์ตรงกับไฟล์อ้างอิง หากไม่ตรง อาจเลือกคนละรุ่น ดาวน์โหลดไม่ครบ ไฟล์เสียหาย หรือถูกแก้ไข
ค่าอ้างอิงต้องเชื่อถือได้ด้วย: รับ checksum จากเว็บไซต์ทางการผ่าน HTTPS และตรวจลายเซ็นของรายการ checksum หากผู้ผลิตมีให้ หากผู้โจมตีเปลี่ยนได้ทั้งไฟล์และค่าแฮช การเปรียบเทียบเพียงสองสิ่งนี้จะตรวจไม่พบ การตรวจลายเซ็นต้องตรวจความน่าเชื่อถือของกุญแจผู้ลงนามด้วย ดูตัวอย่างแนวทางจาก Debian: การตรวจความสมบูรณ์และความแท้ของไฟล์
ตรวจไฟล์สำรองและการย้ายข้อมูลระหว่าง Server, NAS และ Cloud
คำนวณแฮชก่อนและหลังคัดลอกช่วยตรวจว่าข้อมูลตรงกัน เหมาะกับการย้ายเอกสาร ไฟล์ฐานข้อมูลที่สำรองแล้ว หรือชุดข้อมูลสำคัญ ควรใช้ไฟล์ที่หยุดเปลี่ยนแปลงแล้ว หรือ Snapshot/Backup ที่สอดคล้องกัน แทนการอ่านไฟล์ฐานข้อมูลที่ยังถูกเขียนระหว่างคัดลอก
หากระบบ Backup บีบอัด เข้ารหัส หรือแบ่งข้อมูลเป็นชิ้น อย่านำแฮชของไฟล์ต้นฉบับไปเทียบกับไฟล์ Container โดยตรง ให้ใช้กลไกตรวจสอบของซอฟต์แวร์ หรือ Restore ออกมาแล้วเทียบไฟล์เดียวกัน แฮชตรงกันไม่ทดแทนการทดสอบ Restore เพราะยังต้องตรวจว่าเปิดไฟล์และใช้งานระบบที่กู้คืนได้จริง
เป็นส่วนหนึ่งของลายเซ็นดิจิทัล
ระบบ Digital Signature ใช้แฮชร่วมกับอัลกอริทึมลายเซ็นและกุญแจส่วนตัว ผู้รับตรวจลายเซ็นด้วยกุญแจสาธารณะเพื่อตรวจการเปลี่ยนแปลง และยืนยันผู้ลงนามตามความน่าเชื่อถือของกุญแจหรือใบรับรอง SHA-256 เพียงอย่างเดียวไม่ได้ยืนยันว่าใครเป็นเจ้าของเอกสาร
ใช้ใน Bitcoin และ Blockchain บางระบบ
Bitcoin ใช้ SHA-256 แบบคำนวณสองครั้งในส่วนของ Block Header และ Proof of Work รวมถึงการเชื่อมโยงบล็อก การเปลี่ยนข้อมูลทำให้ค่าแฮชที่เกี่ยวข้องเปลี่ยนและตรวจพบได้ ความปลอดภัยยังอาศัยกติกาเครือข่ายและกลไกฉันทามติร่วมด้วย ไม่ใช่แฮชเพียงอย่างเดียว และ Blockchain ทุกระบบไม่ได้ใช้อัลกอริทึมเดียวกัน อ้างอิง Bitcoin Developer Reference: Block Headers
SHA-256 กับ AES-256 ต่างกันอย่างไร?
SHA-256 เป็น Hashing ส่วน AES-256 เป็น Encryption แม้มีเลข 256 เหมือนกัน แต่หมายถึงคนละสิ่ง: SHA-256 ให้ผลลัพธ์แฮช 256 บิต ขณะที่ AES-256 ใช้กุญแจเข้ารหัส 256 บิต
| ประเด็น | SHA-256 | AES-256 |
|---|---|---|
| หน้าที่ | สร้างค่าแฮชเพื่อตรวจความตรงกันของข้อมูล | ซ่อนเนื้อหาข้อมูลให้ผู้ไม่มีกุญแจอ่านไม่ได้ |
| แปลงกลับ | ไม่มีขั้นตอนถอดแฮชกลับเป็นต้นฉบับ | ถอดกลับได้เมื่อมีกุญแจและข้อมูลประกอบที่ถูกต้อง |
| กุญแจ | SHA-256 ปกติไม่ใช้กุญแจ | ใช้กุญแจลับ |
| ตัวอย่างงาน | ตรวจ checksum และใช้ร่วมกับลายเซ็นดิจิทัล | เข้ารหัสไฟล์ ดิสก์ หรือข้อมูลสำรอง |
การไม่มีขั้นตอนถอดแฮชไม่ได้ทำให้ข้อมูลที่เดาง่ายปลอดภัยเสมอ ผู้โจมตีอาจลองคำที่คาดไว้แล้วคำนวณเทียบ เช่น รหัสผ่านสั้น ๆ จึงต้องแยกการตรวจไฟล์ออกจากการออกแบบระบบเก็บรหัสผ่าน
ใช้ SHA-256 เก็บรหัสผ่านได้ไหม?
ไม่ควรใช้ SHA-256 ตรง ๆ เป็นวิธีเก็บรหัสผ่าน แม้เติม Salt แล้ว เพราะคำนวณได้รวดเร็ว ผู้โจมตีที่ได้ฐานข้อมูลแฮชไปจึงลองเดารหัสผ่านจำนวนมากได้ Salt ช่วยให้รหัสผ่านเดียวกันของแต่ละบัญชีไม่สร้างค่าที่เก็บเหมือนกัน แต่ไม่ได้ทำให้ SHA-256 กลายเป็นอัลกอริทึมเก็บรหัสผ่านที่เหมาะสม
OWASP Password Storage Cheat Sheet แนะนำ Argon2id เป็นตัวเลือกแรก ใช้ scrypt เมื่อใช้ Argon2id ไม่ได้ และใช้ bcrypt สำหรับระบบเดิมที่ยังต้องรองรับ พร้อม Salt เฉพาะแต่ละรหัสผ่านและพารามิเตอร์ที่เหมาะสม นักพัฒนาควรใช้ไลบรารีสำหรับ Password Hashing โดยตรง
วิธีตรวจ SHA-256 บน Windows, macOS และ Linux
เริ่มจากดาวน์โหลดไฟล์และคัดลอกค่า SHA-256 อ้างอิงของรุ่น ภาษา สถาปัตยกรรม และไฟล์เดียวกัน จากผู้ผลิต จากนั้นใช้คำสั่งของระบบปฏิบัติการตามด้านล่าง เปลี่ยนพาธตัวอย่างให้ตรงกับไฟล์ของคุณ
Windows: ตรวจด้วย PowerShell
Get-FileHash -LiteralPath 'C:\Downloads\example.zip' -Algorithm SHA256
เปรียบเทียบค่าที่อยู่ในคอลัมน์ Hash กับค่าอ้างอิงให้ครบทุกหลัก คำสั่งนี้อ่านไฟล์เพื่อคำนวณโดยไม่แก้ไขเนื้อหา ดูรายละเอียดจาก Microsoft Learn: Get-FileHash
macOS: ตรวจด้วย Terminal
shasum -a 256 "$HOME/Downloads/example.zip"
ระบุ -a 256 ให้ครบ เพราะ shasum ปกติใช้ SHA-1 เมื่อไม่เลือกอัลกอริทึม เครื่องหมายคำพูดช่วยรองรับพาธที่มีช่องว่าง อ้างอิง คู่มือ shasum
Linux: ตรวจด้วย sha256sum
sha256sum 'example.zip'
รันในโฟลเดอร์ที่เก็บไฟล์ หรือเปลี่ยนเป็นพาธเต็ม คำสั่งนี้มีใน Linux ส่วนใหญ่ที่ติดตั้ง GNU Coreutils อ้างอิง GNU Coreutils: SHA-2 utilities
เปรียบเทียบเฉพาะค่าแฮช: ไม่รวมชื่อไฟล์หรือช่องว่างคั่นผลลัพธ์ อักษร A–F พิมพ์ใหญ่และ a–f พิมพ์เล็กในเลขฐานสิบหกแทนค่าเดียวกัน จึงไม่ใช่เหตุให้ไฟล์ต่างกัน
ถ้าค่า SHA-256 ไม่ตรงกัน ควรทำอย่างไร?
- พักการเปิดหรือติดตั้งไฟล์นั้น จนกว่าจะทราบสาเหตุ
- ตรวจว่าเทียบไฟล์เดียวกัน รวมถึงเวอร์ชัน ระบบปฏิบัติการ ภาษา และการเทียบไฟล์ ZIP กับไฟล์ภายใน ZIP
- ตรวจอัลกอริทึมและค่าอ้างอิง อย่านำ SHA-1 หรือ MD5 มาเทียบกับ SHA-256 และคัดลอกค่าให้ครบ
- ดาวน์โหลดใหม่จากเว็บไซต์ผู้ผลิต แล้วคำนวณซ้ำ หากยังไม่ตรง ให้ตรวจประกาศหรือติดต่อผู้ผลิต
ค่าไม่ตรงบอกว่าไบต์ต่างกัน แต่ไม่ได้บอกสาเหตุว่าเป็นการโจมตีเสมอไป ส่วนค่าตรงบอกความตรงกันกับข้อมูลอ้างอิง ไม่ได้ยืนยันว่าไฟล์ไม่มีมัลแวร์
SHA-256 ปลอดภัยแค่ไหน และมีข้อจำกัดอะไร?
SHA-256 ถูกออกแบบให้การย้อนหาข้อมูลต้นฉบับจากแฮชและการหาข้อมูลต่างกันที่ได้แฮชเดียวกันทำได้ยาก จึงมีประโยชน์กับงานตรวจความสมบูรณ์ของข้อมูล อย่างไรก็ตาม การเลือกใช้งานต้องพิจารณาทั้งแหล่งค่าอ้างอิง ซอฟต์แวร์ที่คำนวณ และระบบที่นำค่าไปใช้
- ไม่ซ่อนข้อมูล: หากต้องการความลับ ต้องใช้การเข้ารหัสที่เหมาะสมร่วมด้วย
- ไม่รับรองผู้ส่งด้วยตัวเอง: งานยืนยันที่มาต้องใช้ลายเซ็นดิจิทัล หรือกลไกยืนยันข้อความที่ใช้กุญแจตามโจทย์
- ไม่ตรวจมัลแวร์แทนระบบป้องกัน: ไฟล์อันตรายก็มี SHA-256 ที่ถูกต้องของตัวมันเองได้
- ไม่สำรองหรือกู้ไฟล์ให้: แฮชมีไว้เปรียบเทียบ ไม่สามารถใช้สร้างไฟล์ต้นฉบับกลับมาได้
คำถามที่พบบ่อยเกี่ยวกับ SHA-256
SHA-256 ถอดรหัสกลับได้ไหม?
SHA-256 ไม่ใช่การเข้ารหัส จึงไม่มีขั้นตอนถอดกลับแบบ AES แต่ข้อความที่เดาง่ายยังอาจถูกค้นพบด้วยการลองคำนวณคำต่าง ๆ แล้วเทียบแฮช จึงไม่ควรใช้แฮชเพื่อซ่อนรหัสผ่านหรือข้อมูลส่วนตัวที่คาดเดาได้
ค่า SHA-256 ตรงกันแปลว่าไฟล์ไม่มีไวรัสหรือไม่?
ไม่ใช่ ค่าที่ตรงกันช่วยตรวจว่าไฟล์ตรงกับข้อมูลอ้างอิง หากไฟล์อ้างอิงเป็นมัลแวร์ ค่าแฮชก็ยังตรงได้ ต้องตรวจแหล่งดาวน์โหลด ผู้เผยแพร่ ลายเซ็น และใช้มาตรการป้องกันมัลแวร์ร่วมกัน
ทำไม SHA-256 จึงมี 64 ตัวอักษร?
เมื่อแสดงเป็นเลขฐานสิบหก แต่ละหลักแทน 4 บิต ผลลัพธ์ 256 บิตจึงเท่ากับ 64 หลัก ส่วนขนาดข้อมูลไบนารีจริงคือ 32 ไบต์
เปลี่ยนชื่อไฟล์แล้วค่า SHA-256 เปลี่ยนไหม?
ไม่เปลี่ยน หากไบต์ภายในไฟล์ยังเหมือนเดิม การเปลี่ยนชื่อหรือย้ายโฟลเดอร์เพียงอย่างเดียวไม่เปลี่ยนแฮชของเนื้อหา แต่การบันทึกไฟล์ใหม่หรือแก้ Metadata ภายในไฟล์อาจเปลี่ยนได้
ตรวจ SHA-256 ผ่านเว็บออนไลน์ได้ไหม?
ทำได้สำหรับข้อมูลที่เปิดเผยได้ แต่เอกสารภายในและข้อมูลสำคัญควรคำนวณบนเครื่องด้วย PowerShell หรือ Terminal เพื่อลดความจำเป็นในการส่งไฟล์ไปยังบริการภายนอก และตรวจว่าเครื่องมือใช้อัลกอริทึม SHA-256 จริง
นำ SHA-256 ไปใช้กับงาน IT อย่างไรให้ได้ประโยชน์?
เริ่มจากตรวจไฟล์ติดตั้งสำคัญ เก็บค่าอ้างอิงจากแหล่งที่เชื่อถือได้ และเพิ่มการตรวจความสมบูรณ์ในขั้นตอนย้ายหรือสำรองข้อมูล สำหรับองค์กร ควรใช้ร่วมกับสิทธิ์เข้าถึง การเข้ารหัส การเก็บสำเนาหลายชุด และการทดสอบกู้คืน เพื่อให้รู้ทั้งว่าไฟล์ตรงกันและระบบกลับมาใช้งานได้จริง
อ่านต่อ: Snapshot, Immutable Snapshot และ Backup 3-2-1 และ วิธีป้องกัน Ransomware บน Synology NAS
ดูแนวทางระบบ Server และ Storage ของ SyncTech หรือ ปรึกษาทีมงานเรื่องการจัดเก็บและสำรองข้อมูลขององค์กร
แหล่งข้อมูลหลัก: NIST, OWASP, Microsoft Learn, Perl Documentation, GNU Coreutils, Debian และ Bitcoin Developer Reference ตามลิงก์ในแต่ละหัวข้อ ตรวจทานข้อมูลวันที่ 11 พฤศจิกายน 2569
