HMAC(Hash-based Message Authentication Code)은 RFC 2104에 정의된 널리 사용되는 메시지 인증 기술입니다. HMAC은 키와 메시지를 해시 함수를 통해 처리하여 고정 길이의 서명을 생성합니다. 일반 해시와 달리 HMAC은 서명을 생성하거나 검증하려면 키를 알아야 하므로 메시지 무결성과 인증을 모두 보장합니다.
**HMAC은 현대 API 보안의 기초입니다**. Stripe, GitHub, Shopify, Slack 및 Twilio는 Webhook 이벤트에 HMAC-SHA256을 사용하여 요청이 실제로 플랫폼에서 왔는지 확인합니다. AWS는 Signature V4 요청 서명에 HMAC-SHA256을 사용합니다. JWT의 HS256 알고리즘은 본질적으로 HMAC-SHA256입니다. HMAC을 이해하는 것이 API 보안을 마스터하는 첫 번째 단계입니다.
**플랫폼마다 서명 형식이 다릅니다**: Stripe의 형식은 `t=timestamp,v1=hex_signature`이며 `timestamp.payload`에 서명합니다; GitHub는 `X-Hub-Signature-256`에 `sha256=hex_signature` 형식을 사용합니다; Shopify는 `X-Shopify-Hmac-Sha256`에 Base64 인코딩 값을 사용합니다. 이 도구는 이러한 일반 형식에 대한 자동 파싱 및 검증을 지원합니다.
**서명 검증이 실패하는 이유는 무엇입니까?** 가장 일반적인 이유는 메시지 형식 불일치입니다: 플랫폼이 원시 메시지 본문 대신 `timestamp.payload`에 서명할 수 있습니다; 또는 메시지에 여분의 줄바꿈이 포함됩니다; 또는 서명에 제거해야 하는 접두사(`sha256=` 등)가 포함됩니다. 플랫폼 문서를 주의 깊게 확인하고 원시 16진수 값을 사용하여 비교하십시오.
이 도구는 HMAC 계산을 위해 브라우저의 네이티브 **Web Crypto API**(SubtleCrypto)를 사용합니다 — HTTPS와 TLS를 구동하는 것과 동일한 암호화 라이브러리입니다. 모든 계산은 로컬에서 이루어지며, 키와 메시지는 어떤 서버로도 전송되지 않습니다. 브라우저 개발자 도구의 네트워크 패널을 열어 외부 요청이 이루어지지 않는지 확인할 수 있습니다.