[JWT] JWT 서명 알고리즘 (1) - HMAC, RSA

2025. 8. 18. 17:06·Development/Back-end

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
'Development/Back-end' 카테고리의 다른 글
  • [Spring Boot] Spring Security + JWT + Redis 로그아웃 구현하기
  • [Spring Boot] JWT 서명 알고리즘 (2) - HS256
  • [Spring Boot] @Scheduled 사용하기
  • [Spring Boot] Redis를 사용한 로그아웃 구현하기
knhye
knhye
  • 전체
    오늘
    어제
  • knhye
    3n1hye_
    knhye
  • 링크

    • GitHub
    • 분류 전체보기 (61)
      • Development (28)
        • Back-end (21)
        • DB (3)
        • CS (4)
      • Algorithm (6)
      • DevOps (10)
        • git (1)
        • Cloud Platform (5)
        • CICD (1)
        • Cloud Native (2)
      • Internet (2)
      • 매일메일 (6)
      • 회고 (5)
        • Capstone (2)
        • Hackathon (1)
        • 2025 (2)
      • 자격증 (1)
      • 블로그 리딩 (3)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
knhye
[JWT] JWT 서명 알고리즘 (1) - HMAC, RSA
상단으로

티스토리툴바