Первый взгляд на $\operatorname{SHA3}(S)$
$\имя_оператора{SHA3}$ — это криптографическая хэш-функция, созданная для прообраза, вторичного прообраза и защиты от коллизий. Если вы используете $\имя_оператора{SHA3}-512$ тогда вы получите 512-битное сопротивление первого и второго предварительного изображения и 256-битное сопротивление коллизиям.
В вашем случае сопротивление прообраза важно, а успех нахождения прообраза — ничтожное событие. В среднем злоумышленнику нужно попытаться $2^{512}$ различные входные данные, чтобы найти прообраз.
Единственным проблемным случаем здесь является размер секрета. Если секрет меньше 512-бит, то защита перед изображением не 512-битная, а $= \min\{512,bitLen(секрет)\}$ поскольку злоумышленнику нужно искать только это пространство. Поэтому держите тайну хотя бы больше 256¡ бит для достижения по крайней мере 256-битной безопасности.
$h = \имя_оператора{SHA3}(K + \имя_оператора{SHA3}(S))$
Атташе получает $К$ и $ч$. Как и выше, на этот раз с полной защитой от предварительного образа (512 бит) злоумышленник не сможет получить $SHA3(S)$ но только доступ $S$. Тем не менее, они все еще могут искать $S$ так что все же у нас есть $ \мин\{512,битДлен(секрет)\}$ безопасность. Хороший размер секрета для $S$ требуется, опять же.
Даже один $\имя_оператора{SHA3}$ звонка достаточно, дубль $\имя_оператора{SHA3}$ вызов является излишним с хорошим размером ключа (секрета).
Ваша конструкция похожа на HMAC, где используется двойной хэш, поскольку хеш-функции MD уязвимы для атак с расширением длины. SHA3, с другой стороны, устойчив к этому, как и BLAKE2.
Уже существует структура MAC из SHA3, называемая KMAC, которая, говоря простым языком, благодаря устойчивости к атакам с увеличением длины.
$$\имя_оператора{KMAC}(ключ,m) = \имя_оператора{SHA3}(ключ\mathbin\|m)$$
в ваших обозначениях
$$\operatorname{KMAC}(S,K) = \operatorname{SHA3}( S\mathbin\|K)$$
Это безопасный MAC-адрес, который никоим образом не раскрывает ключ злоумышленнику. Вы можете просто использовать KMAC для достижения желаемого с хорошим размером ключа!
¡Некоторые могут возразить, что 128-битной защиты достаточно. Однако будущие разработки, такие как криптографические квантовые компьютеры, представляют угрозу для 128-битных прообразов хеш-функций, и в качестве контрмеры против многоцелевых атак также следует использовать как минимум 256-битную защиту.