В Википедии для UMAC, https://en.wikipedia.org/wiki/UMAC, говорится:Почему шифрование необходимо для обеспечения безопасности после хэширования в коде UMAC (Universal Message Authentication Code)?
Полученный гидролизат или отпечаток пальца шифруется, чтобы скрыть идентичность используемой хэш-функции.
Кроме того, в этой статье, http://web.cs.ucdavis.edu/~rogaway/papers/umac-full.pdf, говорится:
сообщение заверяется хэширования его с общей хэш-функции , а затем зашифровать полученный хэш (с использованием ключа шифрования).
Мой вопрос, если множество хэш-функций H
достаточно велико, а число хэш |B|
достаточно велик, почему нам нужно зашифровать - это не секрет хэш достаточно безопасно?
Например, возьмите наихудший сценарий, когда каждый клиент отправляет то же самое короткое содержимое, например «x». Если мы хешируем до 32 байт, а наш хэш зависит от секретного 32-байтового хеш-ключа, а хэши демонстрируют однородные свойства, как злоумышленник может надеяться узнать секретный хэш-ключ любого отдельного клиента, даже без шифрования?
И если злоумышленник не узнает ключ, как злоумышленник может нанести вред изменению содержимого сообщения?
Спасибо!
К сожалению, универсальные семейства хеш-функций - это то, что я никогда не получал. Но если бы у меня было время исследовать его сейчас, я бы посмотрел на старую [Wegman and Carter paper] (http://www.sciencedirect.com/science/article/pii/0022000081900337), что концепция UMAC основана на , – TheGreatContini