Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/password123456/about-hmac
КриптографияАутентификацияОбучение и ОбразованиеБезопасность API
GitHubpassword123456/about-hmac

about-hmac

HMAC: пример реализации и объяснение

Репозиторий
242 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

О HMAC

made-with-python Python Versions Hits

Пример реализации базового HMAC (Hash-based Message Authentication Code) с использованием Flask на Python.

Что такое HMAC?!

Hash-based message authentication code (HMAC) предоставляет серверу и клиенту закрытый ключ, известный только данному конкретному серверу и данному конкретному клиенту. Клиент создает уникальный HMAC (хэш) для каждого запроса к серверу, хэшируя данные запроса вместе с закрытым ключом и отправляя результат как часть запроса. HMAC более безопасен, чем Message Authentication Code (MAC), потому что ключ и сообщение хэшируются отдельными шагами.

img

Пример

(1) Запрос клиента к серверу

  • Когда клиент отправляет запрос к серверу, он включает следующие заголовки:

  • X-Authorization-Content-HMAC: HMAC-хэш (весь URI запроса, текущая Unix-метка времени (UTC) и секретный ключ HMAC)

  • X-Authorization-Timestamp: текущая Unix-метка времени клиента (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-хэш (все тело ответа, текущая Unix-метка времени (UTC) и секретный ключ HMAC)

  • X-Response-Content-TimeStamp: текущая Unix-метка времени (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 Unix-метку времени для единообразия и во избежание проблем, связанных с часовыми поясами.
  • Область вычисления HMAC может варьироваться. Обычно она включает хэширование всего тела ответа, но возможно выборочное хэширование данных, особенно при большом объеме тела ответа.
  • Выбор алгоритма HMAC (например, Hmac-SHA256, Hmac-SHA512) и длины секретного ключа должен основываться на требованиях безопасности и лучших практиках.

Предотвращение повторных запросов

  • Сервер может хранить обработанные запросы в памяти (например, в Redis) и отбрасывать повторные запросы в определенном временном интервале для предотвращения атак повторения.
  • Кроме того, сервер может усилить защиту от атак повторения, сравнивая метку времени из заголовка запроса (X-Authorization-Timestamp) с текущим временем сервера. Если метка времени выходит за определенные рамки, сервер может отклонить запрос.

И...

Если вы нашли это полезным, поставьте "звезду"🌟, чтобы поддержать дальнейшие улучшения.

Скачать инструмент