인증 (Authentication)
자신이 누구인지 확인하는 절차
인가 (Authorization)
인증된 사용자가 특정 행동에 대한 접근 권한이 있는지 확인하는 절차
즉, Role Base로 특정 자원에 대해 CRUD의 권한이 있는지 확인한다.
MAC (Message Authentication code) 이란?
메시지의 위변조를 확인하기 위해 쓰이는 정보이며 비밀키를 사용하기 따문에 인증 역할도 수행한다. 인터넷을 통해 A → B로 메세지를 보낼 경우 메세지가 위조 혹은 변조될 위험에 노출된다. 이러한 문제를 해결하기 위해 메세지의 무결성과 인증이 담보되어야 한다. 무결성이란 '메시지가 변조되지 않았다'는 성질이며, 메시지 인증이란 '올바른 송신자로부터 온 메시지'라는 성질이다.
MAC 생성 방식에 따라 2가지로 나뉜다.
HMAC (Hash-based Message Authentication Code) : MAC을 만들때 Hash 함수를 사용
CMAC(Cipher-based Message Authentication Code) :MAC을 만들때 Block 함수를 사용
MAC의 인증 과정
- 송신 메시지를 준비한다.
- 송신 메시지를 MAC 함수에 통과시킨다.
- MAC 함수를 이용해 메시지를 이용해서 MAC 정보를 만들고 이것을 메시지에 붙인다.
- 메시지를 수신한다.
- 수신측 역시 MAC 함수를 이용해서 메시지에 대한 MAC를 생성한다.
- MAC 함수의 결과로 나온 MAC 정보와 수신 메시지의 MAC 정보가 일치하면, 이 메시지는 안전한 메시지로 인증된다.
HMAC (Hash based Message Authentication Code)이란?
MAC 기술의 일종으로 원본 메시지가 변하면 그 해시값도 변하는 해싱(Hashing)의 특징을 활용하여 메시지의 변조 여부를 확인(인증) 하여 무결성과 기밀성을 제공하는 기술이다. REST API가 요청을 받았을 때, 이 요청이 신뢰할 수 있는 호출인지 확인할 수 있다.
사용자의 ID와 암호 같이 민감한 정보를 직접 받을 필요 없이 사전에 공유한 secret key와 전송할 message를 입력받아서 Hash 기반의 MAC를 생성해서 전송하며 서버는 secret key와 message를 기반으로 MAC를 검증해서 secret key를 소유한 클라이언트가 보낸 메시지가 맞는지 인증할 수 있다.
HMAC 인증 과정
- 송신자와 수신자 사이에 암호화 채널을 사용하여 해싱에 사용할 키(key)를 공유한다.
→ 양쪽이 동일한 key를 사용하니, 대칭키(symmetric key) 방식이라 할 수 있다. - 송신자는 key를 사용하여 원본 메시지를 해싱 한다. 해싱 된 메시지가 바로 MAC입니다.
- 송신자는 원본 메시지와 그것의 해싱 메시지(MAC)을 수신자에 전달한다.
- 수신자는 key를 사용하여 원본 메시지를 해싱하고, 송신자에게 받은 MAC과 비교한다.
- 비교한 값이 동일하다면, 원본 메시지는 변조되지 않았고 신뢰할 수 있는 값으로 판단한다.
- 만약 해커가 메시지를 변조했다면, 수신자의 MAC과 송신자의 MAC 값이 다른 것을 확인할 수 있다.
해싱 & HMAC
공통점 : 둘 다 해싱 알고리즘이 적용된 해싱 함수를 사용한다.
차이점 : HMAC은 해시 암호키를 송신자와 수신자가 미리 나눠가지고 사용하는데, 둘만 공유하고 있는 키와 원본 메세지를 혼합하여 해시값을 만들고 대조하여 유효한지 검증한다.
참고 & 출처
https://m.blog.naver.com/techtrip/221723355441
https://haneepark.github.io/2018/04/22/hmac-authentication/
https://haneepark.github.io/2018/04/21/authentication-authorization/
https://kchanguk.tistory.com/137
https://s2playground.blogspot.com/2020/01/hmac-hash-based-message-authentication.html
'인증 & 보안' 카테고리의 다른 글
Checksum이란? (0) | 2023.12.11 |
---|