учитывая хеш H() , например sha256
и секретный текст S
и общественная соль P
покажет ли знание H(S) HMAC(P, S) ?
поясню: вопрос в том, можно ли узнать дайджест, а не секрет.
В моем конкретном случае HMAC (S) на самом деле является HKDF (S), но я предполагаю, что для этого вопроса часть, связанная с безопасностью, — это просто фаза извлечения.
протокол следующий:
Алиса->Боб: получить сообщение2 после сообщения1 с содержимым H(сообщение1)
Боб->Алиса: сообщение2 от Чарли говорит: чача(HKDF(сообщение1), обычный)
Кажется довольно очевидным, что грубая форсировка S по-прежнему невозможна:
Для каждого раунда атакующий имел бы возможность протестировать против H(S) или HMAC(S), но это не помогает, потому что усилие идентично. Тестирование на обоих из них просто делает его вдвое медленнее.
Однако нас волнует секретность самого хэша, поскольку это производный ключ. Даже если предположить, что можно «возобновить» хеш-функцию только из ее дайджеста [1]
а затем продолжить его как HMAC, он будет работать только с H (S + соль), а не с H (соль + S), который HKDF [2]
Теперь последнее, что я просто не понимаю, это энтропия. Уменьшает ли раскрытие хэша S его энтропию, чтобы hmac стал слабее? Насколько я понимаю, дайджест чего-то на самом деле рассеивает энтропию так, что её нельзя отличить от случайности. Таким образом, вы не можете просто «переделать» ту же дисперсию, если ее уже нет.
- https://stackoverflow.com/questions/20895009/what-state-needs-to-be-stored-to-allow-resumable-hash-computations
- Почему HKDF использует HMAC (соль, ключ) вместо HMAC (ключ, соль)?