Message Authentication Code의 약자로 "인증된 메세지코드"라는 의미
-> 이것이 FTPS, SFTP, HTTPS같은 보안 파일 전송 프로토콜에 데이터 무결성에 대한 위협방지 메커니즘을 장착한 이유
->오늘날 가장 일반적으로 사용되는 데이터 무결성에 해한 위험방지 메커니즘이 HMAC 메커니즘이다.
-메세지 인증을 위한 Keyed-Hasing의 약자
-인증할 데이터와 공유 비밀키에 대해 암호화 해시 함수(예. SHA1, SHA256)를 실행하여 얻은 메시지 인증코드
1.1 조건
1.2 순서
1. 서버슨 파일을 보내기전 SHA2 해시 기능을 사용해 해당 파일의 해시를 얻음
2. 파일 자체와 함계 해당 해시(ex. 메세지 다이제스트)를 Client App 에 전송
3. client가 다운로드와 해시를 수신하면 다운로드한 파일의 SHA2 해시를 얻어 다운로드한 해시와 비교를 진행
4. 두 항목의 해시가 일치하면 파일이 변조 되지 않음을 의미함
if) 공격자가 다운로드 할 파일을 가로채 파일의 내용을 변경 후 변경된 파일을 수신자에게 전송 할 경우
clinet가 합의된 해시 알고리즘을 통해 변조된 파일을 실행하면 결과 해시가 다운로드된 해시와 일치 하지 않음
-> 수신자가 전송 중에 파일이 변조되었음을 알 수 있다
해시 함수를 이용하면 변조는 알 수 있지만! 파일 자체를 보호할 수 없다
-> So, 전송 파일을 보호(신뢰성 획득)을 위해 FTPS, SFTP, HTTPS와 같은 보안 파일 전송 프로토콜은 해시 함수 대신 HMAC(해시함수+공유비밀키)를 사용
어떤 신뢰성 방법?
<참고 사이트>
https://www.jscape.com/blog/what-is-hmac-and-how-does-it-secure-file-transfers