1. JWT 서명 알고리즘이란?
JWT(JSON Web Token)은 크게 header, payload, signature로 구성되어있다. signature(서명)은 header와 payload를 각각 인코딩하여 마지막 부분에 비밀키를 넣는 구조로 생성되며, 토큰의 무결성을 보장하는 핵심 요소이다. 수신측은 이 서명을 통해 토큰이 변조되지 않았음을 확인한다. JWT 서명 알고리즘이란, 토큰의 위변조를 막기 위해 이 서명을 생성하는 데 사용되는 암호화 방식이다.
2. HMAC
서명 알고리즘의 대표적인 예 중 하나인 HMAC은 대칭키 암호화 방식의 서명 알고리즘이다. 서명자와 검증자가 동일한 비밀키를 서로 공유한다. HMAC 서명은 메세지와 비밀키를 결합해 해시 함수를 적용하여 생성된다. 토큰 유효성을 검사할 때 수신자는 동일한 비밀키를 가지고 서명을 생성하여 비교한 후 일치하는지 확인한다.
- 장점
비밀키 하나만 관리하면 되기 때문에 구현에 용이하다. 또한 RSA에 비해 연산 속도가 매우 빠르다.
- 단점
서명자와 검증자가 동일한 비밀키를 안전하게 공유해야하기 때문에 여러 서비스간에 여러 키를 안전하게 전달하고 관리하는 것이 복잡하다.
- HMAC 알고리즘의 종류
- HS256 : HMAC + SHA-256 (32byte)
- HS384 : HMAC + SHA-384 (48byte)
- HS512 : HMAC + SHA-512 (54byte)
3. RSA
비대칭키 암호화 방식이다. 서명자와 검증자가 공개키와 개인키를 사용한다. 토큰을 생성하는 사람은 개인키를 사용해 JWT에 서명하고, 토큰을 받는 사람은 서명자의 공개키를 사용해 서명을 검증한다.
- 장점
개인키는 토큰을 생성하는 사람만 보유하고 있기 때문에 키 탈취 위험성이 적다. 공개키는 외부에 공개되어도 안전하다. 여러 서비스가 동일한 공개키를 사용해 하나의 서비스에 토큰을 검증할 수 있으므로 확장성이 뛰어나다.
- 단점
HMAC에 비해 키 생성 및 관리 절차가 복잡하고 서명 및 검증 속도가 상대적으로 느리다.
- RSA 알고리즘의 종류
- RS256: RSA + SHA-256
- RSA 키 길이 : 2048bit
- 서명 길이 : 256byte
- RS384: RSA + SHA-384
- RSA 키 길이 : 3072bit
- 서명 길이 : 384byte
- RS512: RSA + SHA-512
- RSA 키 길이 : 4096bit
- 서명 길이 : 512byte
다음 포스트에서는 Spring Boot로 HS256를 활용해 JWT 서명 알고리즘을 구현하는 글을 다뤄보겠다.

감사합니다 ( •̀ ω •́ )y
'Development > Back-end' 카테고리의 다른 글
| [Spring Boot] Spring Security + JWT + Redis 로그아웃 구현하기 (0) | 2025.11.12 |
|---|---|
| [Spring Boot] JWT 서명 알고리즘 (2) - HS256 (0) | 2025.08.18 |
| [Spring Boot] @Scheduled 사용하기 (0) | 2025.08.10 |
| [Spring Boot] Redis를 사용한 로그아웃 구현하기 (0) | 2025.07.23 |
| [Spring Boot] Pagination(페이지네이션) (0) | 2025.07.15 |