ฟังก์ชันแฮช: SHA-256 และอื่น ๆ
สำรวจคุณสมบัติของแฮชเชิงการเข้ารหัส ได้แก่ ความต้านทานการชนกัน ความต้านทานการหาค่าก่อนภาพ และการประยุกต์ใช้
ฟังก์ชันแฮช: SHA-256 และอื่น ๆ เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
ฟังก์ชันแฮชเชิงการเข้ารหัสคืออะไร
ฟังก์ชันแฮชเชิงการเข้ารหัสรับข้อมูลนำเข้าที่มีความยาวเท่าใดก็ได้ และสร้างผลลัพธ์ที่มีความยาวคงที่ (ผลสรุป) โดยต้องมีคุณสมบัติดังนี้: ให้ผลแน่นอน คำนวณได้รวดเร็ว ต้านทานการหาค่าต้นทาง (ไม่สามารถย้อนกลับได้) ต้านทานการชนกัน (ไม่สามารถหาข้อมูลนำเข้าสองชุดที่มีแฮชเดียวกันได้) และไวต่อการเปลี่ยนแปลงแบบกระจาย (การเปลี่ยนแปลงเพียงเล็กน้อย → ได้แฮชที่แตกต่างกันโดยสิ้นเชิง)
ตระกูล SHA-2
ตระกูล SHA-2 (ออกแบบโดย NSA และทำให้เป็นมาตรฐานโดย NIST) ประกอบด้วย:
- SHA-256 — ผลลัพธ์ขนาด 256 บิต ใช้กันอย่างแพร่หลาย
- SHA-384 — ผลลัพธ์ขนาด 384 บิต
- SHA-512 — ผลลัพธ์ขนาด 512 บิต ทำงานเร็วกว่าเมื่อใช้กับ CPU แบบ 64 บิต
SHA-256 ใช้ใน Bitcoin ใบรับรอง TLS และรหัสระบุการบันทึกการเปลี่ยนแปลงของ Git
ตระกูล SHA-3
SHA-3ใช้การออกแบบที่แตกต่างจาก SHA-2 โดยสิ้นเชิง (โครงสร้างฟองน้ำ Keccak) โดยทำให้เป็นมาตรฐานเพื่อใช้เป็นทางเลือกสำรองในกรณีที่พบจุดอ่อนของ SHA-2 SHA-3 ยังไม่ได้ถูกนำไปใช้อย่างแพร่หลาย แต่ใช้ในโพรโทคอลการเข้ารหัสและฮาร์ดแวร์บางประเภท
MD5 และ SHA-1: ไม่ปลอดภัย
อย่าใช้ MD5 หรือ SHA-1เพื่อวัตถุประสงค์ด้านความปลอดภัยโดยเด็ดขาด:
- MD5: สามารถพบการชนกันได้ภายในไม่กี่วินาทีด้วยฮาร์ดแวร์ทั่วไป
- SHA-1: การชนกันที่ใช้งานได้จริงครั้งแรกแสดงให้เห็นในปี 2017 (SHAttered)
ทั้งสองแบบยังมีประโยชน์สำหรับผลรวมตรวจสอบที่ไม่เกี่ยวกับความปลอดภัย เช่น การขจัดไฟล์ซ้ำ แต่ไม่ควรใช้เพื่อรับประกันความถูกต้องครบถ้วน
การใช้งานแฮช: ความถูกต้องครบถ้วนของไฟล์
การตรวจสอบการดาวน์โหลด:
sha256sum ubuntu-24.04.iso
# Compare with the hash published on the official site
# If hashes match, file is unmodifiedการใช้งานแฮช: ลายมือชื่อดิจิทัล
เมื่อลงลายมือชื่อในเอกสาร เราจะไม่เข้ารหัสเอกสารทั้งฉบับด้วยกุญแจส่วนตัว เพราะทำงานช้าเกินไป แต่จะดำเนินการดังนี้:
- สร้างแฮชของเอกสาร (รวดเร็ว)
- เข้ารหัสแฮชด้วยกุญแจส่วนตัว (ข้อมูลมีขนาดเล็กและทำงานรวดเร็ว)
- ผู้รับถอดรหัสด้วยกุญแจสาธารณะ แล้วเปรียบเทียบกับแฮชที่ผู้รับคำนวณเอง
HMAC: แฮชที่ใช้กุญแจเพื่อความถูกต้องครบถ้วน
HMAC (รหัสยืนยันตัวตนข้อความที่อาศัยแฮช)ผสานฟังก์ชันแฮชเข้ากับกุญแจลับเพื่อสร้างแท็กยืนยันตัวตน ใช้ตรวจสอบทั้งความถูกต้องครบถ้วนและความถูกต้องแท้จริงของข้อมูล ใช้ใน JWT, การยืนยันตัวตนของ API และ TLS
import hmac, hashlib
mac = hmac.new(key, message, hashlib.sha256).hexdigest()การโจมตีแบบขยายความยาวของแฮช
SHA-2 (โครงสร้าง Merkle-Damgård) มีช่องโหว่ต่อการโจมตีแบบขยายความยาว: หากทราบ H(ข้อมูลลับ+ข้อความ) ก็สามารถคำนวณ H(ข้อมูลลับ+ข้อความ+ส่วนขยาย) ได้โดยไม่ต้องทราบข้อมูลลับ HMAC ป้องกันการโจมตีนี้ได้ ส่วน SHA-3 ไม่มีช่องโหว่ดังกล่าว
ตารางเรนโบว์และการเติมค่าเกลือ
ตารางเรนโบว์คำนวณการจับคู่ค่าแฮชกับข้อมูลนำเข้าล่วงหน้าเพื่อให้ค้นหาได้รวดเร็ว การเติมค่าเกลือช่วยป้องกันเรื่องนี้ โดยการเพิ่มค่าสุ่มเฉพาะให้กับข้อมูลนำเข้าแต่ละรายการทำให้แฮชแต่ละค่ามีความแตกต่างกัน จึงต้องใช้การลองทุกกรณีอย่างครบถ้วนกับแต่ละรายการ แทนการค้นจากตาราง
ต้นไม้ Merkle
ต้นไม้ Merkleเป็นโครงสร้างต้นไม้ของค่าแฮช โดยโหนดแม่แต่ละโหนดคือแฮชของโหนดลูก ใช้ในบล็อกเชน Bitcoin, Git และบันทึกความโปร่งใสของใบรับรอง เพื่อให้ตรวจสอบชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพโดยไม่ต้องดาวน์โหลดทุกอย่าง
การเลือกฟังก์ชันแฮชที่เหมาะสม
แนวทางการเลือก:
- ความถูกต้องครบถ้วนทั่วไป/ผลรวมตรวจสอบ: SHA-256
- การจัดเก็บรหัสผ่าน: Argon2id, bcrypt (ไม่ใช่ SHA-256 โดยตรง)
- การยืนยันตัวตนข้อความ: HMAC-SHA-256
- ลายมือชื่อดิจิทัล: SHA-256 หรือ SHA-384 เป็นแฮชพื้นฐาน
- หลีกเลี่ยง: MD5, SHA-1 สำหรับการใช้งานด้านความปลอดภัย
แบบทดสอบสั้น ๆ: ฟังก์ชันแฮช
โครงสร้างใดป้องกันการโจมตีแบบขยายความยาวได้ และยังต้องใช้กุญแจลับด้วย
สรุปบทเรียน
ฟังก์ชันแฮชสร้างผลสรุปที่มีความยาวคงที่จากข้อมูลนำเข้าที่มีความยาวเท่าใดก็ได้ SHA-256 และ SHA-512 เป็นมาตรฐานปัจจุบัน MD5 และ SHA-1 ไม่ปลอดภัยสำหรับงานด้านความปลอดภัย HMAC เพิ่มกุญแจลับเพื่อให้ตรวจสอบความถูกต้องครบถ้วนพร้อมยืนยันตัวตนได้ ใช้ Argon2/bcrypt สำหรับรหัสผ่าน ต้นไม้ Merkle ช่วยขยายการใช้แฮชเพื่อตรวจสอบชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ
คำถามที่พบบ่อย
บทเรียน “ฟังก์ชันแฮช: SHA-256 และอื่น ๆ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ฟังก์ชันแฮช: SHA-256 และอื่น ๆ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันแฮช: SHA-256 และอื่น ๆ”
สำรวจคุณสมบัติของแฮชเชิงการเข้ารหัส ได้แก่ ความต้านทานการชนกัน ความต้านทานการหาค่าก่อนภาพ และการประยุกต์ใช้ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ฟังก์ชันแฮช: SHA-256 และอื่น ๆ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเข้ารหัสแบบสมมาตร: AES และการเข้ารหัสแบบสตรีม
- การเข้ารหัสแบบไม่สมมาตร: RSA และเส้นโค้งวงรี
- ฟังก์ชันแฮช: SHA-256 และอื่น ๆ
- ลายเซ็นดิจิทัลและใบรับรอง