Почему шифрование необходимо для обеспечения безопасности после хеширования в алгоритме UMAC (универсальный код аутентификации сообщений)?

В Википедии для UMAC, https://en.wikipedia.org/wiki/UMAC, говорится:

Полученный дайджест или отпечаток затем шифруется, чтобы скрыть идентичность используемой хэш-функции.

Кроме того, в этом документе, http://web.cs.ucdavis.edu/~rogaway/papers/umac-full.pdf, говорится:

Сообщение аутентифицируется, хешируя его с помощью общей хеш-функции, а затем шифруя полученный хеш (используя ключ шифрования).

Мой вопрос, если набор хэш-функций H достаточно велико, а количество хеш-блоков |B| достаточно большой, зачем нам шифровать - секретный хеш не достаточно безопасный?

Например, возьмем сценарий наихудшего случая, когда каждый клиент отправляет одинаковое короткое содержимое, например "x". Если мы хэшируем до 32 байтов, и наш хеш зависит от секретного 32-байтового хеш-ключа и хэши имеют одинаковые свойства, как злоумышленник может надеяться узнать секретный хеш-ключ любого отдельного клиента, даже без шифрования?

И, если злоумышленник не узнает ключ, как злоумышленник может надеяться злонамеренно изменить содержимое сообщения?

Спасибо!

1 ответ

Я не особо разбираюсь в UMAC, но:

  • Наличие радужной таблицы для определенной хэш-функции разрушает любое шифрование, которое вы наложили на сообщение, поэтому вместо единой поверхности атаки у вас теперь есть два
  • По мере того, как вычислительные мощности увеличиваются со временем, у вас будет все больше шансов выяснить открытый текст сообщения, поэтому PFS ( https://en.wikipedia.org/wiki/Forward_secrecy) никогда не будет возможна, если вы оставите MAC в незашифрованном виде.
  • Вдобавок ко всему, если вы можете определить одно текстовое сообщение из значения MAC, вы экспоненциально приблизитесь к расшифровке остальной части сообщения, получив некоторую информацию о PRNG, контексте других данных, IV и т. Д.
Другие вопросы по тегам