Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> ความปลอดภัยเครือข่าย

MAC (Message Authentication Code) ในความปลอดภัยเครือข่าย คืออะไร? ต่างจาก Mac Address และ HMAC อย่างไร?

MAC (Message Authentication Code) คืออะไร?

MAC (Message Authentication Code) เป็นรหัสยืนยันความสมบูรณ์และแหล่งที่มาของข้อความ (Data Integrity & Authenticity) ใช้คีย์ลับแบบ Symmetric Key ร่วมกันระหว่างผู้ส่งและผู้รับ เพื่อสร้างแท็ก (Tag) ขนาดคงที่ จากข้อความต้นฉบับ แล้วนำแท็กนี้ไปต่อท้ายข้อความ ผู้รับคำนวณ MAC ใหม่จากข้อความที่ได้รับและคีย์เดียวกัน หากตรงกัน แสดงว่าข้อความไม่ถูกแก้ไขและมาจากผู้ส่งจริง

คุณสมบัติหลักของ MAC

  • Integrity: ตรวจพบการเปลี่ยนแปลงข้อมูลแม้เพียง 1 บิต
  • Authenticity: ยืนยันว่าข้อความมาจากฝ่ายที่มีคีย์ลับ
  • Symmetric: ใช้คีย์เดียวกันทั้งสร้างและตรวจสอบ (ต่างจาก Digital Signature ที่ใช้ Asymmetric)
  • ไม่ให้ Non-repudiation: เพราะทั้งสองฝ่ายมีคีย์เดียวกัน ไม่สามารถพิสูจน์ได้ว่าใครสร้าง MAC

อัลกอริทึม MAC ยอดนิยม

อัลกอริทึมรายละเอียด
HMAC (Hash-based MAC)ใช้ Hash Function (SHA-256, SHA-3) ร่วมกับคีย์ลับ มาตรฐาน RFC 2104 ใช้ใน TLS, IPsec, JWT
CMAC (Cipher-based MAC)ใช้ Block Cipher (AES) สร้าง MAC มาตรฐาน NIST SP 800-38B
GMAC (Galois MAC)ส่วนหนึ่งของ AES-GCM ให้ Authenticated Encryption (AEAD) เร็วและปลอดภัย
Poly1305MAC เร็วสูง ใช้ร่วม ChaCha20 (ChaCha20-Poly1305) ใน TLS 1.3, WireGuard

ความแตกต่าง: MAC vs HMAC vs MAC Address

คำศัพท์ความหมายบริบท
MAC (Message Authentication Code)รหัสยืนยันความสมบูรณ์/แหล่งที่มาของข้อความCryptography, Network Security
HMACประเภทหนึ่งของ MAC ที่ใช้ Hash Function + Secret KeyImplementation ของ MAC
MAC Address (Media Access Control)ที่อยู่ฮาร์ดแวร์ 48-bit ของ Network Interface (NIC)Data Link Layer (Layer 2)

การใช้งาน MAC ในโปรโตคอลเครือข่าย

  • TLS/SSL: ใช้ HMAC (ใน TLS 1.2) หรือ AEAD (AES-GCM, ChaCha20-Poly1305 ใน TLS 1.3) เพื่อปกป้อง Integrity ของ Record Layer
  • IPsec: ใช้ HMAC-SHA-256 ใน ESP/AH เพื่อยืนยันแพ็กเก็ต
  • SSH: ใช้ HMAC สำหรับ Packet Integrity
  • JWT (JSON Web Tokens): ใช้ HMAC-SHA256 (HS256) ลงนาม Token
  • API Authentication: หลาย API ใช้ HMAC-SHA256 กับ Secret Key เพื่อลงนาม Request

MAC ใน TLS (Transport Layer Security)

ใน TLS 1.2 ใช้ HMAC ร่วมกับ Cipher Block Chaining (CBC) แบบ Encrypt-then-MAC ใน TLS 1.3 เปลี่ยนมาใช้ AEAD (Authenticated Encryption with Associated Data) เช่น AES-GCM หรือ ChaCha20-Poly1305 ซึ่งรวม Encryption และ MAC ไว้ด้วยกัน ให้ประสิทธิภาพและความปลอดภัยดีกว่า

ข้อจำกัดของ MAC

  • ต้องมีช่องทางส่งคีย์ลับอย่างปลอดภัย (Key Distribution Problem)
  • ไม่ให้ Non-repudiation (ใช้ Digital Signature แทน)
  • หากคีย์รั่วไหล โจมตีสามารถปลอม MAC ได้

สรุป

MAC เป็นองค์ประกอบพื้นฐานของความปลอดภัยเครือข่าย ให้บริการ Integrity และ Authenticity ด้วย Symmetric Key HMAC เป็นการนำไปใช้ที่นิยมที่สุดในโปรโตคอลสมัยใหม่ ในขณะที่ AEAD (AES-GCM, ChaCha20-Poly1305) กำลังแทนที่ HMAC ใน TLS 1.3 และโปรโตคอลสมัยใหม่เพื่อประสิทธิภาพและความปลอดภัยที่ดีขึ้น