HMAC 알고리즘 정리

김성수·2022년 11월 27일
0

필요한 사전 내용:

Mac이란?

Message Authentication Code의 약자로 "인증된 메세지코드"라는 의미

데이터 무결성의 중요성 & HMAC 사용 배경

  • 비즈니스 의사 결정과 프로세스는 정확하고 신뢰가능한 데이터에 의존적
  • 데이터 변조와 변경 사항이 눈에 띄지 않으면 의사 결정 밒 프로세스에 영향을 미칠 수 있음
  • 데이터를 인터넷과 같은 위험한 네트워크를 통해 전송할 경우 데이터의 무결성 유지하기 위한 조치를 취하거나 최소한 데이터가 해킹, 변조되었는지 알 수 있어야 한다.

-> 이것이 FTPS, SFTP, HTTPS같은 보안 파일 전송 프로토콜에 데이터 무결성에 대한 위협방지 메커니즘을 장착한 이유
->오늘날 가장 일반적으로 사용되는 데이터 무결성에 해한 위험방지 메커니즘이 HMAC 메커니즘이다.

본 내용

HMAC이란?

-메세지 인증을 위한 Keyed-Hasing의 약자
-인증할 데이터와 공유 비밀키에 대해 암호화 해시 함수(예. SHA1, SHA256)를 실행하여 얻은 메시지 인증코드

  • 전자 서명과 유사 : 무결성/진정성 강화, 암호키 사용, 해시 함수 사용
    전자 서명과 차이 : 전자 서명(비대칭키), HMAC(공개키)

HMAC 작동 방식

  • 해시 함수 + 공유 비밀키를 이용한 파일 전송이라고 정리 가능

1. 해시 함수를 이용한 파일 전송(데이터 무결성 설정)

1.1 조건

  • client App이 원격 서버에 파일을 다운로드하는 상황
  • client, server 둘 다 SHA2 해시함수 사용

1.2 순서
1. 서버슨 파일을 보내기전 SHA2 해시 기능을 사용해 해당 파일의 해시를 얻음
2. 파일 자체와 함계 해당 해시(ex. 메세지 다이제스트)를 Client App 에 전송
3. client가 다운로드와 해시를 수신하면 다운로드한 파일의 SHA2 해시를 얻어 다운로드한 해시와 비교를 진행
4. 두 항목의 해시가 일치하면 파일이 변조 되지 않음을 의미함

if) 공격자가 다운로드 할 파일을 가로채 파일의 내용을 변경 후 변경된 파일을 수신자에게 전송 할 경우

  • clinet가 합의된 해시 알고리즘을 통해 변조된 파일을 실행하면 결과 해시가 다운로드된 해시와 일치 하지 않음
    -> 수신자가 전송 중에 파일이 변조되었음을 알 수 있다

  • 해시 함수를 이용하면 변조는 알 수 있지만! 파일 자체를 보호할 수 없다
    -> So, 전송 파일을 보호(신뢰성 획득)을 위해 FTPS, SFTP, HTTPS와 같은 보안 파일 전송 프로토콜은 해시 함수 대신 HMAC(해시함수+공유비밀키)를 사용

2. 공유 비밀키 사용

  • 교환 당사자에게 메세지의 신뢰성을 확립하는 방법을 제공
  • 두 당사자가 수신한 메세지와 MAC이 실제로 거래해야 하는 당사자로부터 온 것 인지 여부를 확인하는 방법을 제공

어떤 신뢰성 방법?

  • 두 당사자의 참여가 필요한 예비 프로세스인 키 교환 시 비밀 키가 생성
  • 키 교환에 참가한 두 당사자만이 공유 비밀키가 무엇인지 알 수 있다

<참고 사이트>
https://www.jscape.com/blog/what-is-hmac-and-how-does-it-secure-file-transfers

profile
백엔드 개발자

0개의 댓글