0Pricing
Cryptology Academy · บทเรียน

การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช

แยกความแตกต่างระหว่างแนวคิดทั้งสามอย่างชัดเจน และทำความเข้าใจว่าควรใช้แต่ละอย่างเมื่อใด

การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

การดำเนินการสามประเภทที่แตกต่างกัน

การเข้ารหัสรูปแบบ การเข้ารหัสลับ และการแฮชเป็นการดำเนินการพื้นฐานสามประเภทที่แตกต่างกันและมีจุดประสงค์ต่างกัน การดำเนินการเหล่านี้มักถูกสับสน แต่การเข้าใจความแตกต่างเป็นสิ่งจำเป็นสำหรับการออกแบบระบบที่ปลอดภัย

การเข้ารหัสรูปแบบจะแปลงรูปแบบข้อมูลโดยไม่ให้ความปลอดภัย การเข้ารหัสลับช่วยปกป้องความลับ ส่วนการแฮชจะสร้างลายนิ้วมือที่มีความยาวคงที่เพื่อใช้ตรวจสอบความถูกต้องครบถ้วน

การเข้ารหัสรูปแบบ: การแปลงรูปแบบ

การเข้ารหัสรูปแบบจะแปลงข้อมูลจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่งเพื่อให้เข้ากันได้หรือเพื่อการส่งข้อมูล การดำเนินการนี้ย้อนกลับได้เสมอและไม่ต้องใช้คีย์ ผู้ใดก็ตามที่ทราบวิธีการเข้ารหัสรูปแบบก็สามารถแปลงข้อมูลกลับได้

ตัวอย่างเช่น Base64 (ไบนารีเป็น ASCII) การเข้ารหัส URL (%20 แทนช่องว่าง) เอนทิตี HTML (& แทน &) และการเข้ารหัสเป็นเลขฐานสิบหก เป้าหมายคือความเข้ากันได้ ไม่ใช่ความปลอดภัย

การเข้ารหัสลับ: การรักษาความลับด้วยคีย์

การเข้ารหัสลับจะแปลงข้อความธรรมดาเป็นข้อความเข้ารหัสลับโดยใช้คีย์ การดำเนินการนี้จะย้อนกลับได้เฉพาะผู้ที่มีคีย์ถูกต้องเท่านั้น หากไม่มีคีย์ จะไม่สามารถถอดข้อความเข้ารหัสลับได้ในทางคำนวณภายในเวลาที่เป็นไปได้

อัลกอริทึมการเข้ารหัสลับได้แก่ AES (แบบสมมาตร) RSA (แบบอสมมาตร) และ ChaCha20 คีย์คือสิ่งที่มอบความปลอดภัย ส่วนอัลกอริทึมนั้นเป็นความรู้สาธารณะ

การแฮช: ค่าไดเจสต์ทางเดียวที่มีความยาวคงที่

ฟังก์ชันแฮชการเข้ารหัสลับรับข้อมูลอินพุตที่มีความยาวเท่าใดก็ได้และสร้างเอาต์พุตที่มีความยาวคงที่ (ไดเจสต์หรือแฮช) ฟังก์ชันนี้ให้ผลลัพธ์แบบกำหนดแน่นอน (อินพุตเดียวกันจะให้เอาต์พุตเดียวกันเสมอ) แต่ถูกออกแบบให้ย้อนกลับไม่ได้

SHA-256 จะสร้างเอาต์พุตขนาด 256 บิตเสมอ ไม่ว่าอินพุตจะมีขนาด 1 ไบต์หรือ 1 กิกะไบต์ ฟังก์ชันแฮชใช้สำหรับตรวจสอบความถูกต้องครบถ้วน การจัดเก็บรหัสผ่าน และลายเซ็นดิจิทัล

Base64 ไม่ใช่การเข้ารหัสลับ (NOT)

ข้อผิดพลาดสำคัญและพบได้บ่อยคือ ข้อมูลที่เข้ารหัสด้วย Base64 นั้นไม่ใช่ข้อมูลที่เข้ารหัสลับ (NOT) การถอด Base64 ต้องอาศัยเพียงการทราบว่าข้อมูลนั้นเป็น Base64 ซึ่งมักสังเกตได้ชัดเจนจากการเติมข้อมูล "==" หรือจากชุดอักขระที่ใช้

