🍋
Menu
Security

HMAC

HMAC (Hash-Based Message Authentication Code)

Một cấu trúc cụ thể để tạo mã xác thực tin nhắn sử dụng hàm băm mật mã kết hợp với khóa bí mật, xác minh cả tính toàn vẹn dữ liệu và tính xác thực của tin nhắn.

Chi tiết kỹ thuật

HMAC (RFC 2104) tính: HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)), trong đó H là hàm băm (SHA-256), K' là khóa được đệm theo kích thước khối, ipad là 0x36 lặp lại, và opad là 0x5c lặp lại. Cấu trúc băm kép này ngăn chặn tấn công mở rộng độ dài ảnh hưởng đến hash(key || message) thông thường. HMAC-SHA256 được sử dụng trong chữ ký JWT, xác thực API (AWS Signature V4), xác minh webhook (Stripe, GitHub), và tạo khóa (HKDF). Web Crypto API hỗ trợ HMAC qua subtle.sign() và subtle.verify(). So sánh an toàn về thời gian rất quan trọng khi xác minh HMAC để ngăn chặn tấn công kênh phụ thời gian.

Ví dụ

```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('');
```

Công cụ liên quan

Thuật ngữ liên quan