Spring/Security
[Security] JWT - 이해하기 2(HMAC)
석석's
2021. 12. 9. 10:27
HMAC을 이해 하기 위해서는 MAC에대해 먼저 알아야한다.
MAC 이란?
- "Message Authentication Code" 의 줄인말로 , 메세지를 인증하기 위해 사용하는 정보이다.
- 송신측에서 MAC정보를 메세지에 붙혀 보내면 수신측에서 메세지 정보를 가지고 MAC정보를 생성 후 송신측에서 온 MAC 정보와 비교하여 같으면 안전한 메세지로 인증된다.
MAC의 동작 시나리오
- 송신측에서 보낼 메세지를 작성합니다.
- MAC 알고리즘 함수를 통해 MAC 정보를 생성합니다.
- 생성한 MAC 정보를 메세지에 붙혀 송신합니다.
- 수신측에서 메세지를 전송받으면 받은 메세지를 가지고 MAC 정보를 생성해봅니다.
- 생성된 MAC 정보와 송신측에서 메세지와 같이 붙어 넘어온 MAC 정보를 비교하여 일치하면 안전한 메세지라고 판단 합니다.
HMAC 이란?
- MAC에서 해시의 개념이 추가된것으로 수신측과 송신측에서 secret키를 공유하여 이 secret키와 message를 혼합해 Hash를 만들어 메세지와 같이 전송하는 것이다.
- 수신측에서 송신측에서 넘어온 메세지와 해시값을 가지고 자신도 똑같히 secret+메세지로 해시값을 만들어봐 같은값인지 비교해봐 secret 키를 같이 공유하고 있는쪽에서 넘어온 메세지가 맞는지 판단하는 것이다.
HMAC의 동작 시나리오
송신측
1. 보낼메세지와 공유하는 Secret-key 값으로 Hash를 생성한다.
2. 메세지와 Hash값을 같이 보낸다.
수신측
1. 받은 메세지와 Secret-key 값으로 Hash를 생성한다.
2. 송신측에서 메세지와 같이 넘어온 Hash값 과 방금만든 Hash값을 비교하여 같은 값이면 인증처리를 한다.
RSA 와 HMAC
- RSA의 경우 비대칭키(public-key / private-key) 를 이용하여 인증처리를 진행한다면 HMAC은 대칭키로만 인증을 진행한다.