Cryptology Academy · บทเรียน

CMAC และ Poly1305: MAC ด้วยรหัสเข้ารหัสแบบบล็อก

เปรียบเทียบ CMAC และ Poly1305 ในฐานะทางเลือกแทน MAC ที่ใช้แฮช

บทเรียน 4 จาก 413 ขั้นตอน

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

MAC คืออะไร

รหัสยืนยันความถูกต้องของข้อความ (MAC) รับกุญแจและข้อความ แล้วสร้างแท็กขึ้นมา แท็กนี้ยืนยันว่าข้อความไม่ได้ถูกแก้ไข และสร้างขึ้นโดยผู้ที่ถือกุญแจ

HMAC เทียบกับ MAC แบบรหัสบล็อก

HMAC ใช้ฟังก์ชันแฮชเป็นองค์ประกอบพื้นฐาน ส่วน CMAC และ Poly1305 ใช้รหัสแบบบล็อกหรือคณิตศาสตร์พหุนามแทน MAC แบบรหัสบล็อกไม่ต้องพึ่งพาฟังก์ชันแฮช และทำงานร่วมกับฮาร์ดแวร์ AES ได้อย่างเป็นธรรมชาติ

โครงสร้าง CMAC

CMAC (MAC ที่อาศัยรหัส) กำหนดไว้ใน NIST SP 800-38B โดยเติมข้อมูลให้ข้อความมีขนาดตรงกับขอบเขตบล็อก อนุมานกุญแจย่อยสองชุด K1/K2 จากรหัส ทำ XOR กุญแจเหล่านั้นเข้ากับบล็อกสุดท้าย แล้วทำงานในโหมด CBC โดยไม่จัดเก็บข้อความเข้ารหัสระหว่างทาง

การอนุมานกุญแจย่อยของ CMAC

K1 = AES_K(0^128) เลื่อนบิตไปทางซ้าย 1 บิต แล้วทำ XOR กับค่าคงที่หาก MSB เป็น 1 ส่วน K2 จะถูกเลื่อนในลักษณะเดียวกันจาก K1 กุญแจย่อยเหล่านี้ผูกบล็อกสุดท้ายที่ไม่เต็มบล็อกให้ปลอดภัยจากการขยายความยาว

ภาพรวม Poly1305

Poly1305 คือกลไกยืนยันความถูกต้องแบบใช้ครั้งเดียวที่ออกแบบโดย Daniel Bernstein โดยคำนวณพหุนามเหนือจำนวนเฉพาะ 2^130-5 มองข้อความเป็นสัมประสิทธิ์ของพหุนาม และใช้คู่กุญแจแบบใช้ครั้งเดียว (r, s)

คณิตศาสตร์ของ Poly1305

Tag = (ผลรวมของ (m_i * r^i) mod 2^130-5) + s mod 2^128 กุญแจ r จะถูกจำกัดค่าไว้ที่ 22 บิตเฉพาะเพื่อป้องกันการโจมตีตามเวลา ส่วน s เป็นมาสก์สำหรับการบวกแบบใช้ครั้งเดียวขนาด 16 ไบต์

ChaCha20-Poly1305

Poly1305 มักใช้งานคู่กับ ChaCha20 แทบทุกครั้ง ChaCha20 สร้าง (r, s) แบบใช้ครั้งเดียวจากกระแสกุญแจของรหัสสตรีม ทำให้ชุดรูปแบบ AEAD ที่รวมกันนี้มีความปลอดภัยที่พิสูจน์ได้และทำงานได้รวดเร็วมากบน CPU ของ ARM/อุปกรณ์เคลื่อนที่

AES-GCM เทียบกับ AES-CMAC

AES-GCM ใช้ GHASH ในการยืนยันความถูกต้อง ซึ่งเป็น MAC แบบพหุนามเหนือ GF(2^128) ส่วน AES-CMAC เรียบง่ายกว่า และใช้ใน IEEE 802.11i (WPA2) รวมถึงชุดรหัสของ TLS 1.2 GCM ให้ทั้งการเข้ารหัสและการยืนยันความถูกต้องในรอบการทำงานเดียว

การเปรียบเทียบประสิทธิภาพ

Poly1305 บน ARM Cortex-A ใช้เวลาประมาณ 1 รอบสัญญาณนาฬิกาต่อไบต์โดยใช้อินทรินสิกของ NEON ส่วน AES-CMAC ต้องดำเนินการกับบล็อก AES หนึ่งครั้งต่อบล็อกขนาด 16 ไบต์ สำหรับข้อมูลปริมาณมาก Poly1305 ทำงานได้เร็วกว่า CMAC บนฮาร์ดแวร์ที่ไม่มี AES-NI

คุณสมบัติด้านความปลอดภัย

CMAC ไม่สามารถปลอมแปลงได้ในเชิงการมีอยู่ภายใต้การโจมตีด้วยข้อความที่เลือก หากสมมติว่า AES เป็นการเรียงสับเปลี่ยนสุ่มเทียม Poly1305 มีความปลอดภัยเชิงสารสนเทศเมื่อใช้กุญแจแบบใช้ครั้งเดียวที่สุ่มอย่างแท้จริง โดยความน่าจะเป็นของการปลอมแปลงสูงสุดคือ 8*ceil(L/16)/2^106

กรณีการใช้งาน

CMAC: WPA2, S/MIME และความถูกต้องของระบบไฟล์ Poly1305: TLS 1.3 ผ่าน ChaCha20-Poly1305, WireGuard VPN, Signal Protocol และ Noise Protocol Framework ทั้งสองแบบถูกใช้งานอย่างแพร่หลายในระบบสมัยใหม่ที่มีความปลอดภัยสูง

ตรวจสอบความเข้าใจอย่างรวดเร็ว

MAC ใดใช้ใน ChaCha20-Poly1305 AEAD

สรุปทบทวน

คุณได้เรียนรู้โครงสร้างของ CMAC ที่อาศัย CBC และคณิตศาสตร์พหุนามของ Poly1305 แล้ว ทั้งสองเป็น MAC ที่ทำงานด้วยเวลาคงที่และมีความปลอดภัย ซึ่งใช้ในโพรโทคอลจริง ขั้นต่อไป: TLS/HTTPS และวิธีที่องค์ประกอบพื้นฐานทั้งหมดทำงานร่วมกัน

เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

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

บทเรียน “CMAC และ Poly1305: MAC ด้วยรหัสเข้ารหัสแบบบล็อก” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “CMAC และ Poly1305: MAC ด้วยรหัสเข้ารหัสแบบบล็อก”

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

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

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

บทเรียน “CMAC และ Poly1305: MAC ด้วยรหัสเข้ารหัสแบบบล็อก” ใช้เวลานานแค่ไหน

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

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

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

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

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