본문으로 건너뛰기
Ink·tab
전체 유틸

HS256·HS384·HS512 서명 / 검증

스테이징 인증 디버깅용 JWT 를 즉석에서 만들고, 받은 토큰을 비밀 키로 검증합니다.

모드
알고리즘
서명된 토큰

브라우저 안에서만 처리됩니다. 네트워크 전송 없음.

언제 쓰나

스테이징 환경에서 인증을 디버깅할 때, QA 가 401 에러를 보고했을 때, 또는 키 회전 후 새 토큰을 즉석에서 만들어 보고 싶을 때 씁니다. 받은 토큰이 알려진 비밀 키로 서명된 게 맞는지 확인하는 용도로도 쓸 수 있습니다.

두 모드

  • 서명 (Sign) — 헤더 추가 필드, 페이로드, 비밀 키, 알고리즘을 입력하면 바로 JWT 토큰이 만들어집니다. 헤더의 alg · typ 은 자동으로 채워집니다.
  • 검증 (Verify) — 토큰과 비밀 키를 넣으면 서명을 재계산해 일치 여부를 표시합니다. 헤더·페이로드도 함께 보여 줍니다.

지원 알고리즘

HS256 · HS384 · HS512 (HMAC) — 모두 Web Crypto API 의 SubtleCrypto 가 직접 처리합니다. 외부 라이브러리는 쓰지 않습니다. RS256 · ES256 같은 비대칭 알고리즘은 PEM 키 파싱과 import 비용이 크고 검색 수요가 낮아 의도적으로 빠져 있습니다.

alg: none 은 RFC 7519 §6.1 의 unsecured JWT — 서명이 없습니다. 서명 모드에서는 디버깅·학습용으로 만들 수 있지만, 검증 모드는 무조건 거부합니다. alg=none 토큰을 의도치 않게 통과시키는 사례 ("alg=none attack") 가 다수 있어 명시적으로 차단합니다.

비밀 키는 페이지 안에서만

서명·검증 둘 다 브라우저 안에서 실행되어 비밀 키와 페이로드 모두 서버로 전송되지 않습니다. 다만 production 키는 화면 캡처·브라우저 메모리 잔존 위험이 있으니 회사 정책에 따라 처리하세요. 디버깅·스테이징 키 위주로 사용 권장.

이럴 땐 안 맞습니다

  • 비대칭 (RS256·ES256·EdDSA) — 본 도구 미지원. jose · jsonwebtoken 같은 서버 라이브러리를 쓰세요.
  • production 키 다루기 — 보안상 권장하지 않습니다. 키 회전·보관은 HSM 또는 비밀 관리 시스템(KMS) 으로.
  • JWE 암호화 — 본 도구는 서명(JWS) 만. JWE (Encrypted) 는 미지원.

비밀 키는 페이지 안에만

HMAC 서명·검증은 모두 Web Crypto API. 비밀 키와 페이로드 모두 브라우저 안에서만 다뤄지고 외부 서버로 전송되지 않습니다. RFC 7519 준수, `alg: none` 토큰은 검증 단계에서 명시적으로 거부됩니다 (alg=none attack 방지).

자주 묻는 질문

비밀 키를 여기 붙여넣어도 안전한가요?
서명·검증 모두 페이지의 Web Crypto API 가 처리하고 외부 네트워크 요청은 발생하지 않습니다. 단 production 키는 회사 정책에 따라 처리하세요 — 화면 캡처·브라우저 메모리 잔존 가능성은 있습니다. 디버깅·스테이징 키 위주로 사용 권장.
왜 RS256·ES256 같은 비대칭 알고리즘은 빠져 있나요?
PEM 키 파싱과 import 가 번들·UI 비용이 큰 반면 검색 수요 대부분은 HS-family 입니다. 비대칭이 필요하면 서버 라이브러리 (jose · jsonwebtoken) 또는 jwt.io 를 사용하세요. 추후 수요가 확인되면 추가합니다.
alg=none 토큰은 왜 검증에서 항상 실패하나요?
RFC 7519 §6.1 의 unsecured JWT 인데, 다수의 라이브러리가 alg=none 토큰을 의도치 않게 통과시키는 "alg=none attack" 이력이 있습니다. 본 도구는 검증 단계에서 alg=none 을 명시적으로 거부해 consumer 가 우연히 bypass 하지 않도록 합니다.
JWT decoder 와의 차이는?
JWT decoder 는 토큰의 헤더·페이로드를 *해석만* 합니다 (서명 검증 없음). JWT sign 은 비밀 키를 받아 서명 또는 검증을 수행합니다. 토큰을 만들거나 "이 키로 서명된 게 맞는지" 확인할 때 이쪽을 씁니다.