0Pricing
Cryptology Academy · Урок

Конструкция HMAC и доказательство безопасности

Разберите конструкцию ipad и opad и её свойства безопасности

«Конструкция HMAC и доказательство безопасности» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

HMAC — это стандартная конструкция MAC с ключом. Конструкция с двойным хешированием предотвращает атаки с расширением длины и имеет формальное доказательство безопасности, сводящее безопасность HMAC к безопасности базовой хеш-функции.

Конструкция HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Где: - K' = K, дополненный нулями до размера блока B (или H(K), если |K|>B) - ipad = 0x36, повторённое B раз - opad = 0x5C, повторённое B раз

Зачем нужны ipad и opad

ipad (0x36) и opad (0x5C) — это разные константы, гарантирующие, что K' ⊕ ipad ≠ K' ⊕ opad. Фактически они создают из K два разных псевдослучайных ключа, используемых для внутреннего и внешнего хеширования.

HMAC: пошаговое выполнение

Для K=secret, M=message, H=SHA256: 1. K' = K, дополненный до 64 байт 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC в Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Почему расширение длины не работает с HMAC

Пусть HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) Злоумышленник знает SHA256(inner_key || M) = inner_hash. Но он не может расширить это значение: внешний хеш получает на вход (outer_key || inner_hash), а не только inner_hash. Ему неизвестен outer_key.

Доказательство безопасности HMAC (Bellare)

Bellare (1996) доказал: если хеш-функция H является псевдослучайной функцией (PRF), то HMAC также является PRF. На практике это означает, что HMAC-SHA256 обеспечивает такую же безопасность, как SHA-256, в рамках предусмотренных свойств безопасности.

Длина ключа HMAC

Ключ HMAC должен иметь следующие характеристики: - Не менее L байт (длина результата хеширования) - Рекомендуется: ровно L байт случайных данных - Если key > block_size, ключ предварительно хешируется до block_size - Используйте os.urandom(32) для ключей HMAC-SHA256

Усечение HMAC

Результат HMAC можно усечь до половины исходной длины без существенного снижения безопасности. TOTP/HOTP усекают результат до 4 байт. MAC в TLS также усекаются. Никогда не усекайте результат менее чем до 80 бит (10 байт).

HMAC в разных контекстах

HMAC-SHA256 используется в следующих случаях: - TOTP: коды аутентификации (усечение до 6 цифр) - TLS 1.2: MAC сеанса (не требуется в TLS 1.3 с AEAD) - JWT: подпись HS256 (симметричная) - Подпись API-запросов: вебхуки GitHub, AWS SigV4

HKDF: получение ключей на основе HMAC

HKDF(IKM, salt, info, L) использует HMAC дважды: 1. Извлечение: PRK = HMAC-SHA256(salt, IKM) 2. Расширение: OKM = HMAC-SHA256(PRK, info || counter) Используется в расписании получения ключей TLS 1.3, Signal и WireGuard для получения ключей.

Быстрая проверка

Каково назначение opad (0x5C, повторённого указанное число раз) в HMAC?

Итоги

Конструкция HMAC и её доказательство поняты. Далее Вы примените HMAC для подписи API-запросов и узнаете, как предотвращать атаки повторного воспроизведения.

Часто задаваемые вопросы

Урок «Конструкция HMAC и доказательство безопасности» бесплатный?

Да — полный текст урока «Конструкция HMAC и доказательство безопасности» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Конструкция HMAC и доказательство безопасности»?

Разберите конструкцию ipad и opad и её свойства безопасности Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Конструкция HMAC и доказательство безопасности»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы MAC и атаки с расширением длины
  2. Конструкция HMAC и доказательство безопасности
  3. HMAC в API: подпись запросов
  4. CMAC и Poly1305: MAC на основе блочных шифров
← Назад к Cryptology Academy