API 통신에서 요청이 변조되지 않았는지 확인할 때 단순 해시 대신 HMAC을 사용하는 이유가 뭘까요? 비밀 키가 포함되기 때문입니다.
HMAC의 구조
HMAC은 Hash-based Message Authentication Code의 약자입니다. 메시지와 비밀 키를 조합해서 해시를 생성합니다. 일반 해시는 누구나 같은 값을 만들 수 있지만, HMAC은 비밀 키를 아는 사람만 올바른 값을 생성할 수 있죠.
실제 활용 예시
결제 API에서 요청 데이터와 비밀 키로 HMAC-SHA256을 생성해서 헤더에 포함시킵니다. 서버는 같은 키로 HMAC을 계산해서 일치하는지 확인합니다. 해시 생성기로 기본 해시를 이해하고 나면 HMAC 개념도 쉽게 이해됩니다.
보안상 이점
공격자가 메시지를 변조해도 비밀 키 없이는 올바른 HMAC을 만들 수 없습니다. 이게 메시지 인증의 핵심입니다.
개발 환경에서의 해시 활용
개발자라면 해시 생성기를 다양한 상황에서 활용할 수 있습니다. API 테스트 시 요청 서명을 검증하거나, 캐시 키를 생성하거나, 파일 업로드 전 중복 체크를 할 때 유용합니다. 특히 디버깅할 때 "내가 계산한 해시가 맞는지" 빠르게 확인하는 용도로 좋습니다. 코드에서 계산한 값과 온라인 도구의 결과가 다르면 인코딩이나 입력 처리에 문제가 있다는 뜻이니까요.
해시 결과 비교 방법
두 해시값을 비교할 때는 대소문자를 통일해야 합니다. 일부 도구는 대문자로, 일부는 소문자로 출력합니다. 프로그래밍에서는 대소문자 무시 비교를 하거나, 양쪽 다 소문자로 변환 후 비교하는 게 안전합니다. 또한 해시 비교는 항상 상수 시간 비교 함수를 사용해야 타이밍 공격을 방지할 수 있습니다.