HMACとは
HMAC(Hash-based Message Authentication Code)は、ハッシュ関数と秘密鍵を組み合わせてメッセージの完全性と認証を提供する技術です。RFC 2104で標準化されており、TLS、API認証、JWT、IPsecなど広く使用されています。
HMAC-SHA256の計算式:
HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))
AIエンジニアとしての実体験
API認証やWebhookの検証にHMACを頻繁に使用します:
import hmac
import hashlib
# HMAC-SHA256の計算
secret = b'my_secret_key'
message = b'important data'
signature = hmac.new(secret, message, hashlib.sha256).hexdigest()
# 署名の検証(タイミング攻撃対策)
expected_signature = "..."
is_valid = hmac.compare_digest(signature, expected_signature)
HMAC vs 単純ハッシュ
- 認証:HMACは秘密鍵を知る者のみが生成可能
- 長さ拡張攻撃への耐性:HMACは設計上安全
用途
- API認証(AWS Signature V4など)
- JWTトークンの署名
- Webhookペイロードの検証
- TLSのMAC
