Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
about-hmac — HMAC 구현 예제 및 설명 | Kitploit
도구/GitHubGitHub/password123456/about-hmac
CryptographyAuthenticationLearning & EducationAPI Security
GitHubpassword123456/about-hmac

about-hmac

HMAC 구현 예제 및 설명

저장소 보기
242년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

HMAC 소개

made-with-python Python Versions Hits

Python에서 Flask를 사용한 기본 HMAC(해시 기반 메시지 인증 코드) 구현 예제입니다.

HMAC이란?!

해시 기반 메시지 인증 코드(HMAC)는 서버와 클라이언트 각각에 해당 특정 서버와 클라이언트만 알 수 있는 개인 키를 제공합니다. 클라이언트는 요청 데이터를 개인 키로 해싱하여 요청의 일부로 전송함으로써 서버에 대한 각 요청마다 고유한 HMAC(해시)를 생성합니다. HMAC이 MAC(메시지 인증 코드)보다 더 안전한 이유는 키와 메시지가 별도의 단계로 해시되기 때문입니다.

img

예제

(1) 클라이언트의 서버 요청

  • 클라이언트가 서버에 요청을 보낼 때 다음 헤더를 포함합니다:

  • X-Authorization-Content-HMAC: HMAC 해시 (전체 요청 URI, 현재 유닉스 타임스탬프(UTC), HMAC 비밀 키)

  • X-Authorization-Timestamp: 클라이언트 현재 유닉스 타임스탬프(UTC)

root@kitploit:~
(request)
GET /example/users?user=test&institutionID=999&signature=7e745d74b69b7f62e8e2 HTTP/1.1
Host: example.com
X-Authorization-Content-HMAC: 1c73495878ccea24af9dd281a4c883c40a3551ba799d30f4ad7d9afb6a60fbd4
X-Authorization-Timestamp: 1711662980

[ 클라이언트 요청 프로세스 ]

  • 클라이언트는 요청을 준비하여 서버로 전송합니다.
  • 서버는 HMAC 무결성과 타임스탬프 유효성을 검증하여 요청을 확인합니다.
  • 검증이 성공하면 서버는 요청을 처리하고, 그렇지 않으면 오류 응답을 반환합니다.

(2) 서버의 클라이언트 응답

  • 서버가 유효한 요청에 응답할 때 다음 헤더를 포함합니다:

  • X-Response-Content-HMAC: HMAC 해시 (전체 응답 본문, 현재 유닉스 타임스탬프(UTC), HMAC 비밀 키)

  • X-Response-Content-TimeStamp: 현재 유닉스 타임스탬프(UTC)

root@kitploit:~
(response)
HTTP/2 200 OK
Date: Fri, 29 Mar 2024 06:50:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 52
X-Response-Content-HMAC: 529c33aac3e33bf2a95d534f8b3ac61dee2ed79232d729e571dc669417a1a2ae
X-Response-Content-TimeStamp: 1711663027
Connection: close

{"result": "ok", "users": "test", "sub": 2840345654}

[ 응답 프로세스 ]

  • 서버는 응답 데이터를 준비하여 클라이언트로 전송합니다.
  • (추가) 필요한 경우 클라이언트는 응답 데이터의 HMAC 무결성을 확인할 수 있습니다.
  • 검증이 실패하면 클라이언트는 응답 데이터를 거부합니다.
root@kitploit:~
Server response HMAC verification successful
--------------
Response timestamp: 2024-03-29T09:25:31
Current time: 2024-03-29T09:25:31
Time difference: 0

추가 참고 사항

  • GET 또는 POST 사용에 대한 엄격한 규칙은 없지만, 보안상의 이유로 POST가 일반적으로 선호됩니다. GET 요청을 사용하면 모든 쿼리 문자열이 웹 액세스 로그에 기록될 수 있습니다.
  • 일관성을 유지하고 시간대 관련 문제를 피하기 위해 타임스탬프 정보에는 항상 UTC 유닉스 타임스탬프를 사용하세요.
  • HMAC 계산 범위는 달라질 수 있습니다. 일반적으로 전체 응답 본문을 해싱하는 것이 일반적이지만, 특히 응답 본문이 방대한 경우 데이터를 선택적으로 해싱할 수도 있습니다.
  • HMAC 알고리즘(예: Hmac-SHA256, Hmac-SHA512)과 비밀 키 길이 선택은 보안 요구 사항 및 모범 사례에 따라 이루어져야 합니다.

재전송 요청 방지

  • 서버는 처리된 요청을 메모리(예: Redis)에 저장하고 특정 시간 내에 반복된 요청을 폐기하여 재전송 공격을 방지할 수 있습니다.
  • 또한 서버는 클라이언트가 요청 헤더에 보낸 타임스탬프 헤더(X-Authorization-Timestamp)를 현재 서버 시간과 비교하여 재전송 공격 방지를 강화할 수 있습니다. 타임스탬프가 특정 시간 범위를 벗어나면 서버는 요청을 폐기할 수 있습니다.

그리고...

도움이 되셨다면 "별표"🌟를 눌러 추가 개선을 지원해 주세요.

도구 다운로드