หากคุณเข้ารหัสคำว่า "password" เป็น "cGFzc3dvcmQ=" (Base64 ของคำว่า "password") ผู้โจมตีสามารถถอดกลับได้ภายในไม่กี่วินาที Base64 ในบริบทด้านความปลอดภัยมีประโยชน์เพียงเพื่อให้ส่งข้อมูลเข้ากันได้เท่านั้น ไม่ควรใช้เพื่อซ่อนข้อมูล

ค่า MD5 ของรหัสผ่านคือแฮช ไม่ใช่การเข้ารหัสลับ

การแฮชรหัสผ่านด้วย MD5 จะจัดเก็บรหัสผ่านในรูปไดเจสต์ทางเดียว คุณไม่สามารถ "ถอดรหัสลับ" ค่าแฮช MD5 เพื่อกู้คืนรหัสผ่านได้ อย่างไรก็ตาม MD5 ไม่เหมาะสำหรับการแฮชรหัสผ่าน เพราะทำงานเร็วเกินไป

ผู้โจมตีสามารถคำนวณค่าแฮช MD5 ได้หลายพันล้านค่าต่อวินาทีโดยใช้หน่วยประมวลผลกราฟิก ทำให้การโจมตีแบบเดาสุ่มครบทุกค่าและการโจมตีด้วยตารางสายรุ้งทำได้จริง การจัดเก็บรหัสผ่านต้องใช้ฟังก์ชันที่ทำงานช้าและใช้หน่วยความจำสูง เช่น bcrypt, scrypt หรือ Argon2

AES-GCM คือการเข้ารหัสลับพร้อมการยืนยันความถูกต้อง

AES-GCM (โหมด Galois/Counter) ให้ทั้งการรักษาความลับ (การเข้ารหัสลับ) และความถูกต้องครบถ้วน (การยืนยันความถูกต้อง) โดยใช้ AES ในโหมดตัวนับสำหรับการเข้ารหัสลับ และใช้ GHASH สำหรับการยืนยันความถูกต้อง

แท็กยืนยันความถูกต้องที่ AES-GCM สร้างขึ้นจะตรวจจับการดัดแปลงข้อความเข้ารหัสลับได้ ทำให้ AES-GCM เป็นรูปแบบการเข้ารหัสลับพร้อมข้อมูลประกอบที่ยืนยันความถูกต้อง (AEAD) ซึ่งถือเป็นมาตรฐานสูงสุดของการเข้ารหัสลับสมัยใหม่

SHA-256 คือฟังก์ชันแฮช

SHA-256 (อัลกอริทึมแฮชที่ปลอดภัยขนาด 256 บิต) เป็นฟังก์ชันแฮชการเข้ารหัสลับที่ NIST กำหนดเป็นมาตรฐาน ฟังก์ชันนี้สร้างไดเจสต์ขนาด 256 บิต และถือว่าปลอดภัยจากการโจมตีที่เป็นที่รู้จักทั้งหมด รวมถึงการโจมตีเพื่อทำให้เกิดการชนกันและการโจมตีเพื่อหาอินพุตต้นทาง

SHA-256 ใช้ในใบรับรอง TLS การขุด Bitcoin (การพิสูจน์การทำงาน) การยืนยันความถูกต้องของข้อความด้วย HMAC และรูปแบบลายเซ็นดิจิทัล เช่น RSA-SHA256 และ ECDSA

ข้อผิดพลาดทั่วไปของนักพัฒนา

ข้อผิดพลาดด้านความปลอดภัยที่พบบ่อยจากการสับสนระหว่างการดำเนินการทั้งสามประเภท ได้แก่ การจัดเก็บรหัสผ่านด้วยการเข้ารหัสลับแทนการแฮช (ทำให้คีย์การเข้ารหัสลับกลายเป็นจุดอ่อนที่แท้จริง) การใช้การเข้ารหัสรูปแบบแทนการเข้ารหัสลับกับข้อมูลที่มีความละเอียดอ่อน การใช้แฮชที่ทำงานเร็ว (MD5, SHA-1) เพื่อจัดเก็บรหัสผ่าน และการคิดว่าข้อมูลจะต้องปลอดภัยเพียงเพราะเป็น Base64

