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

แนวคิด MAC และการโจมตีแบบขยายความยาว

อธิบายเหตุผลที่การเติมคำนำหน้าลับไม่ปลอดภัยต่อการโจมตีแบบขยายความยาว

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

ยินดีต้อนรับ

รหัสตรวจสอบความถูกต้องของข้อความ (MAC) ให้ความถูกต้องครบถ้วนและความแท้จริงโดยใช้กุญแจลับร่วม ในบทเรียนนี้เราจะทำความเข้าใจ MAC คุณสมบัติของ MAC และช่องโหว่สำคัญในแฮชที่ใช้กุญแจแบบง่าย

MAC คืออะไร

MAC คือรหัสตรวจสอบความถูกต้องขนาดสั้นที่คำนวณจากข้อความและกุญแจลับ ผู้รับที่มีกุญแจเดียวกันจะคำนวณ MAC ใหม่และตรวจสอบ ป้องกันการปลอมแปลงโดยไม่มีการครอบครองกุญแจ

MAC เทียบกับแฮชและลายเซ็น

แฮช: ไม่มีกุญแจ เป็นสาธารณะ ให้ความถูกต้องครบถ้วนเท่านั้น MAC: ใช้กุญแจลับร่วม เป็นแบบสมมาตร ให้ความถูกต้องครบถ้วน + ความแท้จริง ลายเซ็นดิจิทัล: ใช้กุญแจส่วนตัว เป็นแบบอสมมาตร และเพิ่มการปฏิเสธความรับผิดไม่ได้ มีเพียงลายเซ็นเท่านั้นที่ให้การปฏิเสธความรับผิดไม่ได้

ความไม่สามารถปลอมแปลงได้

MAC ที่ปลอดภัยต้องไม่สามารถปลอมแปลงได้ในเชิงการดำรงอยู่ภายใต้การโจมตีด้วยข้อความที่เลือก (EUF-CMA): ผู้โจมตีที่สามารถสอบถาม MAC สำหรับข้อความใด ๆ จะไม่สามารถปลอม MAC ที่ถูกต้องสำหรับข้อความใหม่ซึ่งไม่เคยสอบถามมาก่อนได้

แฮชที่ใช้กุญแจแบบง่าย: MAC แบบเติมคีย์นำหน้า

ความพยายามแบบง่าย: MAC(K, M) = H(K || M) ดูเหมือนปลอดภัย แต่มีช่องโหว่ต่อการโจมตีแบบขยายความยาวสำหรับฟังก์ชันแฮชแบบ Merkle-Damgård (SHA-256, SHA-512, MD5)

การโจมตีแบบขยายความยาว

สถานะของ SHA-256 หลังจากแฮช M เป็นเพียง H(M) เมื่อทราบ H(K || M) ผู้โจมตีสามารถคำนวณ H(K || M || padding || extra) สำหรับค่า extra ใด ๆ โดยไม่ต้องรู้ K ผู้โจมตีจะขยายข้อความเพื่อผนวกข้อมูลใหม่

ผลกระทบเชิงปฏิบัติของการโจมตี

Flickr (2009): ส่วนติดต่อการเขียนโปรแกรมใช้ H(K || params) ผู้โจมตีผนวก &api_sig=forgery ลงในคำขอที่ผ่านการตรวจสอบแล้ว ผลลัพธ์คือคำเรียกส่วนติดต่อการเขียนโปรแกรมที่ไม่ได้รับอนุญาตดูเหมือนถูกต้อง เป็นการโจมตีแบบขยายความยาวโดยตรง

MAC แบบเติมคีย์ต่อท้ายก็ล้มเหลวเช่นกัน

MAC(K, M) = H(M || K): มีช่องโหว่ต่อการโจมตีแบบออฟไลน์ ผู้โจมตีคำนวณ H(message) ได้โดยไม่ต้องรู้ K จากนั้นใช้การโจมตีแบบวันเกิดเพื่อหา M' ที่มีแฮชเดียวกัน กุญแจถูกเติมต่อท้ายหลังการชนกัน

เหตุใด HMAC จึงแก้ปัญหานี้ได้

HMAC ครอบแฮชสองครั้งด้วยแผ่นเติมกุญแจที่แตกต่างกัน: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) แฮชชั้นในสร้าง H(ipad_key || M) ส่วนแฮชชั้นนอกครอบผลลัพธ์ด้วย opad_key การขยายความยาวจึงล้มเหลว เพราะผู้โจมตีไม่สามารถกำหนดสถานะเริ่มต้นของแฮชชั้นนอกได้

SHA-3 และการขยายความยาว

SHA-3 ใช้โครงสร้างแบบฟองน้ำ ซึ่งต้านทานการโจมตีแบบขยายความยาวได้โดยธรรมชาติ H_SHA3(K || M) จึงเป็นโครงสร้าง MAC แบบง่ายที่ใช้ได้ แต่ SHA-2 ไม่เป็นเช่นนั้น — ให้ใช้ HMAC กับ SHA-2 เสมอ

การโจมตีตามเวลาในการตรวจสอบ MAC

การเปรียบเทียบ MAC ที่หยุดเมื่อพบความแตกต่างครั้งแรก (==) ทำให้เวลาการทำงานรั่วไหล ไบต์แรกที่ถูกต้องใช้เวลานานกว่าไบต์แรกที่ไม่ถูกต้องเล็กน้อย หลังจากสอบถาม 256 ครั้งก็พบไบต์ที่ 1 สอบถามเพิ่มอีก 256 ครั้งก็พบไบต์ที่ 2 และกู้คืน MAC ทั้งหมดได้ด้วยการสอบถาม 16×256 ครั้ง

ตรวจสอบอย่างรวดเร็ว

เหตุใด MAC(K, M) = SHA256(K || M) จึงไม่ปลอดภัย

สรุปทบทวน

การโจมตีแบบขยายความยาวแสดงให้เห็นว่าเหตุใดแฮชที่ใช้กุญแจแบบง่ายจึงล้มเหลว ต่อไปเราจะศึกษาโครงสร้างและการพิสูจน์ความปลอดภัยของ HMAC

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

บทเรียน “แนวคิด MAC และการโจมตีแบบขยายความยาว” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “แนวคิด MAC และการโจมตีแบบขยายความยาว”

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

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

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

บทเรียน “แนวคิด MAC และการโจมตีแบบขยายความยาว” ใช้เวลานานแค่ไหน

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

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

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

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

  1. แนวคิด MAC และการโจมตีแบบขยายความยาว
  2. โครงสร้าง HMAC และการพิสูจน์ความปลอดภัย
  3. HMAC ใน API: การลงนามคำขอ
  4. CMAC และ Poly1305: MAC ด้วยรหัสเข้ารหัสแบบบล็อก
← กลับไปที่ Cryptology Academy