0Pricing
Cyber Security Academy · บทเรียน

ฟังก์ชันแฮช: 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

การใช้งานแฮช: ลายมือชื่อดิจิทัล

เมื่อลงลายมือชื่อในเอกสาร เราจะไม่เข้ารหัสเอกสารทั้งฉบับด้วยกุญแจส่วนตัว เพราะทำงานช้าเกินไป แต่จะดำเนินการดังนี้:

  1. สร้างแฮชของเอกสาร (รวดเร็ว)
  2. เข้ารหัสแฮชด้วยกุญแจส่วนตัว (ข้อมูลมีขนาดเล็กและทำงานรวดเร็ว)
  3. ผู้รับถอดรหัสด้วยกุญแจสาธารณะ แล้วเปรียบเทียบกับแฮชที่ผู้รับคำนวณเอง

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเข้ารหัสแบบสมมาตร: AES และการเข้ารหัสแบบสตรีม
  2. การเข้ารหัสแบบไม่สมมาตร: RSA และเส้นโค้งวงรี
  3. ฟังก์ชันแฮช: SHA-256 และอื่น ๆ
  4. ลายเซ็นดิจิทัลและใบรับรอง
← กลับไปที่ Cyber Security Academy