🍋
Menu
Security

HMAC

HMAC (Hash-Based Message Authentication Code)

โครงสร้างเฉพาะสำหรับสร้าง message authentication code โดยใช้ฟังก์ชันแฮชการเข้ารหัสร่วมกับคีย์ลับ เพื่อตรวจสอบทั้งความสมบูรณ์ของข้อมูลและความถูกต้องของข้อความ

รายละเอียดทางเทคนิค

HMAC (RFC 2104) คำนวณ: HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)) โดย H คือฟังก์ชันแฮช (SHA-256), K' คือคีย์ที่ pad ให้เต็มขนาดบล็อก, ipad คือ 0x36 ซ้ำ และ opad คือ 0x5c ซ้ำ โครงสร้างแฮชคู่นี้ป้องกันการโจมตีแบบ length-extension ที่ส่งผลต่อ hash(key || message) แบบธรรมดา HMAC-SHA256 ใช้ใน JWT signature, API authentication (AWS Signature V4), webhook verification (Stripe, GitHub) และ key derivation (HKDF) Web Crypto API รองรับ HMAC ผ่าน subtle.sign() และ subtle.verify() การเปรียบเทียบแบบ timing-safe เป็นสิ่งสำคัญเมื่อตรวจสอบ HMAC เพื่อป้องกันการโจมตีแบบ timing side-channel

ตัวอย่าง

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

เครื่องมือที่เกี่ยวข้อง

คำศัพท์ที่เกี่ยวข้อง