Spring/Security

[Security] JWT - 이해하기 2(HMAC)

석석's 2021. 12. 9. 10:27

HMAC을 이해 하기 위해서는 MAC에대해 먼저 알아야한다.

 

MAC 이란?

 - "Message Authentication Code" 의 줄인말로 , 메세지를 인증하기 위해 사용하는 정보이다.

 - 송신측에서 MAC정보를 메세지에 붙혀 보내면 수신측에서 메세지 정보를 가지고 MAC정보를 생성 후 송신측에서 온 MAC 정보와 비교하여 같으면 안전한 메세지로 인증된다.

 

 

MAC의 동작 시나리오

  1. 송신측에서 보낼 메세지를 작성합니다.
  2. MAC 알고리즘 함수를 통해 MAC 정보를 생성합니다.
  3. 생성한 MAC 정보를 메세지에 붙혀 송신합니다.
  4. 수신측에서 메세지를 전송받으면 받은 메세지를 가지고 MAC 정보를 생성해봅니다.
  5. 생성된 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은 대칭키로만 인증을 진행한다.