MODOO HUB ← 모두의 툴
Dev · Instrument

HMAC 생성기

시크릿 키 + 메시지 → HMAC 서명 (HEX/Base64)

📖 JWT 인증 완전 가이드 보기

HMAC 생성기란?

HMAC(Hash-based Message Authentication Code)은 시크릿 키와 메시지를 단순히 이어붙여 해시하는 대신, 키를 내부 패딩(ipad)·외부 패딩(opad)으로 각각 다르게 XOR한 뒤 H(key⊕opad ∥ H(key⊕ipad ∥ message))처럼 두 번 중첩해서 해시하는 방식으로 만든 인증 코드입니다. 이 이중 해시 구조 덕분에 SHA-256 같은 해시 함수의 내부 블록 체이닝 구조를 악용하는 길이 확장 공격(length-extension attack)에 안전합니다. Webhook 서명, API 인증, 데이터 무결성 검증에 사용됩니다. HMAC-SHA256, SHA-384, SHA-512, SHA-1을 지원하며 HEX와 Base64 형식으로 출력합니다.

자주 묻는 질문

HMAC과 단순 해시의 차이는?

단순히 SHA256(키+메시지)처럼 키를 메시지 앞에 붙여 해시하면 "길이 확장 공격(length-extension attack)"에 취약합니다 — SHA-256 같은 해시는 내부적으로 블록 단위로 상태를 이어가는 구조라, 원본 해시값만 알아도 공격자가 원본 뒤에 임의의 데이터를 추가한 새 메시지의 유효한 해시를 키를 몰라도 계산해낼 수 있습니다. HMAC은 이 문제를 막기 위해 키를 두 번(내부 패딩 ipad, 외부 패딩 opad로 각각 XOR) 서로 다르게 섞어 H(key⊕opad ∥ H(key⊕ipad ∥ message)) 형태로 이중 해시하며, 이 구조 덕분에 키 없이는 length-extension 공격이 통하지 않습니다.

Webhook에서 HMAC을 어떻게 사용하나요?

발신자가 HMAC으로 서명하고 수신자가 동일한 키로 검증합니다. GitHub, Stripe 등이 이 방식을 사용합니다.

HMAC-SHA256 vs HMAC-SHA512?

SHA-512가 더 강력하지만 느립니다. 대부분의 보안 요구사항에서 HMAC-SHA256으로 충분합니다.

HEX와 Base64 중 어떤 것을 사용해야 하나요?

GitHub는 HEX, JWT는 Base64를 사용합니다. API 사양에 따라 선택하세요.

시크릿 키가 서버로 전송되나요?

아니요. Web Crypto API로 브라우저에서만 처리됩니다.

HMAC은 암호화인가요?

아니요. HMAC은 인증 코드(서명)이며 암호화가 아닙니다. 메시지 자체는 보호되지 않습니다.

JWT와 HMAC의 관계는?

JWT의 HS256, HS384, HS512 알고리즘이 각각 HMAC-SHA256, SHA-384, SHA-512를 사용합니다.

HMAC-SHA1은 사용해도 되나요?

레거시 시스템과의 호환성을 위해 사용할 수 있지만, 새 시스템에는 HMAC-SHA256 이상을 권장합니다.