HMAC SHA-512 란

수하·2022년 5월 6일
1

Spring Security 공부

목록 보기
3/3

JWT 기반 authentication 기능을 개발하다, JWT의 secret key 암호화 알고리즘으로 HMAC SHA512를 사용하게 되어 정리한다.
두찬의 Tech 이야기를 참조하여 작성했다.

MAC (Message Authenticatio Code)

  • 메시지의 무결성 (integrity)과 메시지 인증(authentication) 목적으로 사용
  • 사용자 간 공유된 key를 가지고 메시지 해쉬값(MAC)을 생성하여, 메시지가 내가 원하는 사용자로부터 왔는지 판단

HMAC (Keyed-Hashed Message Authentication Code)

개념

  • 해시 함수를 이용해서 메시지 인증 코드를 구성하는 것을 HMAC 이라고 한다.
  • 원본 메시지가 변하면 그 해시값도 변하는 해싱(Hashing)의 특징을 활용하여 메시지의 변조 여부를 확인하여 무결성과 기밀성을 제공.
  • HMAC은 인증을 위한 secret Key와 임의의 길이를 가진 Message를 해시 함수(알고리즘)을 사용해서 생성한다. 해시 함수로는 MD5, SHA-256과 같은 일반적인 해시 함수를 그대로 사용할 수 있으며 각 알고리즘에 따라 다른 고정길이의 MAC(Hash value)가 생성된다.

인증 프로세스

  1. Sender와 receiver 모두 인증에 사용할 해시 알고리즘과 secret key를 알고 있다고 가정한다.
  2. Sender는 해시 알고리즘과 secret key를 보내고 싶은 메시지에 사용하여 signiture를 생성한다.
    • signiture = hash(메시지, secret key)
  3. Sender는 생성된 signiture과 메시지를 receiver에게 전송한다.
  4. Receiver는 해시 알고리즘과 secret key를 이용하여 받은 메시지로 signiture를 생성해보고, sender로부터 전달받은 signiture과 비교하여 검증한다.

해시 알고리즘 종류

HMAC-XXX에 붙는 XXX가 해시 알고리즘을 의미한다. MD5, SHA-256 등의 일반적인 해시 함수를 사용할 수 있다. (ex) HMAC-SHA256은 SHA-256 알고리즘을 의미한다.

SHA- 시리즈는 Secure Hash Algorithm을 의미한다. SHA-1, SHA-2, ... SHA-256, SHA-512 등이 있는데, 해시 다이제스트의 길이가 256인 것을 SHA-256이라고 한다.
- 다이제스트: 원문을 해싱해서 나온 메시지.

SHA-XXX HMAC 알고리즘들은 XXX에 따라 최소/권장되는 secret key의 사이즈가 다르다.
SHA-512는 최소 secret key length가 64 bytes이며, 128 bytes가 권장된다.
128 bytes를 초과하는 key는 해싱되어 128 bytes로 맞춰진다.

0개의 댓글