ข้อผิดพลาดอีกอย่างคือการใช้ฟังก์ชันเดียวกันสำหรับหลายจุดประสงค์ เช่น ใช้ฟังก์ชันแฮชเป็น MAC โดยไม่มีโครงสร้าง HMAC ซึ่งมีช่องโหว่ต่อการโจมตีแบบขยายความยาว

ควรใช้แต่ละรูปแบบเมื่อใด

ใช้การเข้ารหัสรูปแบบเมื่อต้องส่งข้อมูลไบนารีผ่านโพรโทคอลข้อความ จัดเก็บไบต์ในช่องข้อความ หรือฝังข้อมูลใน URL ใช้การแฮชสำหรับจัดเก็บรหัสผ่าน (ด้วย bcrypt/Argon2) ตรวจสอบความถูกต้องครบถ้วนของข้อมูล (ผลรวมตรวจสอบ) และสร้างตัวระบุที่มีความยาวคงที่จากข้อมูลที่มีความยาวแปรผัน

ใช้การเข้ารหัสลับเมื่อต้องจัดเก็บหรือส่งข้อมูลที่มีความละเอียดอ่อนและต้องกู้คืนได้ด้วยคีย์ที่ถูกต้อง ใช้การแฮชร่วมกับการเข้ารหัสลับ (AEAD) เพื่อให้ได้ทั้งความถูกต้องครบถ้วนและการรักษาความลับระหว่างการส่งข้อมูล

การใช้งานทั้งสามรูปแบบร่วมกันในทางปฏิบัติ

ระบบยืนยันตัวตนที่ออกแบบอย่างดีจะใช้ทั้งสามรูปแบบ ได้แก่ แฮชรหัสผ่านด้วย Argon2 (การแฮช) จัดเก็บแฮชไว้ในช่องฐานข้อมูลที่เข้ารหัสลับคอลัมน์ด้วย AES-256 (การเข้ารหัสลับ) และเข้ารหัสโทเค็น API ที่ส่งกลับหลังเข้าสู่ระบบด้วย Base64url (การเข้ารหัสรูปแบบ)

การดำเนินการแต่ละประเภทมีจุดประสงค์เฉพาะของตนเอง การรู้ว่าควรใช้การดำเนินการใดกับกรณีการใช้งานใดเป็นทักษะพื้นฐานในวิทยาการเข้ารหัสลับประยุกต์และการออกแบบระบบที่ปลอดภัย

แบบทดสอบการเข้ารหัสรูปแบบเทียบกับการเข้ารหัสลับ

ทดสอบความเข้าใจเกี่ยวกับการเข้ารหัสรูปแบบ การเข้ารหัสลับ และการแฮช

ประเด็นสำคัญ: การเข้ารหัสรูปแบบเทียบกับการเข้ารหัสลับเทียบกับการแฮช

การเข้ารหัสรูปแบบ (Base64, เลขฐานสิบหก) เป็นการแปลงรูปแบบโดยไม่ให้ความปลอดภัย การเข้ารหัสลับ (AES-GCM) ให้การรักษาความลับที่ย้อนกลับได้และต้องใช้คีย์ ส่วนการแฮช (SHA-256, Argon2) จะสร้างไดเจสต์ที่มีความยาวคงที่และย้อนกลับไม่ได้

อย่าใช้การเข้ารหัสรูปแบบเพื่อความปลอดภัย ใช้แฮชที่ทำงานช้า (Argon2/bcrypt) สำหรับรหัสผ่าน ใช้การเข้ารหัสลับพร้อมการยืนยันความถูกต้อง (AEAD) สำหรับข้อมูลที่มีความละเอียดอ่อนระหว่างการส่งหรือขณะจัดเก็บ การสับสนระหว่างหมวดหมู่เหล่านี้เป็นหนึ่งในสาเหตุที่พบบ่อยที่สุดของช่องโหว่ด้านความปลอดภัย

คำถามที่พบบ่อย

บทเรียน “การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช”

แยกความแตกต่างระหว่างแนวคิดทั้งสามอย่างชัดเจน และทำความเข้าใจว่าควรใช้แต่ละอย่างเมื่อใด คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การเข้ารหัส Base64: ทำงานอย่างไร
  2. ASCII, Unicode และการแทนข้อความ
  3. เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ
  4. การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช
← กลับไปที่ Cryptology Academy