แฮชชิงคืออะไร พร้อมตัวอย่าง
แฮชชิงเป็นกระบวนการแปลงข้อมูลขนาดใหญ่ให้กลายเป็นค่าคงที่ (Hash Value) ด้วยอัลกอริทึมคณิตศาสตร์ ตัวอย่าง: การค้นหาเลขเฉพาะในรายการ 20,000 รายการ แฮชช่วยให้ค้นหาได้เร็วขึ้นโดยไม่ต้องสแกนทีละรายการ
ฟังก์ชันแฮช (Hash Function) ในความปลอดภัยเครือข่าย
ฟังก์ชันแฮชแปลงค่าใดๆ ให้เป็นค่าคงที่ (เช่น 256 บิตสำหรับ SHA-256) ซึ่งมีลักษณะสุ่ม ไม่สามารถย้อนกลับได้ และค่าเดิมจะได้แฮชเดิมเสมอ มักแสดงในรูปฐานสิบหก (Hexadecimal)
แนวคิดของแฮชชิง
การแปลงค่าหนึ่งเป็นอีกค่าหนึ่งด้วยอัลกอริทึมคณิตศาสตร์ ผลลัพธ์เรียกว่า Hash Value หรือ Hash Code ใช้สำหรับตรวจสอบความสมบูรณ์ของข้อมูล และจัดเก็บรหัสผ่านอย่างปลอดภัย
แฮชชิง vs การเข้ารหัส (Encryption)
| ลักษณะ | แฮชชิง (Hashing) | การเข้ารหัส (Encryption) |
|---|---|---|
| ทิศทาง | หนึ่งทาง (One-way) ไม่สามารถย้อนกลับได้ | สองทาง (Two-way) ถอดรหัสได้ด้วยคีย์ |
| วัตถุประสงค์ | ตรวจสอบความสมบูรณ์ ยืนยันตัวตน | ปกป้องความลับของข้อมูล |
| ตัวอย่าง | SHA-256, MD5 | AES, RSA |
การใช้แฮชชิงในความปลอดภัย
เมื่อผู้ใช้ตั้งรหัสผ่าน ระบบจะแฮชรหัสผ่านและเก็บค่าแฮช ตอนล็อกอิน ระบบแฮชรหัสที่ป้อนเข้ามาเปรียบเทียบกับค่าที่เก็บไว้ หากตรงกัน = ยืนยันตัวตนสำเร็จ โดยไม่ต้องเก็บรหัสผ่านจริง
แฮชชิงให้ความปลอดภัยจริงหรือไม่?
อัลกอริทึมมาตรฐานอย่าง SHA-256 (256 บิต) ถือว่าปลอดภัย เพราะคำนวณย้อนกลับหรือหาค่าที่ให้แฮชซ้ำกัน (Collision) ยากอย่างไม่เป็นไปได้ แต่ฟังก์ชันแฮชบางตัวเก่า (เช่น MD5, SHA-1) มีช่องโหว่แล้ว
บทบาทของฟังก์ชันแฮชในความปลอดภัย
ใช้กันอย่างแพร่หลายในระบบยืนยันตัวตน ใบรับรองดิจิทัล บล็อกเชน และการตรวจสอบไฟล์ เพราะให้ค่าคงที่ที่ไม่ซ้ำกันสำหรับข้อมูลแต่ละชุด
อัลกอริทึมแฮชชิงยอดนิยม
- MD5 (128 บิต) – เก่า มีช่องโหว่ Collision
- SHA-1 (160 บิต) – ไม่แนะนำให้ใช้ใหม่
- SHA-2 (SHA-256, SHA-384, SHA-512) – มาตรฐานปัจจุบัน
- NTLM, LANMAN – ใช้ในระบบ Windows เดิม
ประเภทของแฮชชิง
แบ่งตามขนาดเอาต์พุตและอัลกอริทึม เช่น SHA-256 (256 บิต) SHA-512 (512 บิต) ส่วน Collision คือกรณีข้อมูลต่างกันให้แฮชเท่ากัน ซึ่งอัลกอริทึมที่ดีต้องทำให้เกิด Collision ได้ยากที่สุด
แฮชชิงปลอดภัยได้อย่างไร?
ตามมาตรฐาน FIPS 180-4 ฟังก์ชันแฮชปลอดภัยต้องมีคุณสมบัติ: ไม่สามารถหาข้อมูลต้นทางจากแฮชได้ (Pre-image resistance) และหาข้อมูลสองชุดที่ให้แฮชเท่ากันได้ยาก (Collision resistance)
จุดสำคัญของแฮชชิง
- กระจายค่าให้ทั่วก่อนในอาร์เรย์ (Uniform distribution)
- คีย์แปลงเป็นดัชนีผ่านฟังก์ชันแฮช
- เข้าถึงข้อมูลได้ในเวลาคงที่ O(1)
วัตถุประสงค์ของแฮชชิง
1. ยืนยันความสมบูรณ์ของข้อมูล (Integrity) 2. ป้องกันการเก็บรหัสผ่านแบบ Plaintext 3. ใช้ในการลงนามดิจิทัลและบล็อกเชน
ความแตกต่างหลัก: แฮชชิง vs เข้ารหัส
เข้ารหัสสามารถถอดรหัสกลับได้ด้วยคีย์ (Two-way) ส่วนแฮชชิงเป็น One-way ไม่สามารถย้อนกลับจากแฮชได้ แม้รู้อัลกอริทึมก็ตาม
สามารถถอดรหัสแฮชได้ไหม?
ไม่สามารถ เพราะออกแบบมาเป็น One-way function การ "แฮก" แฮชปกติทำด้วย Rainbow Table หรือ Brute-force ไม่ใช่การถอดรหัส
แฮกเกอร์ใช้แฮชชิงไหม?
แฮกเกอร์ไม่ได้ "ใช้แฮชชิง" เพื่อโจมตี แต่พยายามแตกแฮช (Crack hashes) ด้วย Dictionary Attack, Rainbow Table หรือ GPU Brute-force เพื่อค้นหารหัสผ่านต้นทาง
แฮชชิงสามารถย้อนกลับได้ไหม?
ไม่สามารถ ทฤษฎีแล้วฟังก์ชันแฮชแมปอินพุตไม่จำกัดให้เป็นเอาต์พุตคงที่ ดังนั้นข้อมูลหลายชุดอาจให้แฮชเท่ากัน (Pigeonhole principle) ทำให้ย้อนกลับไม่ได้อย่างแน่นอน